我们之前讨论过数组,但其中一个特性值得单独强调。
复杂程序可能会使用数据数组,这些数据可以是整数或浮点数等简单项,也可以是结构体等复杂项。当数组较小时,理解它们并不困难,但如果你的任务需要在一个3000项的数组中找到第567项的值,该怎么办?
当然,你可以尝试手动计数项,或者将数组复制到文本编辑器中(导出数据)并导入到电子表格中,但在IDA中有更简单的方法。
调整数组大小
假设我们有一个包含88项的数组:
我们需要第25项。手动计数是可能的,但很繁琐,尤其是因为我们需要考虑dup
表达式中的重复项。有一种不同的方法来解决这个问题。因为项是从0开始计数的,我们有88项,所以最后一项的索引是87。为了使最后一项是第25项,我们可以将数组调整为26(25+1)项。为此,按*
键打开数组参数对话框并更改数组大小字段:
现在数组包含从0到25的26项,所以我们可以看到我们需要的项的值是35h
。
数组索引显示
或者,我们可以启用显示索引选项。
启用该选项后,第一个元素的索引会作为每行的注释显示:
虽然仍然不太明显,但从行的开头开始计数会更容易找到所需的元素。你还可以将每行项数值设置为1或其他较小的值,以便每行包含更少的元素,更容易找到所需的项。
索引和结构体数组
当你有一个结构体数组并且它们可以以简洁形式。
然而,如果你取消隐藏/折叠数组以详细形式显示结构体,每个字段都会带有数组表示法的注释:
立即关注【二进制磨剑】公众号
原文始发于微信公众号(二进制磨剑):IDA技巧(84)数组索引
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论