一、进制
1、十进制:由0.1.2.3.4.5.6.7.8.9组成,逢十进一
2、二进制:由0.1组成,逢二进一
eg:0--0
1--1
2--10
3--11
4--100
5--101
6--110
3、十六进制:由0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F组成,逢十六进一
4、八进制
eg:2-3=?
二、exe程序
1、PE文件结构:任何一个在Windows上运行的可执行文件都要遵循的一定格式(比如exe、dll、部分sys)
了解PE结构知道程序从哪开始执行,代码存在哪,数据存在哪才能分析程序
三、硬编码
1、它是使用DTDebug来演示数字与汇编的关系
2、反汇编是将16进制数转换成汇编的过程
反汇编引擎是其相关的功能模块,是任何一款逆向分析软件的核心模块
四、逆向
逆向的过程是将二进制转换为汇编再转换为C语言的过程
五、逻辑运算(布尔运算)
逻辑运算只有两个布尔值:
0
,表示假值(False)。1
,表示真值(True)。
1、逻辑与运算,运算规则:全一为一,有零为零。
2、逻辑或运算,运算规则:全零为零,有一为一。
3、逻辑非运算,仅有一个运算操作数,所以是一元逻辑运算。运算规则:一变零,零变一。
4、逻辑异或运算,运算规则:相异为一,相同为零。
5、逻辑同或运算,运算规则:相同为一,相异为零。
6、逻辑与非运算,运算规则:先与后非(全一为零,有零为一)。
7、逻辑或非运算,运算规则:先或后非(全零为一,有一为零)。
eg:若计算机计算2+3=多少,实现转换为0010+0011(二进制),再将两个抑或算出答案,在通过与运算算出一个数再左移一位得到的二进制判断是否为0决定算法是否算完,若=0则完毕,反之未完。
eg:用异或对客户端向服务器端的加密20和15
先将20转换为二进制00100000用54的二进制异或出01110100得到74,同理将15进行加密最终得到发给服务器端的7441。
六、寄存器与内存
1、(1)寄存器是 CPU 内部用来存放数据的一些小型 存储区域 ,用来暂时存放参与运算的数据和运算结果(与cpu有关)
(2)内存是用于存放数据的硬件,又被称为主存,用于存放CPU
中的运算数据以及硬盘等外部存储设备交换的数据。CPU
一般会把需要运算的数据调到主存中进行运算,运算完后CPU
将结果再传出来。
2、(1)区别:寄存器在cpu内部,执行速度快,但比较贵
内存速度较慢,成本较低,可以做的很大
(2)没有本质区别,都用于存储数据
3、几个常用计量单位:
byte 字节 =8(bit)
word 字 =16(bit)
dword 双字 =32(bit)
4、通用寄存器的使用(EAX/ECX/EDX/EBX)
(1)MOV指令:
MOV EAX ,0x12345678 (MOV是将12345678存到EAX中,12345678是立即数,0x代表是16进制)
(2)ADD指令:
ADD EAX,1 (将1加到EAX中)
ADD EAX,ECX (将ECX加到EAX中,再存入EAX中)
(3)SUB指令:
SUB EAX,3 (在EAX中减3)
5、内存
1k=1024字节 1g=1024兆 1兆=1024k
1、电脑32位为寻址范围为32个1,即16进制的ffffffff(8个f)
2、内存读写
段寄存器主要标识属性和特征
(1)若【】中是个数,则读取内存的值填DS
(2) 若【】中有esp或ebp,则读取内存的值填SS
(3)若【】中是edi,则读取内存的值填ES
MOV EAX是要从DWORD PTR DS中读取32位的数再存到EAX中
七、堆栈
1、(1)本质就是内存
(2)栈是用来存储临时变量,函数传递的中间结果
(3)操作系统维护的,对于逆向程序员是透明的
2、REP指令的目的是重复执行后面的指令
八、堆栈图
(1)ESP:栈指针寄存器,其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。(基址加偏移)
即栈底指针
(2)EBP:基址指针寄存器,其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。(基址)
即栈顶指针
(3)EIP:用来存储CPU要读取指令的地址
(4)push:进栈 <入栈是在栈顶(数组的尾部)添加指定的元素>
(5)CALL:通常用来进行远过程调用,允许转移至任意地址空间。与ACALL,LCALL不同
如:call 00401005 是将eip的值改为00401005(改变最终地址)
1.push调用的(有push ESP和eip一定会变)
2.
LEA EDI,DWORD PTR SS:(ESP-44) edi去地址为ESP-44的
MOV ECX,11 将11存到ecx中
MOV EAX,CCCCCCCC 把cccccccc存到eax中
REP STOS DWORD PTR ES:(EDI) 从eid开始填东西重复11次(十进制为17次)填入cccccccc
返回值关注eax,ebp-xxx是局部变量,ebp+xxx是参数
3.pop和返回
标签:运算,EAX,--,公开课,内存,寄存器,指针,进制 From: https://www.cnblogs.com/Lyjia-n/p/18227761