首页 > 代码库 > 奇技淫巧之调试被远程线程注入的DLL

奇技淫巧之调试被远程线程注入的DLL

远程线程注入, 这东西大家都懂的, 一般都被大家用来干些小小的坏事情,比如API Hook~~将DLL注入到其它进程并不是难事,问题是这个被注入的DLL不太好调试,调试DLL本来就是个比较头疼的问题,更何况是这种运行在其它进程空间的DLL, 被注入DLL的程序,不崩溃还好,崩溃了,要定位崩溃点,真是够麻烦的。

这几天,无意中发现了一个可以调试这种DLL的方法。


首先,需要准备两样东西:

1、微软的Detours库, 下载地址戳这里: 下载链接

2、打开Detours安装目录下的samples\setdll, 把这个源代码编译(需要先编译Detours库,具体编译方法此处略过,不是本文重点)


将SetDLL.cpp编译过后,就得到了SetDLL.exe, 这才是本文的重点。这东西是什么呢?这东西实际上就是一个修改程序IAT的工具, 可以将指定的DLL加入到程序的IAT中, 程序启动时就会自动加载指定的DLL, 嘿嘿嘿嘿~~到这儿,估计很多人已经明白了我要说什么~~

看图说话:



参数说明就是这样的,用法很简单,一看便知。


接下来,我来详细说明调试的步骤:

1、DLL工程一份, 不多说,是需要注入到其它进程中的那个DLL, 自行编写。

2、将编译出来的DLL和PDB文件,放到要调试程序的同一目录,如图:



3、使用SetDLL.exe将HookLib.dll加入到Demo.exe的导入表:



执行完成后, 原始程序会被自动备份,不用担心恢复原始文件的问题, 也可以用/r 参数将DLL从IAT里删除掉,很简单。


4、配置Visual Studio的本地调试, 如图:



5、在DLL入口下个断点, F5启动调试。




看到了木有,妥妥的断下来了~~~

这是本地调试,如果想远程调试,只需要配置一下第4步,将本地Windows调试器改成远程Windows调试器,配置一下参数即可,很方便。

调试远程注入DLL, 从此不再是难题~~~


本帖为原创,转帖请说明出处,谢谢合作。

本帖地址:http://blog.csdn.net/sonsie007/article/details/25803895