读书笔记
文章平均质量分 70
SWenJing
这个作者很懒,什么都没留下…
展开
-
动态链接库(一)
一 概述 DLL实际上是一组源代码模块,提供一些供其他DLL或应用程序调用的函数。在使用DLL之前,必须将DLL映像文件映射到调用进程的相对应的地址空间,有两种载入方法:隐式链接和显示链接。 隐式链接在进程创建的时候载入,一个新创建的进程只有在将可执行模块和所有的DLL模块隐射到进程的地址 空间后进程的主线程才开始执行,可以通过#pragram commen原创 2010-05-20 23:19:00 · 604 阅读 · 0 评论 -
动态链接库(二)
DLL高级技术 1.1 显示载入DLL模块:LoadLibrary,LoadLibraryEx.两个函数的返回值HMODULE表示文件映像被映射到的虚拟内存地址,等价于HINSTANCE(DllMain入口点函数所接收的参数),LoadLibraryEx函数有两个额外的参数:hFile(保留应为NULL),dwFlags: DONT_RESOLVE_DLL_REFE原创 2010-05-21 22:26:00 · 1838 阅读 · 0 评论 -
线程局部存储
窗口附加字节(window extra bytes)通过使用SetWindowWord和SetWindowLong函数来将数据与一个指定的窗口关联起来。可以使用TLS将数据与一个正在执行的指定线程关联起来(例如我们可以将创建线程的时间与线程关联起来);然后当线程结束的时候可以知道线程的运行的时间。 c/c++运行库使用了TLS. 动态TLS:四个使用函数Tls原创 2010-05-24 00:16:00 · 623 阅读 · 0 评论 -
动态链接库(三)
DLL注入和API拦截1.0 SetWindowLongPtr(hwnd, GWLP_WNDPROC,MySubclassProc);改变窗口的行为。如果打算从同一个进程中的窗口派生子类窗口,那么应该利用SetWindowSubclass,GetWindowSubclass,RemoveWindowSubclass,以及DefSubclassProc,参阅Subclassing Contr原创 2010-05-25 00:12:00 · 1108 阅读 · 0 评论 -
结构化异常
终止处理程序 1. (structured exception handling, SEH)结构化异常处理。 不同的编译器针对SEH的实现不尽相同,这里采用Microsoft Visual C++ 编译器规定的语法。 说明:不要混淆结构化异常处理与C++异常处理,c++异常处理在形式上表现为使用关键字catch和throw,这和结构化异常处理的形式不同。M原创 2010-05-27 22:35:00 · 857 阅读 · 0 评论 -
内存管理(一)
一. Windows内存管理体系结构1.0 进程的虚拟地址空间 对于32位进程虚拟地址空间大小为4GB,64为16EB(exabytes,百亿字节),每个进程都有自己的私有地址空间,要想正常访问数据需要把物理存储器分配或映射到相应的地址空间。 说明:在windows中正在运行的线程看不到属于操作系统本身的内存,这意味着它不能无意间访问到操作系统的数据。1.1 虚拟地址原创 2010-05-29 11:12:00 · 1159 阅读 · 0 评论 -
内存管理(二)
探索虚拟内存 1.0 系统信息 GetSystemInfo, GetNativeSystemInfo.想了解64位windows提供的32位模拟层,参阅:http://www.microsoft.com/whdc/system/platform/64bit/wow64_bestprac.mspx. 1.1 虚拟内存状态 GlobalMemoryStatus可以获原创 2010-05-29 15:35:00 · 1571 阅读 · 1 评论