-
-
[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直播授课
赞赏
- [原创]物联网安全:基础篇 4099
- 威胁情报小课堂:阻止活跃勒索软件的感染 2165
- [翻译]发现利用 Facebook 和 MS 管理控制台实施的 Kimsuky APT 攻击 7041
- 威胁情报小课堂:LockBit Black 2041
- 威胁情报小课堂:Nitrogen 2067