-
-
[求助]关于API HOOk的问题
-
发表于:
2013-12-12 11:01
10340
-
我想拦截有一个应用程序对API函数的调用,该应用程序被加壳了,无法调试。
试了下面三种方法都不行。
1. 我用修改IAT的方法,发现对其它程序有用,但对该加壳的应用程序没用,在网上找了一阵,好像是说因为加壳了,所以查找输入表的时候是查找不到的。所以对加壳的程序该方法不行。
2. 我用修改API前面五个字节的方法,在我的hook函数中将这五个字节还原,再调用原函数,再将其改为Hook状态。发现刚运行没问题,过一会就会使该应用程序出错。因为有多线程的问题。
3. 我修改api前面五个字节,然后在我的hook函数中模拟该五个字节的指令,再跳转到原函数+5字节的位置(已考虑堆栈平衡,我用的是国外现有的MHook)。发现在其它所有程序中都可以,但在该加壳的应用程序中却发现HOOK不到。
我现在就是在纳闷第三种方法为什么hook不到? 是因为那个程序有检测机制吗?如果有检测的话,为什么第二种方法却可以hook到呢?
即使是有检测机制,我把那五个代码改了,他是怎么改回去的呢?他有那么多API函数调用,难道他自己都保存好了每个API的前面五个字节?他怎么知道该把前面五个字节改为什么样?(因为程序能够正常执行,说明要吗是我修改其前面五个字节没成功,要吗是他自己改回去了)。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课