吾爱破解培训第九课:短兵相接 实例破解

https://kabeor.cn/https://kabeor.cn/https://kabeor.cn/https://kabeor.cn/https://kabeor.cn/程序的导入表,是静态可见的,包含了导入的dll名字,和他的导入函数

壳会在加壳的时候,把导入表这个结构给拿出来
然后自己加密,或者改变结构

壳改了以后,系统就找不到导入表了,也就无法给我们的程序填充所需要的函数地址。

加过壳的程序一定可以运行的。

所以填充过程被取代了,这个过程被在壳段完成。

脱壳的时候直接dump,软件导入表是不在的,iat所填充的函数地址是当前系统的地址,所以这个程序可能只能在脱壳的机器运行,换台机器就失败了。

解决这个问题,导入表,
IMREC

IAT的地址值=》生成一份导入表,然后让程序使用新的导入表,那么程序就可以跨系统,在各个机器上用。

编写OD脚本

OD插件: Script Functions

脚本的指令
sti 相当于f7
sto 相当于f8
bp 地址 下断点
run 相当于f9
MSG “文字” 弹出对话框
ret 结束
bphws esp,”r” 硬件断点

运用栈平衡找oep的手段

首先要执行一条压栈指令,来改变栈,然后等以后再次读入这个栈内容的时候,就说明有栈平衡的迹象,那么就很有可能是一个栈恢复
一般来说压缩壳只有有一次恢复,然后就到oep了,所以利用这个特性我们来找oep

IAT修复

CTRl+G搜索
FF15

FF25

数据窗口找IAT起始和终点,值有明显00000000分界

UPX脚本