About Reverse

何为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寄存器中