逆向教程

  1. 再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)

相关推荐