好吧,我正在开发一个Hook like系统,我想将调用指令(Hex Operation Code)复制到某个位置,所以当执行它时会调用一个外星函数,但是当我组装'call时0x100'它出现'E8 FD',但它如何计算0x100到0xFD?我听说这是通过使用这个等式完成的:
((Origin - Destination)/4)/4
但是,如果原点不知道怎么办呢?
答案 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
来源:英特尔指令集参考。