
壳会在加壳的时候,把导入表这个结构给拿出来
然后自己加密,或者改变结构
壳改了以后,系统就找不到导入表了,也就无法给我们的程序填充所需要的函数地址。
加过壳的程序一定可以运行的。
所以填充过程被取代了,这个过程被在壳段完成。
脱壳的时候直接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脚本
Code
mov iat_b,00432000 |
实例破解
tElock壳
脱壳
二次内存镜象法
再次打开内存窗口,找到.text,F2下断点,shift+F9运行,即可到达OEP
tElock脱壳修复IAT脚本
Code
bc |








近期评论