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

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

2023-12-5 14:13
9072

翻译:梦幻的彼岸

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

原文地址:96cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Z5k6i4S2Q4x3X3c8J5j5i4W2K6i4K6u0W2j5$3!0E0i4K6u0r3j5X3I4G2k6#2)9J5c8X3W2Y4L8%4u0K6i4K6u0V1N6r3W2H3i4K6u0V1L8$3k6Q4x3X3c8@1K9r3g2Q4x3X3c8%4k6h3g2C8i4K6u0V1x3e0j5%4i4K6u0V1j5h3c8V1K9h3&6Y4i4K6u0V1j5h3&6V1i4K6u0V1M7%4m8D9K9i4c8@1K9h3&6Y4i4K6u0V1M7$3g2Y4L8h3g2F1N6s2y4Q4x3V1j5`.


在分析固件二进制文件时,合理的内存布局相当重要。加载原始二进制文件时,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 结尾。


[注意]看雪招聘,专注安全领域的专业人才平台!

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