修复 IAT 之剔除无用数据
使用工具
- OllyDbg 1.10原版,简称
OD
; OD
汉化
和插件
均来自互联网;- UnPackMe来自互联网,仅供学习使用;
- Dump 工具为 OD 插件 OllyDump,来自互联网;
- IAT 重建工具为 ImportREC,来自互联网;
- 文中特殊数字均是
HEX
,为了书写方便采用DEC
;
OD
;OD
汉化
和插件
均来自互联网;HEX
,为了书写方便采用DEC
;破坏原程序的输入表是加密外壳必备的功能,因此在脱壳中,输入表的处理是一个关键环节,这需要脱壳者对 PE 格式中输入表的概念必须非常清楚;
手动修复可以更清晰的理解重建输入表的过程及原理,但很辛苦,需要细心细心再细心,中间因为数值填错而苦苦寻找,想象一下在一堆二进制中找一个数值错误,很可怕,但很值得,弄懂了原理,以后就善用工具了;
OD
;OD
汉化
和插件
均来自互联网;HEX
,为了书写方便采用DEC
;各类语言编译的文件入口点都有自己的特点;
使用同一种编译器编译的程序,其入口代码都很类似,都有一段启动代码,编译器在编译程序时会自动与程序连接;
在完成必需的初始化工作后,调用 WinMain 函数,该函数执行完毕,启动代码将再次获得控制权,进行初始化清除工作;
OD
;OD
汉化
和插件
均来自互联网;HEX
,为了书写方便采用DEC
;OD
;OD
;OD
汉化
和插件
均来自互联网;HEX
,为了书写方便采用DEC
;加壳软件必须保证外壳初始化的现场环境(各寄存器的值)与原程序的现场环境是相同的;
加壳后的程序在初始化时保存各寄存器的值,待外壳执行完毕再恢复各寄存器的内容,最后跳转到原程序执行;
通常,加壳后的程序在开始时使用 PUSHAD/PUSHFD 来保护现场,外壳执行完毕后,使用 POPAD/POPFD 恢复现场;
也就是说,加壳软件必须遵守栈平衡原理;
OD
;OD
汉化
和插件
均来自互联网;HEX
,为了书写方便采用DEC
;OEP:当外壳保护的程序运行时,会先执行外壳程序,外壳程序负责在内存中把原程序解压、还原,并把控制权还给解压后的真正程序,再跳到原来程序的入口点,这个解压后真正程序的入口点称为 OEP(Original Entry Point,原始入口点);
EP:与 OEP 对应的是 EP(Entry Point,入口点),无壳程序的 EP 与 OEP 相同,加壳程序的 EP 是壳的入口点,而不是原程序的入口点;
OD
;OD
;OD
汉化
和插件
均来自互联网;HEX
,为了书写方便采用DEC
;