注册

CpuDbg x96

查看: 91|回复: 0
收起左侧

[CpuDbg x96] 调试DLL文件总是跑飞

[复制链接]
发表于 2025-4-5 00:04:27 | 显示全部楼层 |阅读模式
在WINDOWS中是无法直接执行DLL文件的. 想要调试DLL文件,就只能通过EXE去加载DLL文件.
这样正常情况下,我们只要在 LOAD_DLL_DEBUG_EVENT 事件到达的时候,给DLL的OEP处添加一个断点即可.

之前我嫌调试器加载速度慢, 我专门做了一些处理, 其中我将 LOAD_DLL_DEBUG_EVENT 事件做了个延时加载处理.
当时测试的时候, 发现加载模块非常浪费时间, 因为我在模块中获取了模块的 MD5 等信息, 所以很"浪费时间".
因此, 为了解决这个问题, 我才特意加的延时处理.(可以参考之前的文章: F3或者Ctrl+F2加载目标程序非常慢)

谁知道正好调试DLL的时候, 和延时加载冲突了.
目前的临时解决方案, 就是 LOAD_DLL_DEBUG_EVENT 事件到达的时候, 先判断调试的是否是DLL模块.
如果不是DLL模块, 则正常走延时加载函数. 如果是DLL模块. 则先判断当前加载的是否是被调试的目标模块.
(因为往往先到达的总是系统模块, 如 kernel32.dll ntdll.dll等.所以要加判断. 目前是通过完整的绝对路径来判断是否是目标模块.)
判断是目标模块后, 直接先获取OEP, 然后给OEP添加个INT3断点. 这样就能正常调试DLL文件了.


回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注册

QQ|Archiver|手机版| CpuDbg x96

GMT, 2025-5-9 13:37 , Processed in 0.078125 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表