逆向工程(一):汇编、逆向工程基础篇
以下内容为阅读汇编语法的基础篇总结出来的,正如下面这句对这篇文章的评论,我只能从中总结出一些十分基础的语法。
一. 单元,位,字节。
1. 位(BIT):电脑数据量中的最小单元,即0和1。
2. 字节(BYTE):一个字节有八位。
3. 字(WORD):一个字有两个字节,即十六位。
双字(DOUBLE WORD):两个字,三十二位。
千字(KILOBYTE):1024个字节(32*32)。
兆字(MEGABYTE):1024*1024(1048576)个字节。
二.寄存器
计算机存放数据的地方。
关于寄存器我只是知道了那是个存储数据的地方,其他的什么索引寄存器、段寄存器、反正就是各种各样的寄存器都是存放对应的特定的数据,不知道我的理解有没有错。
三. 标志寄存器
代表了某种状态,就是一个标志,只能是0或者1,决定了是否执行某个指令。
Z-flag(零标志):可设为0或者1,如果上一个运算结果为0,则其值为1,否则其值为0。
The O-flag(溢出标志):当上一步操作改变了某寄存器的最高有效位时,OF寄存器会被设置成1。
The C-flag(进位标志):产生溢出,就会被设置成为1。
四. 段偏移
段:偏移量=把他们放在一起就是内存中的一个具体的地址。
五.栈
就是一个存放数据的盒子。
六. 指令
指令名 | 语法 |
ADD(加) | ADD被加数,加数 |
AND(逻辑与) | AND目标数,原数 |
CALL(调用) | CALL something |
CDQ | CDQ |
CMP(比较) | CMP 目标数,原数 |
DEC(自减) | DEC something |
DIV(除) | DIV 除数 |
IDIV(整除) | IDIV 除数 |
IMUL(整乘) | IMUL 数值 |
INC(自加) | INC something |
INT | INT 目标数 |
JUMPS(跳转指令) |
|
LEA(有效地址传送) | LEA 目的数、源数 |
MOV(传送) | MOV 目的数、源数 |
MUL(乘法) | MUL 数值 |
NOP(无操作) | NOP |
OR(逻辑或) | OR 目的数,源数 |
POP | POP目的地址 |
PUSH | PUSH 值 |
REP/REPE/REPZ/REPNE/REPNZ | REP/REPE/REPZ/REPNE/REPNZ ins |
RET(返回) | RET |
SUB(减) | SUB 目的数,源数 |
TEST | TEST 操作符,操作符 |
XOR | XOR 目的数,源数 |
七. 逻辑操作符