首页
社区
课程
招聘
[旧帖] [求助]请问一下函数跳转地址的计算 0.00雪花
发表于: 2007-7-12 14:15 4515

[旧帖] [求助]请问一下函数跳转地址的计算 0.00雪花

2007-7-12 14:15
4515
我有两个模块A.dll, B.dll,分别有两个函数 lpFuncA, lpFuncB。在做hook的时候,希望用B替代A。但是例子程序中有一段没有看明白
pNewAddr = (DWORD)lpFuncB - (DWORD)lpFuncA - 5;

我知道这个计算出来的是jmp指令的一个操作数,但未什么不是直接pNewAddr=lpFuncB呢?
我从OllyDbg中看到该处跳转也确实是挑战到了lpFuncB的地址。jmp的操作数应该是怎么个格式呢?

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
555没人理,自己顶.....
2007-7-12 15:07
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我认为这条语句是计算函数调用的偏移量。函数调用语句中是用的相对地址。
2007-7-31 14:20
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
假设lpFuncA的地址为100,lpFuncB为200,jmp指令的参数是一个偏移量,而这条jmp指令是写在lpFuncA函数里面的,例如:
void FuncA()   
{
       jmp  相对FuncB偏移量; //该偏移量是从该条指令后距离FuncB函数的地址,这条指令
                               占用了5个字节,jmp占1个字节加上相对偏移量4个字节
     具体函数的代码
}
jmp指令后面跟的参数是:目的地址减去下一条指令(紧跟在这个jmp指令后面的)所在的地址
2007-7-31 19:24
0
游客
登录 | 注册 方可回帖
返回
//