逆向教程
- 再Windows上运行,都遵循PE文件格式。
- exe,dll,sys
1,程序从哪里开始执行
2,数据存在哪里
3,程序存在哪里
最终存储为0和1
- 字节(BYTE):8位(两个十六进制数), WORD(字):16位, DWORD(双字):32位(BIT)
- Windows操作系统存储从高位到低位 :E8 00 00 00 ——> 000000E8
- PE查看器—>找到代码段起始地址—>找到第一个函数
- 将16进制数转换成汇编的过程——反汇编
- 二进制—》汇编—》C语言——逆向
- 逻辑运算 —— 按位运算
或( or | )——有一则一定是一
与( and & )——有零则一定是一
异或(xor ^)——不一样的为一
非(not !)——1是0,0是1
左移( << )——0010 << 0100
例题:CPU运行:2+3=?
CPU只能做加法运算,存储数据的容器:CPU里---寄存器,内存条---内存(慢)
- 32位通用寄存器:
EAX: 累加器
……
- 汇编指令:
mov 把后面的立即数放到前面的寄存器里
add 加数再放回
sub 减数再放回
- 客户端---密钥---服务器端
- 内存:
【编号】成为地址,
32位计算机:寻址宽度(编号最大不能超过32位)——存储最大数据:FFFFFFFF+1 —》 4G
(包括00000000)
内存单位大小(内存单元)是一个字节
内存的读写:(练习时:地址可用ESP的)
DS(段寄存器):后面是立即数,与内存属性有关
SS:后面是ESP/EBP
ES:后面是EDI
PTR:后面是地址
LEA:取地址编号
堆栈:ESP(栈顶),EBP(栈底)
PUSH,POP--->(+4/-4)
赞 (0)