调用<地址>计算</地址>

时间:2012-01-01 02:51:17

标签: c++ assembly hook

好吧,我正在开发一个Hook like系统,我想将调用指令(Hex Operation Code)复制到某个位置,所以当执行它时会调用一个外星函数,但是当我组装'call时0x100'它出现'E8 FD',但它如何计算0x100到0xFD?我听说这是通过使用这个等式完成的:

((Origin - Destination)/4)/4

但是,如果原点不知道怎么办呢?

1 个答案:

答案 0 :(得分:1)

原点是调用指令后指令的地址。就像近jmp指令一样。它存储为偏移量。请注意,调用指令已过载。有一个接近调用,它需要16位相对地址和一个需要32位相对地址的远程调用

E8 *cw* - CALL rel16 - Call near, relative, displacement relative to next instruction
E8 *cd* - CALL rel32 - Call near, relative, displacement relative to next instruction

来源:英特尔指令集参考。