何为Reverse?Re即逆向工程。
一、原理
要了解逆向工程的工作原理,首先需要知道一个源文件是怎样被编译成可执行文件的
大致分为以下几步
预编译=>编译(即翻译为汇编语言)=>汇编=>链接(动态链接库dll )
其中,EAX,EBX,ECX,EDX是最常用的四个寄存器,aka基本寄存器
ESP是栈顶指针寄存器,EBP是栈底指针寄存器
对于32位寄存器来说,其最大可以存储八位十六进制数,对于16位寄存器来说,其最大可以存储低四位(即后四位)十六进制数
举个栗子:
MOV EAX,11111111 >>将eax赋值为11111111
MOV AX,2222 >>将后四位赋值为2222 此时eax变为11112222
MOV AH 33 >> 将后四位的高位赋值为33 eax变为11223322
MOV AL 44 >> 以此类推, eax变为11223344
目标操作数不能为内存和立即数
ADD:把目的操作数和源操作数相加
SUB:相减
AND,OR,NOT,XOR:位运算(逻辑运算)
跳转指令
汇编语言中的跳转指令主要分为三种:
JMP指令:无条件跳转:无视其它条件,只要遇到jmp就会跳转到指向的位置/指令
一些有条件跳转:
这些跳转指令的条件都被存储在Eflag寄存器中