如何在 IDA Pro 中扩展已分析可执行文件的内存?

逆向工程 艾达 拆卸 恶意软件 反调试 免疫调试器
2021-06-30 21:58:42

我正在使用 ImmDBG 和 IDA Pro 分析一些恶意软件可执行文件。

可执行文件在运行时使用参数lpAddress=NULL调用kernel32.VirtualAlloc()这意味着操作系统自行决定内存分配的位置。的VirtualAlloc()返回的地址0x003F0000。之后可执行文件将一些函数写入该内存,该内存相当大,我想在IDA Pro中分析该函数。

问题是,我的可执行文件已加载到 IDA Pro 中的 0x004010000,我不知道如何扩展 IDA Pro 中可执行文件的内存以手动创建此函数(在 PatchBytes 的帮助下)。

另外,也许有可能以某种方式从 IDA Pro 中的一系列操作码构建一个函数?

先感谢您!

2个回答

我发现的最可靠的解决方案是向 PE 文件添加一个新部分,并强制该进程将解压缩的代码写入内存中的该新部分。

几年前,我写了一篇博客文章,详细介绍了这种方法:http : //blog.crowdstrike.com/unpacking-dynamically-allocated-code/

截屏

我通过在 IDA Pro 中创建一个新部分(File -> Segments -> Create segment解决了这个问题之后,我在 OllyDBG 中转储了新部分(二进制副本)并将其转移到 IDA Pro 中新创建的部分(使用 Python 脚本)。之后我可以分析代码并在 IDA 中编写注释以进行更好的分析和文档。