如何解压多个打包程序打包的文件?

逆向工程 恶意软件 开箱
2021-06-28 20:48:31

由于我刚刚开始使用 RE,我主要面对用单层包装打包的文件,例如 UPX、ASPack 等。

打开这些保护措施的包装在网上有完整的记录。当我处理多层打包时问题就开始,尤其是关于恶意软件。我已经遵循了一些教程,尽管它们通常不够详细。他们似乎经历了一个乏味的过程才能找到 OEP。例如,他们开始用普通加壳处理(这是比较容易的部分),然后就开始设置断点无处不在“的呼叫和跳转”,并通过该文件在这里追踪和那里,这对我来说是最难的部分,我有如上所述。在这一点上,我不知道他们在寻找什么或他们的目标是什么,然后经过一番努力,他们找到了 OEP!

那么他们在这个过程中遵循了什么逻辑?另外,因为我知道这个主题很广泛,所以我也对一些关键字感兴趣。

2个回答

正如您自己所看到的,RE 不是一项容易完成的技能。一个人必须找到尽可能多的耐心(至少)来获得它,一些智慧和知识也会有所帮助。如果您认为只要按照教程就可以从第一次阅读中了解所有内容,那么您就错了。
我给你的建议是:

  • 多次阅读教程并尝试在不看著作的情况下通过它
  • 尝试尽可能多地了解您正在逆转的操作系统/平台
  • 精通PE格式作为入门或您正在处理的文件格式
  • 阅读有关加壳程序和混淆技术的信息

在那之后,我敢肯定,如果你再回到那个啧啧,你会更清楚地理解它。

这里有一些很好的资源:

  1. Ollydbg 中的恶意软件解包
  2. 查找 OEP 并解压装有 ASPACK 2.12 的恶意软件- 尽管您说尝试过,但您遇到过类似的
  3. Fravia 的逆向工程存档页面
  4. PE文件格式概述

愿原力与你同在 :)

要解压缩文件,您必须在逆向二进制文件方面具有丰富的经验。

请记住,不存在适用于所有包装工的通用方法。

这些步骤将用于解压 97% 的二进制文件;

  1. 您必须了解通常位于由知名编译器 VC++、VB、Borland Delphi 和其他编译器编译的二进制文件中入口点开头的代码。您还应该了解在不同编译器版本中编译的二进制文件中靠近入口点的代码的差异。这最终将帮助您找到 OEP。
  2. 您必须有足够的耐心来跟踪所有的虚拟内存分配和虚拟内存释放。
  3. 执行解密代码后,转储内存块并查找可见字符串。
  4. 了解调试器检测、虚拟环境检测和反调试技术。
  5. 首先从简单的包装器开始。我会建议您尝试 UPX 旧版本。
  6. 最后但并非最不重要的“每天至少玩你最喜欢的调试器 14 小时。”

一切顺利,快乐倒车!!!