一些基本概念

 

1,什么是逆向工程,什么是反汇编?

逆向工程:产品开发都是从设计到产品的一个过程;而逆向工程,顾名思义就是从产品到设计的一个分析过程。在计算机软件领域,所谓的逆向工程,指的是逆向人员通过使用相关工具对程序进行反汇编,通过分析调试其汇编代码,从而在没有该软件的开发资料的情况下,研究其软件设计过程。

反汇编:将低级语言转换为高级语言,即把机器语言转换为汇编语言的过程。

2,什么是壳?

壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种

顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。当然加密壳的保护能力要强得多!

3,什么是栈?

栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。

PUSH:压栈,在后面的CALL语句中会用到此处PUSH的值

POP:出栈

4,32位CPU寄存器

4个数据寄存器(EAX、EBX、ECX和EDX)

2个变址和指针寄存器(ESI和EDI)

2个指针寄存器(ESP和EBP)

6个段寄存器(ES、CS、SS、DS、FS和GS)

1个指令指针寄存器(EIP)

1个标志寄存器(EFlags)

数据寄存器:

数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。  

32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些 

低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。

变址寄存器:

寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,

用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

指针寄存器:

寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量。

BP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据;

SP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。

你可能感兴趣的:(逆向工程,反汇编,壳,32位CPU寄存器)