- 博客(41)
- 资源 (3)
- 收藏
- 关注
原创 为ActiveX控件增加安全认证
首先在工程名Ctrl.cpp文件中增加这三个函数HRESULT CreateComponentCategory(CATID catid, WCHAR* catDescription) { ICatRegister* pcr = NULL ; HRESULT hr = S_OK ; hr = CoCreateInstance(CLSID_StdComponentCategories
2015-11-07 16:01:35 837 1
转载 Reactor模式和Preactor模式
Reactor和preactor都是IO多路复用模式,一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event Handler)。开发人员预先注册需要处理的事件及其事件处理器(或回调函数)。Reactor模式采用同步IO,而Proactor采用异步I
2015-10-29 09:05:14 7420 1
原创 ActiveX控件GUID说明
一般一个控件代码中一共有9处共5个ID工程名.odl文件里一共有4个ID,分别与工程中其他4个地方对应:a) 第一个guid与工程名.cpp中的对应b) 第二个guid与工程名Ctrl.cpp中的第二个对应c) 第三个guid与工程名Ctrl.cpp中的第三个对应d) 第四个guid与工程名Ctrl.cpp中的第一个对应。(这个是主ID)最后一个guid在工程名P
2015-10-10 16:00:56 1018
原创 UTF8与GBK间的转换
1. GBK转UTF8string GBKToUTF8(const std::string& strGBK){ string strOutUTF8 = ""; WCHAR * str1; int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0); str1 = new
2015-09-25 10:07:58 895
原创 gsoap一处bug引起的崩溃分析
近日,现场有人反映,平台某服务器出现一次崩溃,不过由于看门狗的存在,又自动重启了,听到此消息也比较诧异,因为这台服务器已经运行两三个月了,突然崩溃一次,而后面再怎么操作又没问题了,想必是个极难出现的bug,跟现场确认没有进行过什么特殊操作,且没有安装卸载任何程序后,就让现场把dmp文件发回来,进行仔细分析。Dmp文件很大,约1.54个G,这个我还是比较乐意看到的,因为dump文件越大,说明包含
2015-09-24 10:34:51 3357 3
原创 Windows Socket介绍
在windows平台上,创建网络应用程序通常会借助于Windows Sockets ,Sockets译为套接字,一个套接字是通信的一端,客户与服务器之间即可通过套接字彼此通信。Windows Sockets是Windows下网络编程的规范,简称Winsock,虽然不同的应用服务和所使用的应用协议均有所不同,但所有的网络程序都能简化为一个简单的Winsock网络编程模型。要想使用Winsock创
2015-08-24 22:43:16 3225
原创 Windows I/O系统
在现代操作系统中,I/O(Input/Output,输入输出)是计算机完成各种功能的一个重要方面。处理器负责执行各种计算任务,并且通过内存总线操纵整个内存空间,但作为一个现实可用的计算机系统,仅仅具备这样的计算和内存访问能力还不够,还要有各种外部设备的参与才可使计算机真正“有用”。尽管这些设备的功能和用途各式各样,但是处理器利用了标准的接口技术,通过设备的控制器与它们打交道。因此,从硬件层面上,处
2015-08-24 22:17:35 7327
原创 网络通讯中的字节序转换及大端、小端
一、在进行网络通信时是否需要进行字节序转换?相同字节序的平台在进行网络通信时可以不进行字节序转换,但是跨平台进行网络数据通信时必须进行字节序转换。原因如下:网络协议规定接收到得第一个字节是高字节,存放到低地址,所以发送时会首先去低地址取数据的高字节。小端模式的多字节数据在存放时,低地址存放的是低字节,而被发送方网络协议函数发送时会首先去低地址取数据(想要取高字节,真正取得是
2015-07-28 08:41:15 1515
原创 windows视窗子系统(1.进线程相关结构)
一个windows窗口应用程序最基本构成是一个UI线程+许多工作线程,UI线程的工作流程一般为,设置窗口样式及消息响应函数,注册窗口,并产生一个消息循环,不停的分发调用窗口消息响应函数,一直对这幕后的机制比较好奇,通过学习这些机制,也对我们以后调试界面应用及提高界面应用的性能有很大的益处。 每个线程创建时,都是普通的线程,在windows内核中,每个线程都是由ETHREAD结构体表示的,这个
2015-07-23 11:21:46 600
原创 逆向调试初探
在开发过程中,我们经常会调用第三方库,当程序出了问题时,有时候崩在了第三方库内,问题就比较难查了,这个时候要找出原因,就需要我们有一定的逆向功底,因为一般第三方库的源代码我们是看不到的,只能通过反汇编的方法来查找。近日,在某项目的开发过程中,遇到一个问题。我们一台服务器在运行过程中出现了几次崩溃,产生若干DMP文件。我们用windbg打开,设置符号路径,并加载符号。输入!analyze -
2015-07-23 10:34:29 1262
原创 堆异常调试
因为VS对于堆调试的支持不够,与堆相关的问题一般较为棘手,近日,我在使用VS调试平台SDK时,发现一个问题。程序正常运行没有问题,当程序退出时,会报告一个堆错误异常,如下图: 类似的错误比较常见了,相信很多人都见过,提示也显而易见,是操作程序的堆时发生了异常。因为VS识别程序堆比较困难,遇到这种问题就比较捉襟见肘了,此时,强大的windbg就派上了用场。Windbg有两种调试模式,
2015-07-08 10:02:38 1559
原创 windows调试子系统
使用windbg很长时间了,也实际解决了不少问题,不过对于幕后的调试子系统,并没有完整的去学习过一遍,从cpu检测到异常,到IDT中查找中断历程,到异常分发,二次机会等等,其过程仅仅是初步了解,后续准备将整个异常检测分发流程梳理一遍,这样用起windbg可以知其所以然,做到心中有数。
2015-06-25 08:48:20 1180
原创 平台服务器句柄泄露问题的排查与解决
我们监控平台有台报警服务器,其主要功能是接收前端,TDDC,网管服务器等发送的报警,并依据报警联动配置进行相应的联动操作,最近发现在该服务器运行过程中,通过任务管理器查看其句柄数量会不断增加,以至于影响其他服务器工作,初步怀疑是句柄泄露问题,现对其进行分析排查。句柄是Windows用来标识应用程序所建立或使用的对象的唯一整数,Windows的内核对象包括进线程,窗口,位图,GDI对象等等。应用
2015-06-25 08:33:25 4659 2
原创 一处消息死锁分析
windows是一个消息驱动的系统,也是个多任务调度系统,windows中的线程分为两类,GUI线程与Worker线程,每个GUI线程会关联消息队列,当消息处理顺序不当时,则有可能造成消息死锁。使用VS2008打开项目工程,按F5启动调试,该工具工作正常,点击退出按钮,此时会发现该工具失去了响应。按Ctrl+Alt+Break将程序中断,发现程序停在了如下位置。可以看出,当接收到退出消
2015-06-15 09:07:27 2544 2
转载 进程控制块PCB详解
PCB(process control block),进程控制块,是我们学习操作系统后遇到的第一个数据结构描述,它是对系统的进程进行管理的重要依据,和进程管理相关的操作无一不用到PCB中的内容。一般情况下,PCB中包含以下内容: (1)进程标识符(内部,外部)(2)处理机的信息(
2015-06-12 11:23:44 61930 5
原创 栈溢出崩溃排查(二)
(接上文)竟然全是0,试着输出再多一些,输入dps esp L100,终于能看到熟悉的调用栈了,当然这种形式与我们平时看windbg的不同,这里把调用栈的原始数据输出了,具体调用流程,还要我们自己去分析。实际上到这里,已经猜到十有八九是发生了栈溢出,其判断理由有二,第一EIP和EBP的值同时被覆盖掉了,第二EIP和EBP的值跟ESP指向的栈上的值相同,都是0,想想函数的调用过程,当函数调用
2015-06-12 10:22:03 5175
原创 栈溢出崩溃排查(一)
近日,我们视频平台提交基线测试时,出现录像下载失败崩溃的现象,通过仔细调试发现其是一个很典型的DLL HELL引发的栈溢出,由于在我们的项目中,引用了大量的DLL,而且有很多DLL是多方引用的,很容易出现版本不一致的问题,一般这种问题极难排查,需要耗费大量精力,现将此排查过程记录下,希望对后面类似问题的排查有所帮助。
2015-06-12 09:06:25 3762
原创 偶然翻到大学时写的一篇论文
从技术角度分析Windows成为市场主导者原因 (姓名:王泽玮 学号:0706550129 Email:wangzewei@hotmail.com 电话:15850527734)从1946年诞生第一台电子计算机以来,它的每一代进化都以减少成本、缩小体积、降低功耗、增大容量和提高性能为目标,伴随着计算机硬件的发展,同时也加速了操作系统(简称OS)的形成和发展。传统的操作系统定义如下:操作系统是控
2015-06-07 11:53:49 1267
转载 各种进程保护方法的比较
一.利用hook 保护进程1.inline hook采用inlink hook 保护自身的进程,对抗CreateRemoteThread的Dll注入。在ring3下Dll注入的标准做法是使用CreateRemoteThread控制目标进程调用Loadlibrary
2011-09-19 10:33:35 3928 2
转载 提升进程权限为debug权限,无法禁止进程
GetCurrentProcessID 得到当前进程的ID OpenProcessToken 得到进程的令牌句柄LookupPrivilegeValue 查询进程的权限 AdjustTokenPrivileges 判断令牌权限 要对一个任意进程(包括系统安全进程和服务进程
2011-09-19 09:55:18 993
转载 一种保护应用程序的方法 模拟Windows PE加载器,从内存资源中加载DLL
1、前言目前很多敏感和重要的DLL(Dynamic-link library) 都没有提供静态版本供编译器进行静态连接(.lib文件),即使提供了静态版本也因为兼容性问题导致无法使用,而只提供DLL版本,并且很多专业软件的授权部分的API,都是单独提供一个DLL来完成,而
2011-08-13 22:50:00 2954
转载 动态链接库的创建
动态链接库的创建使用导出函数关键字_declspec(dllexport)创建// MyDll.hextern "C" _declspec(dllexport) int Max(int a, int b);extern "C" _declspec(dllexpor
2011-08-13 22:38:31 467
转载 为什么会出现LNK2005"符号已定义"的链接错误?
许多Visual C++的使用者都碰到过LNK2005:symbol already defined和LNK1169:one or more multiply defined symbols found这样的链接错误,而且通常是在使用第三方库时遇到的。对于这个问题,有的朋友可能不
2011-08-13 22:37:05 517
翻译 链接器算法
在这个专栏中,我经常讨论一些新技术,至少是还未被广泛使用的技术。然而,随着越来越多的开发者加入到Win32® 程序员队伍中来,有些对于老手来说是老生常谈的问题,对于新手来说却是神秘莫测的。链接器方面的主题就属于这个范畴。Visual Basic® 5.0就使用了一个链接器。事实上
2011-08-13 22:35:35 889
转载 什么是lib文件,lib和dll的关系如何
(1)lib是编译时需要的,dll是运行时需要的。如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。 在开发和调试阶段,当然最好都有。 (2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用
2011-08-13 22:32:52 504
转载 PE文件结构与虚拟地址空间
本章提要· PE文件格式概述· PE文件结构· 如何获取PE文件中的OEP· 如何获取PE文件中的资源· 如何修改PE文件使其显示MessageBox的实例2.1 引言通常Win
2011-07-28 20:28:25 1492
转载 操作系统启动过程
以下的内容都是在网上搜集并整理的,希望有问题的朋友在提问之前能先在这里看一看,不要浪费了众多为网络奉献的众多网友的心血! 电脑及操作系统的启动过程是一个很复杂的过程,对于我们大多数只是希望把电脑玩的更好一点、处理一些常见问题清晰一点的朋友来说,自然是无需了解到详尽通透——本
2011-07-18 09:59:10 2681
转载 如何面对压力
这段时间自己遇到很多压力很多问题,开始工作压力慢慢的自己学会了解决工作压力的方法和方式,然后是感情问题,让我不知所措,当然心理压力我是没有的,因为我有一个好的习惯,时常写博,每日更新,更新博客的过程也是自己放松心理的一个过程,这样不定期的给自己调节,放松自己是避免压力的好方法,自己通过这些方法来解决压力,然后也分享给我的朋友们,万事多想开,问题出现了总有解决的方法和方式,只是你自己不知道而已,所以朋友,一个知心知底的朋友这个时候也能帮到你,养成好的心理素质,好的生活习惯,好的人际关系和人品,这也是减小压力的
2011-02-21 17:49:00 848
原创 现在及将来的发展路线
1. Windows 程序设计:第5版2. Windows核心编程(第5版)3. 汇编语言程序设计4. Windows环境下32位汇编语言程序设计(第2版)5. 深入解析Windows操作系统(第 5 版) 6. 从汇编语言到Windows内核编程7. 深入理解计算机系统(修订版)8. 逆向编译技术.chm9. 0day安全:软件漏洞分析技术10. IDA Pro权威指南11. python核心编程12. 《Gray.Hat.Python.Python.Programming.for.Hackers.and
2010-10-01 00:00:00 449
转载 关于补码
<br />只有有符号的整数才有原码、反码和补码的!其他的类型一概没有。虽然我们也可以用二进制中最小的数去对应最小的负数,最大的也相对应,但是那样不科学,下面来说说科学的方法。还是说一个字节的整数,不过这次是有符号的啦,1个字节它不管怎么样还是只能表示256个数,因为有符号所以我们就把它表示成范围:-128-127。它在计算机中是怎么储存的呢?可以这样理解,用最高位表示符号位,如果是0表示正数,如果是1表示负数,剩下的7位用来储存数的绝对值的话,能表示27个数的绝对值,再考虑正负两种情况,27*2还是256
2010-09-14 21:49:00 1552 1
转载 C++虚函数表与对象布局(转)讲的很透彻
<br />每个含有虚函数的类有一张虚函数表(vtbl),表中每一项指向一个虚函数的地址,实现上是一个函数指针的数组。<br />虚函数表既有继承性又有多态性。每个派生类的vtbl继承了它各个基类的vtbl,如果基类vtbl中包含某一项,则其派生类的vtbl中也将包含同样的一项,但是两项的值可能不同。如果派生类重载(override)了该项对应的虚函数,则派生类vtbl的该项指向重载后的虚函数,没有重载的话,则沿用基类的值。<br />在类对象的内存布局中,首先是该类的vtbl指针,然后才是对象数据。在通过
2010-09-13 18:44:00 846
原创 vc的菜单,工具栏
首先,MFC会自动生成一些菜单,我们也可以在resource view中添加菜单。点击菜单栏属性--〉左上角校园最图形,可以将属性页显示。不会随着菜单项变动丢失。 <br />ID号变灰的栏是不可以编辑的。是弹出的POPUP菜单。它不能被用来做响应。大写字母标示资源。IDI IDC IDM分别表示不同的类型资源。 <br />一个菜单项可以由CMAINFRAM CXXXVIEW CXXApp CXXDOC view类先对其响应,接着doc类对其进行响应,MAINFRAM第三个对其进行响应,第四个响应的
2010-09-11 21:06:00 1478
原创 vc学习笔记
<br />资源的添加:右键ResourceView->插入,可选择各类型资源。<br />VC组件(如右键菜单)或其它系统已经安装的ActiveX控件(如Canldar)的添加:Project->Add to Project->Components and Controls..<br />在dialog上右键,insert ActiveX<br /><br />1、添加工具条(或菜单等其它资源):<br />右键ResourceView->插入,选择插入的资源类型,命名其ID等属性。然后在该资源上右键->
2010-09-11 20:52:00 1501
转载 win32application与win32 console application区别何在
<br />刚刚在新建project的时候,选择了 Win32 Application,编译时出现下面的错误: <br /><br />很奇怪的说,一个很短的程序,不可能出错的。后来才知道了是因为Win32 Application和Win32 Console Application选项的问题。搜索到了下面的资料,转载在这里: <br /> <br />Win32 Application和Win32 Consol
2010-09-10 20:29:00 10032
转载 Invalidate函数的总结
<br />InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效 <br /><br />InvalidateRect函数中的参数TRUE表示系统会在你画之前用背景色将所选区域覆盖一次,默认背景色为白色,可以通过设置BRUSH来改变背景色。 <br /><br />Invalidate()之后:(MFC的,顺便了) <br />OnPaint()->OnPrepareDC()->OnDraw() <br />所以只是刷新在OnPaint()和OnDraw()函数中的绘图语句。其它
2010-09-08 10:00:00 580
转载 [转贴]构造可配置的词法分析器(已完结)
<br /> <br /><br />构造可配置词法分析陈梓瀚<br />华南理工大学计算机软件学院软件工程05级本科<br />vczh _at_ 163 _dot_ com<br />2007-11-8<br /> <br /> 本文详细描述了通过正则表达式构造通用词法分析器的整个算法流程。如果有需要的话请在评论留下自己的Email,或通过QQ向本人索取文章及附件。任何人(除了作者)不得修改本文。自由转载,注明出处。<br /> 文档使用doc格式。附件带有文章所有图片的jpg及vsd格式。
2010-07-14 11:15:00 1286
转载 MFC中CEdit多行情况下,调用GetLine()时,发现老是后面跟有乱码【转载】
<br />MFC中CEdit多行情况下,调用GetLine()时,发现老是后面跟有乱码。即使你把str初始化也是如此。 对于采用GetLine()调用,其函数说明有2种。1.int GetLine( int nIndex, LPTSTR lpszBuffer ) const;2.int GetLine( int nIndex, LPTSTR lpszBuffer, int nMaxLength ) const; 代码如下: char str[1
2010-07-13 18:28:00 4328 2
CNN卷积计算在移动GPU上的加速研究
2018-08-27
c++ 编程思想 (高清pdf)
2010-08-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人