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

---------------|相关学习资源|---------------
二进制安全相关工具和教程站点
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

---------------|二进制基础知识|---------------
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

---------------|汇编语言基础知识|---------------
寄存器
80386处理器中的寄存器分为8组,每组宽度为32位
通用寄存器
段寄存器
指令寄存器
标志寄存器
系统地址寄存器
控制寄存器
调试寄存器
测试寄存器

通用寄存器:

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位

段寄存器:
CS:代码段(Code Segment)
DS:数据段(Data Segment)
ES:附加数据段(Extra Segment)
SS:堆栈段(Stack Segment)
FS:附加段
GS 附加段

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

标志寄存器:
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

猜你喜欢

转载自www.cnblogs.com/Chorder/p/9114479.html