随笔分类 - 逆向破解
摘要:以上有个问题:为什么同样的汇编指令JMP 12345678却对应不同的机器码呢?首先,机器码E9表明这是一个近跳转(Near Jmp)这里需要补充下相关知识:JMP分3种:①短跳转(Short Jmp,只能跳转到256字节的范围内),对应机器码:EB②近跳转(Near Jmp,可跳至同一段范围内的地址),对应机器码:E9③远跳转(Far Jmp,可跳至任意地址),对应机器码: EA短跳转和近跳转指令中包含的操作数都是相对于(E)IP的偏移。远跳转指令中包含的是目标的绝对地址。所以短/近跳转会出现跳至同一目标的指令机器码不同,不仅会不同,而且应该不同。而远跳转中包含的是绝对地址,因此转移到同一地
阅读全文
摘要:一、数据传输指令─────────────────────────────────────── 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI...
阅读全文