首页
社区
课程
招聘
[求助]请教下:Hook时,如何在别的地址处还原被Hook的代码?
发表于: 2015-7-24 18:59 4172

[求助]请教下:Hook时,如何在别的地址处还原被Hook的代码?

2015-7-24 18:59
4172
在原地址还原直接写回字节值就行了,但在别的地址还原,像push、mov 之类的直接还原字节没问题,但遇到跳转指令,直接还原字节就不行了,请问下前辈,如何才能不管Hook的地方是什么指令,都可以在别的地址处正确还原呢。

补充:我现在想要实现的功能就是,在任意地方Hook(并不清楚Hook处的汇编代码),跳进我自己的代码执行,执行完毕后,然后继续执行原先目标程序的代码。现在可以实现一次性的Hook(就是在我的代码里还原Hook地方的代码,再jmp回去。)但不知道如何实现一直有效的Hook。

再次补充:现在可以实现一直有效的Hook了,之前之所以不行,是因为esp的原因,但现在新的问题又来了,如何在CALL中的任意位置获取该CALL的返回地址呢。在CALL头部返回地址是在ESP中,CALL中部又是在那里呢?有没有一个可以在任意位置获取的呢?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个一般是在hook之前,你已经反汇编了需要hook的指令代码,不管是什么,除了push,mov之类,即使是加减法,add,等等复杂指令,都是在hook以后,硬编码执行自己的push,mov,add指令,然后跳转回去。
这是因为你hook的地方是你实现已经彻底了解的。如果是对未知的地方hook,那么就需要反汇编引擎,而且正如你说的,如何还原也是一个问题了,恐怕还要一个智能识别汇编指令序列的引擎,智能的产生还原代码。
2015-7-24 19:04
0
雪    币: 135
活跃值: (106)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
3
1: 直接用现成的hook引擎,比如detorus
2: 自己实现一个hook引擎,要用到反汇编引擎对指令码进行分析,修正。
2015-7-24 21:54
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
很多类似的
2015-7-25 11:54
0
游客
登录 | 注册 方可回帖
返回
//