WinExec, ShellExecute,CreateProcess
摘要:其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。 WinExec 有两个参数,前一个指定路径,后一个指定显示方式。 ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。 Create...
阅读全文
posted @
2008-09-04 15:52
香蕉部落blog
阅读(1162)
推荐(0)
可执行程序的内存分布总结[转]
摘要:原来一直对于可执行程序的内存分布很迷惑,最近查了好多资料以及请教了诸多高手,方有一些领悟,现将自己领悟的写下来,以供大家批评指正。 在操作系统中,一个进程就是处于执行期的程序(当然包括系统资源),实际上正在执行的程序代码的活标本。那么进程的逻辑地址空间是如何划分的呢? 图1做了简单的说明(Linux系统下的): 图1 左边的是UNIX/LINUX系统的执行文...
阅读全文
posted @
2008-08-26 10:28
香蕉部落blog
阅读(190)
推荐(0)
HeapAlloc函数
摘要:函数HeapAlloc声明如下: WINBASEAPI __bcount(dwBytes) LPVOID WINAPI HeapAlloc( __in HANDLE hHeap, __in DWORD dwFlags, __in SIZE_T dwBytes ); hHeap是进程堆内存开始位置。 dwFlags是分配堆内存的标志。 dwBytes是分配堆内存的大小...
阅读全文
posted @
2008-08-04 17:05
香蕉部落blog
阅读(666)
推荐(0)
GlobalAlloc等函数
摘要:调用GlobalAlloc函数分配一块内存,该函数会返回分配的内存句柄。 调用GlobalLock函数锁定内存块,该函数接受一个内存句柄作为参数,然后返回一个指向被锁定的内存块的指针。您可以用该指针来读写内存。 调用GlobalUnlock函数来解锁先前被锁定的内存,该函数使得指向内存块的指针无效。 调用GlobalFree函数来释放内存块。您必须传给该函数一个内存句柄。 GlobalAlloc ...
阅读全文
posted @
2008-08-03 23:14
香蕉部落blog
阅读(1289)
推荐(0)
HeapAlloc和GlobalAlloc以及VirtualAlloc三者之间的关系
摘要:VirtualAlloc一次分配1PAGE以上的RAM. 每次分配都是PAGE的整数倍. 你不会想为了分配1个BYTE的空间而浪费剩下的4095字节. OK. 你可以自己写算法,多分 配几PAGE. 然后每次分配少量数据时就从那几PAGE中划分出来. 什么? 你笨到不会写分 配算法? 好巴 KERNEL32给你一个解决办法. 用HeapAlloc/GlobalAlloc分配RAM. 这样, KE...
阅读全文
posted @
2008-08-03 23:09
香蕉部落blog
阅读(607)
推荐(0)
浅谈C/C++内存泄露及其检测工具
摘要:对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如 Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java中已经比较成...
阅读全文
posted @
2008-07-31 21:29
香蕉部落blog
阅读(768)
推荐(0)
内核钩子实例
摘要:#include #include #pragma pack(1) typedef struct ServiceDescriptorEntry { unsigned int *ServiceTableBase; unsigned int *ServiceCounterTableBase; //Used only in checked build unsigned in...
阅读全文
posted @
2008-07-29 15:26
香蕉部落blog
阅读(625)
推荐(0)
无进程DLL木马的又一开发思路与实现
摘要:一.Windows下进程的隐藏 二.Windows Socket 2 SPI技术概述 三.基于SPI的DLL木马技术 四.主要代码分析 五.小结与后记 六.附录之源代码 一)Windows下进程的隐藏 在M$的32位操作系统中,有许许多多的办法可以实现进程隐藏的功能。在Win98下将程序注册为系统服务就可以实现在进程列表里的隐藏,但是在NT/2000下,由于操作系统添加了许多特性使得进程...
阅读全文
posted @
2008-07-28 22:37
香蕉部落blog
阅读(243)
推荐(0)
AfxBeginThread函数初探
摘要:在进行多线程程序设计的时候,我们经常用到AfxBeginThread函数来启动一条线程 该函数使用起来非常的简单方便,其定义如下 CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc,//线程函数地址 LPVOID pParam,//线程参数 int nPriority = THREAD_PRIORITY_NORMAL,...
阅读全文
posted @
2008-07-26 11:19
香蕉部落blog
阅读(552)
推荐(0)
虚拟键码表(windows)
摘要:Virtual Key Code Corresponding key VK_LBUTTON Left mouse button VK_RBUTTON Right mouse button VK_CANCEL Control+Break VK_MBUTTON Middle mouse button VK_BACK Backspace key VK_TAB ...
阅读全文
posted @
2008-07-23 13:45
香蕉部落blog
阅读(307)
推荐(0)
使用CImage类处理图像显示与格式转换
摘要:Introduction CImage是MFC和ATL共享的新类,它能从外部磁盘中调入一个JPEG、GIF、BMP和PNG格式的图像文件加以显示,而且这些文件格式可以 相互转换。 Background 我们知道,Visual C++的CBitmap类和静态图片控件的功能是比较弱的,它只能显示出在资源总的图标、位图、光标以及图元文件的内容,而不像 VB中的Image控件可以显示出绝大...
阅读全文
posted @
2008-07-22 11:55
香蕉部落blog
阅读(431)
推荐(0)
CImage类
摘要:这下有了CImage类,处理其他类型的图片不再寻找第三方类库了。加载到对话框背景的代码如下: //从资源里载入背景JPEG图片 HRSRC hRsrc=::FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_JPG1), _T("JPG")); if(hRsrc!=NULL...
阅读全文
posted @
2008-07-22 11:48
香蕉部落blog
阅读(617)
推荐(0)