JMP地址公式推导

    添加时间:2013-6-18 点击量:

    以上有个题目:为什么同样的汇编指令JMP 12345678却对应不合的机械码呢?

    起首,机械码E9注解这是一个近跳转(Near Jmp)

    这里须要补充下相干常识:

    JMP分3种:

    ①短跳转(Short Jmp,只能跳转到256字节的局限内),对应机械码:EB

    ②近跳转(Near Jmp,可跳至同一段局限内的地址),对应机械码:E9

    ③远跳转(Far Jmp,可跳至随便率性地址),对应机械码: EA

    短跳转和近跳转指令中包含的操纵数都是相对于(E)IP的偏移。

    远跳转指令中包含的是目标的绝对地址。

    所以短/近跳转会呈现跳至同一目标的指令机械码不合,不仅会不合,并且应当不合。

    而远跳转中包含的是绝对地址,是以转移到同一地址的指令机械码雷同 。

    至此,我们知道了跳转指令所对应的机械码按照E(IP)策画出来的,那到底是怎么策画的呢?

    比如:

    上图的第一条指令:01007568    - E9 0BE13311   JMP 12345678

    此时的EIP=01007568

    12345678- 01007568  =  1133E110 这里只是指向当前指令的EIP处,实际策画跳转地址要去掉当前指令的长度,当前的跳转指令须要5个字节,  1133E110  -5= 1133E10B

    重视倒置次序,高位在后

    原创文章,转载请注明出处:http://www.cnblogs.com/hongfei/

    无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
    分享到: