永发信息网

怎么获取CALL的值,详细如下,请大神看看.谢谢了

答案:2  悬赏:70  手机版
解决时间 2021-03-14 23:19
  • 提问者网友:却不属于对方
  • 2021-03-14 06:49
0065AC6A E8 51330200 CALL 0067DFC0
内存地址 HEX值 CALL地址
怎么获取CALL的值.在不知道内存的情况下,有什么算法吗?
易语言程序如何才能获取call的值.测试了很久,还是没搞定!
最佳答案
  • 五星知识达人网友:天凉才是好个秋
  • 2021-03-14 07:54
call指令(E8)所在地址ca=0x65AC6A
call指令操作数 opndVal = 0x00023351
call指令与操作数长度 calen=5(固定)
由上述参数可以得到call调用的目标地址ta = ca+calen+opndVal

如由所给的数据有: 0x67DFC0 = 0x65AC6A + 5 + 0x00023351

注意点,
(1)你所给的HEX值是小端存储的,应当注意opndVal的值的获取
(2)实际上包括跳转指令,其计算参照的地址都是下一指令的地址(因为该指令执行时,EIP已指向下一指令),这也是指令所在地址ca加上指令长度calen得到下一指令地址的由来。

由上述理论,知道call的地方(即地址)即可得到call的目标地址。
全部回答
  • 1楼网友:我住北渡口
  • 2021-03-14 08:34
期待看到有用的回答!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯