首页
社区
课程
招聘
[求助]关于inline hook的跳转地址
发表于: 2009-12-27 09:48 4406

[求助]关于inline hook的跳转地址

2009-12-27 09:48
4406
http://bbs.pediy.com/showthread.php?t=42705
这篇文章中的inline hook  KiFastCall,在跳回原来这个函数的时候计算跳转地址为什么要这样:
*((ULONG*)(JmpCode+1)) = (uSysenter + nCopyLen) - ((ULONG)pMovedSysenterCode + nCopyLen)- 5;//计算跳转地址

不能直接*((ULONG*)(JmpCode+1)) = uSysenter + nCopyLen;

他这里定义的UCHAR  JmpCode[]={0xE9,0,0,0,0}; opcode是e9,不是可以直接跳转到绝对地址的吗?

还有我还试了XDE引擎
jumpback.opcode = 0xEA;
jumpback.addrsize = 4;
jumpback.datasize = 2;
jumpback.addr_l[0] = (long)(Fun);
jumpback.data_s[0] = 8;
len = xde_asm(cJumpback,&jumpback);

结果某次调试时Fun的地址是0x010d3210,汇编后的指令内容却是 EA A4 11 0D 01 08 00,这里段选择子和opcode都没错,可是跳转地址为什么不是我的Fun的地址呢

请各位帮帮忙,谢谢

明白了,E9  cw JMP rel16  相对跳转(16位),使rel16处的代码位下一条指令 ,E9是相对跳转
EA  cb JMP ptr16:32  远距离绝对跳转, 下一指令地址在操作数中

[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

收藏
免费
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册