打包的 PE 文件,从哪里开始?

逆向工程 艾达 聚乙烯 开箱
2021-06-16 22:00:19

我是逆向工程的新手,所以也许这是一个简单的问题,但不适合我)。我有 .exe 文件,它以某种方式打包。当我用 IDA 打开它时,我收到警告说文件被打包或修改,还有很多问题,比如“sp 分析失败”和虚拟地址无处可去。IDA Unpacker 插件用警告淹没了我。我试图分析 HEADER。段有错误的界限:原始数据指针和原始数据大小似乎正确,但 IDA 无法解析某些虚拟地址,并且在“程序分段”窗口中遗漏了某些段。文件中的大部分指令如下所示:

___:00401000                 dd 9D3DBCCBh, 0DB7776EAh, 1F6BE17Bh, 0ADFBB803h, 4673D4B7h
___:00401000                 dd 903ADB7Ch, 0B03DACBAh, 0CA4C9D26h, 0ECFF17BBh, 0AFC80EE6h
___:00401000                 dd 0AE3EAEA3h, 5C244E1Ch, 8F68FA9Bh, 5671677Eh, 8C3CEC8Fh
___:00401000                 dd 0F56291C8h, 3D050237h, 9543FF95h, 0DA02686Ch, 6BB1A7EBh
___:00401000                 dd 32F012EAh, 99D0F3D3h, 8A8E08A5h, 1280ECB4h, 4B4ACACEh
___:00401000                 dd 0FFB892h, 5E01507Bh, 94087230h, 969DCCDBh, 8DD0AB9Bh

那么什么是正确的方法呢?我应该手动创建段,并以某种方式说 IDA 将其解释为代码/数据,还是分析 IDA 找到的入口点和“启动”函数(最后是 sp-analysis 问题)?或者最好尝试使 IDA Unpacker 插件工作?

2个回答

使用像 PEid 这样的工具来尝试找出它的包装内容,然后搜索有关如何解压缩它的教程。如果找不到,可以在网上找到一些资源来学习编写自己的解包器(这需要付出很大的努力)。

一般来说,解包的工作原理是在程序解包后转储内存,然后从转储中重建一个可执行文件。

以下是帮助您开始解包的资源:http : //securityxploded.com/unpackingupx.php

UPX 没有任何反调试技巧,所以应该是一个很好的介绍。

那么,如果打包的程序在虚拟环境中自行执行,那事情就非常困难了。你必须从ollydbg的调用堆栈窗口开始。尝试在那里找到它指向打包程序的地址,然后向后移动,直到找到原始入口点。然后您可以使用 PE 编辑器来跟踪和删除封隔器。我知道,这听起来很简单,并没有真正的帮助,但它通常是这样工作的……我也不是很有经验,但我已经花了一些时间进行手动拆包。祝您好运!