-
-
[求助]动态加载exe时遇到问题,希望有兄弟能帮忙解答一下,多谢!!!
-
发表于:
2014-7-30 22:00
4549
-
[求助]动态加载exe时遇到问题,希望有兄弟能帮忙解答一下,多谢!!!
之前看到论坛中的帖子提到把exe作为dll进行加载(http://bbs.pediy.com/showthread.php?t=68730),这两天实践了一下,主要工作如下:
1、先收集exe中需要重定位处理的位置信息,按照重定位信息格式为exe添加了一个reloc段;
2、加载exe进内存,进行了对齐处理、导入表修复、重定位处理,然后调用exe中的函数。
在调用过程中通过调试可以发现,需要重定位的地方经过处理已经都能正常运行,但是在一个地方遇到了问题,百思不得其解,当中有用到msvcrt._beginthreadex创建一个线程,跟进去内部是通过调用kernel32.CreateThread,thread function指向msvcrt.77C0A341
77C0A42D 50 push eax
77C0A42E FF75 18 push dword ptr [ebp+18]
77C0A431 56 push esi
77C0A432 68 41A3C077 push 77C0A341
77C0A437 FF75 0C push dword ptr [ebp+C]
77C0A43A FF75 08 push dword ptr [ebp+8]
77C0A43D FF15 3412BE77 call dword ptr [<&KERNEL32.CreateThread>] ; kernel32.CreateThread
直接运行exe时,在msvcrt.77C0A341处下断,kernel32.CreateThread之后F5就能断下,而自行加载exe调用时,kernel32.CreateThread之后F5就断不下来,利用PCHunter等工具察看,线程也已经创建了,但感觉线程没有工作,像是被挂起了,一直没想明白这个问题,希望有兄弟能点拨一下,多谢
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课