-
-
[求助]alloca_probe 检查堆栈时的问题
-
发表于:
2013-4-2 11:54
6599
-
[求助]alloca_probe 检查堆栈时的问题
今天在分析一个程序的时候,遇到一个奇怪的问题:
原始程序是正常工作的。
我于是在CreateProcess 的时候,插入了一个DLL。开启一个线程。当主程序完成初始化后,再HOOK。如此,正常。
第二个需求,需要在主程序未完成初始化的时候,HOOK。
于时,开工,HOOK。
但是,HOOK后,程序直接退出。
于是用OD跟,发现我HOOK的代码没问题。但是错误在于根本没有执行到我的代码,直接在前面,原始程序有一个初始化的模块,引用了 好像是VC的检查堆栈的:__alloca_probe,在这里报的错。
然后用OD跟,原始程序走到这里的分析,检查内存:
182000
181000,每次递减1000,直到一个最小值。如果在内存列表中没有分配,检查的时候,系统会自动分配。如:
现有内存表:
183000~18f000
没有182000,当执行完 test [eax], eax,的时候,182000就会自动分配完了。此名没有触发异常。
问题来了:
我的HOOK做完后,再执行到 test [eax], eax,处理未申请内存时,系统不会自动分配了。而是直接报错。
这是什么机制呢,还是我的DLL破坏了什么机制,没有恢复 ...
求高人指点...
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课