当我刚开始使用RE时,我主要面对的是单层打包文件,例如UPX,ASPack等。当我处理多层包装时,问题就开始了,尤其是关于恶意软件。我遵循了一些教程,尽管它们通常不够详细。他们似乎要经过繁琐的过程才能找到OEP。例如,他们首先处理常见的打包程序(这是最简单的部分),然后开始在“调用和跳转”中到处设置断点,并在此处和那里遍历文件,这对我来说是我最难的部分如上所述。在这一点上,我不知道他们正在寻找什么或目标是什么,然后经过一番工作,他们找到了OEP!

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

评论

我认为您是说混淆,例如upx不是加密,而是打包可执行文件的工具。

相关:reverseengineering.stackexchange.com/questions/72/…

#1 楼

正如您自己看到的那样,RE并非易事。人们必须(至少)尽可能地获得耐心,一些智力和知识也将有所帮助。如果您认为只是阅读了本教程,那么从一读就可以理解所有内容,那么您错了。
我对您的建议是:


请阅读本教程的几本次并尝试不花大量时间阅读它
尝试尽可能多地了解要反转的操作系统/平台
精通PE格式作为开始或处理的文件格式与
了解封隔器和混淆技术的相关信息

之后,我很确定,如果您再次回到该讨论中,将会更加清楚地理解它。

这里有一些不错的资源:


在Ollydbg中解压缩恶意软件

查找OEP并解压缩ASPACK 2.12打包的恶意软件-试试尽管您说过,但您遇到了类似的问题
Fravia的逆向工程存档页面
PE文件格式概述

力量可能与您同在:)

#2 楼

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

请记住,没有适用于所有打包程序的通用方法。在解压缩97%的二进制文件时;


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

评论


我认为#6是蛋糕!

–the_endian
17年5月8日在7:04