反汇编技术笔记-基础知识

1
2
3
4
5
6
7
8
**---------------|相关学习资源|---------------**
二进制安全相关工具和教程站点
http://www.openrce.org
http://www.ollydbg.de
http://www.sysersoft.com
http://www.idapro.com
http://www.woodmann.com
http://www.hex-rays.com IDA pro
1
2
3
4
5
6
7
**---------------|二进制基础知识|---------------**
CPU指令的基本单位
1 byte = 8 bit
1 word = 2 byte
1 double word = 2 word
1 kilobyte = 1024 byte
1 megabyte = 1024 kbyte = 1024*1024 byte = 1048576 byte
1
2
3
4
5
6
7
8
9
10
11
**---------------|汇编语言基础知识|---------------**
**寄存器**
80386处理器中的寄存器分为8组,每组宽度为32位
*通用寄存器
*段寄存器
*指令寄存器
*标志寄存器
*系统地址寄存器
*控制寄存器
*调试寄存器
*测试寄存器

通用寄存器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
EAX	累加器
EBX 基址寄存器
ECX 计数器
EDX 数据寄存器
ESI 源变址寄存器
EDI 目的变址寄存器
EBP 扩展基址指针寄存器
ESP 栈指针寄存器


EAX EBX ECX EDX ESI EDI EBP ESP #32位
AX BX CX DX SI DI BP SP #低16位
AH BH CH DH #高8位
AL BL CL DL #低8位

段寄存器:

1
2
3
4
5
6
CS:代码段(Code Segment)
DS:数据段(Data Segment)
ES:附加数据段(Extra Segment)
SS:堆栈段(Stack Segment)
FS:附加段
GS 附加段

指令寄存器:
EIP 指令指针寄存器
低16位为IP(8086)
它存储的是下一条要执行指令的地址。

标志寄存器:

1
2
3
4
5
6
7
8
9
10
11
12
13
IOPL(I/O Privilege Level)	I/O特权级字段,它的宽度为2bit,它指定了I/O指令的特权级。如果当前的特权级别在数值上小于或等于IOPL,那么I/O指令可执行。否则,将发生一个保护性异常。
NT(Nested Task): 控制中断返回指令IRET,它宽度为1位。NT=0,用堆栈中保存的值恢复EFLAGS,CS和EIP从而实现中断返回;NT=1,则通过任务切换实现中断返回。
RF(Restart Flag): 重启标志,它的宽度是1位。它主要控制是否接受调试故障。RF=0接受,RF=1忽略。如果你的程序每一条指令都被成功执行,那么RF会被清0。而当接受到一个非调试故障时,处理器置RF=1。
VM(Virtual Machine): 虚拟8086模式(用软件来模拟8086的模式,所以也称虚拟机)。VM=0,处理器工作在一般的保护模式下;VM=1,工作在V8086模式下。
其它16个标志位的含义和8086一样:
CF(Carry Flag): 进位标志位,由CLC,STC两标志位来控制
PF(Parity Flag): 奇偶标志位
AF(Assistant Flag): 辅助进位标志位
ZF(Zero Flag): 零标志位
SF(Singal Flag): 符号标志位
IF(Interrupt Flag): 中断允许标志位,由CLI,STI两条指令来控制
DF(Direction Flag): 向量标志位,由CLD,STD两条指令来控制
OF(Overflow Flag): 溢出标志位

寻址方式
段基址*10H+段内偏移地址,形成20位地址
段基址是16的倍数,长度最大不超过64K

VC内联汇编和GCC内联汇编的语法区别 如何在搬瓦工(bandwagonhost)购买廉价VPS服务器
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×