-
-
[求助]DLL隐藏之线程处理函数无法执行
-
发表于:
2012-5-9 21:55
7675
-
最近学习如何隐藏DLL。
采用之前论坛提到的DLL隐藏方法。具体如下
1、采用“SetWindowsHookExA”全局钩子 将DLL加载到目标进程。
2、当DLL被加载后,备份DLL模块,然后修改 DLL的 EnterPoint直接返回TRUE,防止后面调用FreeLibrary时,将资源等被释放掉。
3、在局部堆栈中执行执行以下代码
a)以DLL的模块基址申请同样大小的内存空间;
b)调用FreeLibrary释放DLL;
c)拷贝之前备份DLL到原来DLL的基址
对于DLL被释放时连带其加载的其他DLL也会被释放的问题。由于我被插入的DLL中调用的其他DLL在目标进程中已经全部加载,所以就没有进行将其他DLL重新加载的动作。
对于DLL进行以上代码时,有此DLL创建的线程在运行,可能引起内存违规访问的问题,由于我确保在执行以上代码时,DLL没有创建过其他任何线程,所以就没有进行线程挂起的动作。
由于只是学习,也没有对DLL的MZ等标志抹除。
执行以上代码后,DLL顺利隐藏,XUETR等工具没有发现DLL。基本功能正常。
我的问题是:DLL隐藏后 再创建线程 线程创建成功了,但是线程的回调函数却没有被执行,经查看,此线程创建完后就终止了,请问原因是什么?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!