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