首页
社区
课程
招聘
[IDA使用技巧]#167:添加和分割段
发表于: 2023-12-5 14:13 8637

[IDA使用技巧]#167:添加和分割段

2023-12-5 14:13
8637

翻译:梦幻的彼岸

Igor的本周小贴士#167:添加和分割段

原文地址:https://hex-rays.com/blog/igors-tip-of-the-week-167-adding-and-splitting-segments/


在分析固件二进制文件时,合理的内存布局相当重要。加载原始二进制文件时,IDA 通常会为整个二进制文件创建一个代码段。当您只需要分析该代码时,这就足够了,但情况并非总是如此。例如,例如,代码可以引用外部硬件作为MMIO(内存映射I/O),或者使用不属于二进制映像的额外内存。如何处理这种情况?

要在数据库中添加额外地址,请通过如下步骤: Edit > Segments > Create segment… 操作。


输入段名、起始/结束地址和可选类别。类通常只是提供信息,但可能会影响反编译器的行为。“Use sparse storage option”适用于大部分为空且数据项相对较少的数据段(如 BSS 或 MMIO)。启用该选项后,IDA 将使用针对此类情况优化的存储空间,因此即使新的数据段非常大,IDB 也不会增长太多。

注意:段的结束地址是排他的,即段的最后一个字节的地址为 end_ea-1。

段创建后,最好重新分析数据库,以便发现对新可用地址的引用。

如果您指定的地址范围与现有段有部分交叉,IDA 将自动截断该段,为新段腾出空间。例如,假设你有一个从 0 到 0x80000 的 ROM 固件段,但后来发现代码区域似乎在 0x60000 处结束。若要将最后一部分分割为只读数据,可创建一个边界为 0x60000 至 0x80000 的新段(如命名为 .rodata),ROM 段将自动截断为 0x60000 结尾。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2023-12-11 14:26 被梦幻的彼岸编辑 ,原因:
收藏
免费 6
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//