首页
社区
课程
招聘
inline hook里jmp的一点疑问,请高手指点.
发表于: 2009-9-11 11:49 5130

inline hook里jmp的一点疑问,请高手指点.

2009-9-11 11:49
5130
拷贝原函数的头5个字节,{0xe9,0,0,0,0}然后jmp到相对地址. 在中继函数里
add eax,oldfunc
add eax,5
jmp eax
这些都好理解,就跟ring3下的hook一样.

但那种{ea,0,0,0,0,0x08,0},中继函数12个字节,前5个就跟上面一样,就下面的跳转方式不一样,所谓的远程跳转就搞不明白了.
为什么要远程跳转啊.
我用NTopenprocess inline hook 测试了一下,用最上面的方法一切正常,换下面方法的就蓝屏.

请高人指点一下.这个远程跳转方式,一般要在hook哪类函数的时候才用.
最好说一下,为什么要远程跳转.保护模式下 jmp near 距离不是可以达到-2^32--2^32吗

网上资料: e9 相对地址  ea 绝对地址.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 77
活跃值: (17)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
哈哈,我也不知道
我现在就是看需要HOOK的地方,要替换多少个字节,,5个就用短跳,7个就用长跳,正好不会产生指令碎片 ^_^
2009-9-11 13:52
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
远跳是8个字节。
2009-9-11 13:57
0
雪    币: 77
活跃值: (17)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
8个字节?
呃,那我那种方法不能称为远跳了?
我是用MOV 把地址移到EAX,然后FFE0..
2009-9-11 14:02
0
雪    币: 290
活跃值: (20)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
你的方法和e9是没什么区别的只是指令长度变化还有就是e9是要计算出来的你的是绝对地址而已
2009-9-11 14:47
0
雪    币: 290
活跃值: (20)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
楼主用{ea,0,0,0,0,0x08,0}蓝屏估计是把指令拆散了。然后jmp回来的时候搞成位置代码了或者你在代理函数里没有执行需要跳转的长度代码
2009-9-11 14:49
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不明白,感觉没有讲到点子上.
2009-9-11 15:42
0
雪    币: 251
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
远跳转本身没什么大用,只是目的地用的是绝对地址,可以省去计算相对地址的麻烦
2009-9-11 16:35
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
chenghui已经讲到点子上了。
2009-9-11 17:17
0
雪    币: 77
活跃值: (17)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
把cschenhui 与 leftup的结合起来看就点到重点了
2009-9-11 18:12
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
11
上代码来看看吧。
2009-9-11 22:11
0
游客
登录 | 注册 方可回帖
返回
//