如何进行10.2版本事件调试以获取DLL加载过程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计883个文字,预计阅读时间需要4分钟。
了解了,以下是修改后的内容:
理解了如何通过调试事件输出当前进程中的内存信息。那么,实现加载DLL模块也变得容易,主要使用+LOAD_DLL_DEBUG_EVENT这个通知事件。该事件可以检测到进程加载的模块信息。
理解了如何通过调试事件输出当前进程中寄存器信息,那么实现加载DLL模块也会变得很容易实现,加载DLL模块主要使用LOAD_DLL_DEBUG_EVENT这个通知事件,该事件可检测进程加载的模块信息,一旦有新模块被加载或装入那么则会触发一个通知事件,利用该方法并配合磁盘路径获取函数则可很容易的实现进程模块加载的监控。
获取加载的动态链接库DLL的详细信息,具体实现细节如下:
- 首先,代码通过
GetFileSize函数获取目标DLL文件的大小,如果大小为0,则立即退出函数。 - 然后,代码调用
CreateFileMapping和MapViewOfFile函数创建了一个内存映射对象,该映射对象可以让代码访问DLL文件的内容。 - 随后,代码调用
GetMappedFileName函数获取该内存映射对象关联的DLL文件的路径,其中需要使用QueryDosDevice查询函数来确认磁盘符号对应的真实文件名称, 如果找到对应的真实文件名称,则可以更新原始路径为真实路径,这里用到了字符串操作函数_tcslen、 _tcsnicmp以及_tcsncpy等。 - 最后,再调用
UnmapViewOfFile和CloseHandle函数清理资源,并将相关的信息输出到控制台上,包括基址、名称、大小和路径等信息。
本文共计883个文字,预计阅读时间需要4分钟。
了解了,以下是修改后的内容:
理解了如何通过调试事件输出当前进程中的内存信息。那么,实现加载DLL模块也变得容易,主要使用+LOAD_DLL_DEBUG_EVENT这个通知事件。该事件可以检测到进程加载的模块信息。
理解了如何通过调试事件输出当前进程中寄存器信息,那么实现加载DLL模块也会变得很容易实现,加载DLL模块主要使用LOAD_DLL_DEBUG_EVENT这个通知事件,该事件可检测进程加载的模块信息,一旦有新模块被加载或装入那么则会触发一个通知事件,利用该方法并配合磁盘路径获取函数则可很容易的实现进程模块加载的监控。
获取加载的动态链接库DLL的详细信息,具体实现细节如下:
- 首先,代码通过
GetFileSize函数获取目标DLL文件的大小,如果大小为0,则立即退出函数。 - 然后,代码调用
CreateFileMapping和MapViewOfFile函数创建了一个内存映射对象,该映射对象可以让代码访问DLL文件的内容。 - 随后,代码调用
GetMappedFileName函数获取该内存映射对象关联的DLL文件的路径,其中需要使用QueryDosDevice查询函数来确认磁盘符号对应的真实文件名称, 如果找到对应的真实文件名称,则可以更新原始路径为真实路径,这里用到了字符串操作函数_tcslen、 _tcsnicmp以及_tcsncpy等。 - 最后,再调用
UnmapViewOfFile和CloseHandle函数清理资源,并将相关的信息输出到控制台上,包括基址、名称、大小和路径等信息。

