首页
社区
课程
招聘
[IDA使用技巧]#010: 处理数组
发表于: 2024-3-14 11:26 3857

[IDA使用技巧]#010: 处理数组

2024-3-14 11:26
3857

翻译:梦幻的彼岸

原文地址:https://hex-rays.com/blog/igor-tip-of-the-week-10-working-with-arrays/

IDA中使用数组表示同一类型的多个项目的序列:基本类型(字节、字、双字等)或复杂类型(例如结构)。

创建数组

创建一个数组:

  1. 创建第一个项目;
  2. 从上下文菜单中选择 "Array...[数组]",或按 *;
  3. 至少填写 "Array size[数组大小"]字段,然后单击 "OK[确定]"。


步骤 1 是可选的;如果当前位置没有数据项,则将创建一个字节数组。

提示:如果在按下 * 之前选择了一个范围,数组大小 将预先填入符合所选范围的项目数。


数组参数

数组参数会影响数组在列表中的显示方式,可以在首次创建数组时设置,也可以在之后的任何时间按 * 键设置。


  • 数组大小:数组中元素的总数;
  • 一行中的项目数:一行中要打印的项目数(最多)。0 表示打印适合反汇编行的最大数量;
  • 元素打印宽度:每个元素打印多少个字符。与前一个参数一起可用于将数组格式化为漂亮的表格。例如
    每行 8 项,打印宽度-1:
    db 1, 2, 3, 4, 5, 6, 7, 8
    db 9, 10, 11, 12, 13, 14, 15, 16
    db 17, 18, 19, 20, 21, 22, 23, 24
    db 25, 255, 255, 255, 255, 255, 255, 26
    db 27, 28, 29, 30, 31, 32, 33, 34
    db 35, 36, 37, 38, 39, 40, 41, 42
    print width 0:
    db   1,  2,  3,  4,  5,  6,  7,  8
    db   9, 10, 11, 12, 13, 14, 15, 16
    db  17, 18, 19, 20, 21, 22, 23, 24
    db  25,255,255,255,255,255,255, 26
    db  27, 28, 29, 30, 31, 32, 33, 34
    db  35, 36, 37, 38, 39, 40, 41, 42
    print width 5:
    db     1,    2,    3,    4,    5,    6,    7,    8
    db     9,   10,   11,   12,   13,   14,   15,   16
    db    17,   18,   19,   20,   21,   22,   23,   24
    db    25,  255,  255,  255,  255,  255,  255,   26
    db    27,   28,   29,   30,   31,   32,   33,   34
    db    35,   36,   37,   38,   39,   40,   41,   42
  • 使用 "dup "结构:对于支持该结构的汇编程序,具有相同值的重复项目将合并为一个 dup 表达式,而不是单独打印每个项目;
  • dup off:  db 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh
  • dup on:db 6 dup(0FFh)
  • 有符号元素:整数项目将被视为有符号数字;
  • 显示索引:每一行的第一个项目的数组索引将打印在注释中。
  • 创建为数组:如果未选中,IDA 将把数组转换为单独的项。

创建多个字符串字面形式


数组参数对话框中的最后一个选项在处理多个字符串字面量时非常有用。例如,如果我们有这样一个字符串表:

首先,创建一个字符串。

然后,使用前面介绍的方法之一选中它和下面的所有字符串。

调用Edit[编辑] > "Array...[数组]"或按 *。数组的大小将设置为选区的总长度。在对话框中取消选中 "Create as array创建为数组"。单击 "确定"。



我们会得到一个格式很好的字符串表!

这种方法也适用于 Unicode (UTF-16) 字符串。




[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 3070
活跃值: (30876)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2024-3-18 09:35
1
游客
登录 | 注册 方可回帖
返回
//