备忘录

凡心所向,素履以往,生如逆旅,一苇以航。

之前尝试了手动修复 IAT,了解修复的原理后,本次记录使用工具修复的过程;

使用工具

  • OllyDbg 1.10原版,简称OD
  • OD 汉化插件均来自互联网;
  • UnPackMe来自互联网,仅供学习使用;
  • 加壳工具为UPX,感谢 🙏 开源;
  • Dump 工具为 PETools,来自互联网;
  • IAT 重建工具为 ImportREC,来自互联网;
  • 文中特殊数字均是HEX,为了书写方便采用DEC
    阅读全文 »

破坏原程序的输入表是加密外壳必备的功能,因此在脱壳中,输入表的处理是一个关键环节,这需要脱壳者对 PE 格式中输入表的概念必须非常清楚;

手动修复可以更清晰的理解重建输入表的过程及原理,但很辛苦,需要细心细心再细心,中间因为数值填错而苦苦寻找,想象一下在一堆二进制中找一个数值错误,很可怕,但很值得,弄懂了原理,以后就善用工具了;

使用工具

  • OllyDbg 1.10原版,简称OD
  • OD 汉化插件均来自互联网;
  • UnPackMe来自互联网,仅供学习使用;
  • 加壳工具为ASPACK:收费软件,可以试用;
  • Dump 工具为 LoadPE,来自互联网;
  • 16 进制修改器为 WinHex;
  • 文中特殊数字均是HEX,为了书写方便采用DEC
    阅读全文 »

各类语言编译的文件入口点都有自己的特点;

使用同一种编译器编译的程序,其入口代码都很类似,都有一段启动代码,编译器在编译程序时会自动与程序连接;

在完成必需的初始化工作后,调用 WinMain 函数,该函数执行完毕,启动代码将再次获得控制权,进行初始化清除工作;

使用工具

  • OllyDbg 1.10原版,简称OD
  • OD 汉化插件均来自互联网;
  • UnPackMe来自互联网,仅供学习使用;
  • 加壳工具为UPX,感谢 🙏 开源;
  • 文中特殊数字均是HEX,为了书写方便采用DEC
    阅读全文 »

加壳软件必须保证外壳初始化的现场环境(各寄存器的值)与原程序的现场环境是相同的;

加壳后的程序在初始化时保存各寄存器的值,待外壳执行完毕再恢复各寄存器的内容,最后跳转到原程序执行;

通常,加壳后的程序在开始时使用 PUSHAD/PUSHFD 来保护现场,外壳执行完毕后,使用 POPAD/POPFD 恢复现场;

也就是说,加壳软件必须遵守栈平衡原理;

使用工具

  • OllyDbg 1.10原版,简称OD
  • OD 汉化插件均来自互联网;
  • UnPackMe来自互联网,仅供学习使用;
  • 加壳工具为UPX,感谢 🙏 开源;
  • 文中特殊数字均是HEX,为了书写方便采用DEC
    阅读全文 »

OEP:当外壳保护的程序运行时,会先执行外壳程序,外壳程序负责在内存中把原程序解压、还原,并把控制权还给解压后的真正程序,再跳到原来程序的入口点,这个解压后真正程序的入口点称为 OEP(Original Entry Point,原始入口点);

EP:与 OEP 对应的是 EP(Entry Point,入口点),无壳程序的 EP 与 OEP 相同,加壳程序的 EP 是壳的入口点,而不是原程序的入口点;

使用工具

  • OllyDbg 1.10原版,简称OD
  • OllyDbg修改版,简称OD
  • OD 汉化插件均来自互联网;
  • UnPackMe来自互联网,仅供学习使用;
  • 文中特殊数字均是HEX,为了书写方便采用DEC
    阅读全文 »