在 IDA Pro 中合并大量段

逆向工程 艾达 视窗
2021-07-05 19:00:26

我正在处理受保护的 win32 程序的内存转储。让我很痛苦的事情是程序被分成大约 3,000 个连续的小段(即而不仅仅是 .text 和 .data)。这会混淆 IDA 并导致函数被随机切断,混淆反编译器并导致各种其他问题。我已经尝试过这个答案中的方法,但它似乎只能通过 UI 工作,idapython 拒绝合并。即使是一次合并也需要很长时间。我尝试了一个变体,从第二个段开始,遍历这些段,删除当前段并调整前一个段的大小,但是虽然小测试看起来很有希望,但我的数据库在运行几个小时后就搞砸了。

如何将这些段合并为一个大段?

注意:“连续”是指第一个段之后的每个段的起始地址等于前一个段的结束地址。此外,我不在乎评论等是否在合并中丢失。

1个回答

奇怪的是,段在函数的中间结束。

您可以优化您的方法,编写脚本来计算组合段的所需开始和结束,删除相关段,然后重新创建为组合段。这可能比合并更好。您对段的参数有很多控制权,并且需要正确完成。我也许可以共享代码(不确定)。

无论如何,如果 IDB 搞砸了,你做错了什么。