如何让 IDA 看到字符串引用?

逆向工程 艾达 字符串
2021-07-09 00:27:21

IDA反汇编了以下代码:

seg019:C0292548             loc_C0292548                            ; CODE XREF: sub_C0292414+11Cj
seg019:C0292548 02 00 54 E3                 CMP     R4, #2
seg019:C029254C 0F 00 00 1A                 BNE     loc_C0292590
seg019:C0292550 F0 30 9F E5                 LDR     R3, =0xC0298608
seg019:C0292554 02 2C A0 E3+                MOV     R2, 0x205
seg019:C029255C 00 30 93 E5                 LDR     R3, [R3]
seg019:C0292560 02 00 53 E1                 CMP     R3, R2
seg019:C0292564 04 00 00 1A                 BNE     loc_C029257C
seg019:C0292568 D4 00 9F E5                 LDR     R0, =0xC02860F0
seg019:C029256C 53 FC FF EB                 BL      sub_C02916C0
seg019:C0292570 2B 30 A0 E3                 MOV     R3, #0x2B
seg019:C0292574 7F 20 A0 E3                 MOV     R2, #0x7F
seg019:C0292578 08 00 00 EA                 B       loc_C02925A0

如果我点击 enter on 0xC02860F0,它会带我:

seg019:C02860F0 50                          DCB 0x50 ; P
seg019:C02860F1 00                          DCB    0
seg019:C02860F2 6F                          DCB 0x6F ; o
seg019:C02860F3 00                          DCB    0
seg019:C02860F4 77                          DCB 0x77 ; w
seg019:C02860F5 00                          DCB    0
seg019:C02860F6 65                          DCB 0x65 ; e
seg019:C02860F7 00                          DCB    0
seg019:C02860F8 72                          DCB 0x72 ; r
seg019:C02860F9 00                          DCB    0
[...]

这显然是一个 UTF-16 little-endian 字符串。但是,IDA 尚未创建任何适当的交叉引用(字符串中的 ^X 未列出任何内容)。我怎样才能让它做到这一点?当我第一次加载代码时,它似乎已经自动完成了,但是从那时起我已经加载了额外的段并且它没有为它们做同样的事情。我尝试重新运行自动分析,但没有任何效果。

我想我可以使用 IDAPython 浏览二进制文件并手动创建对“字符串”窗口中列出的任何内容的引用,但是鉴于 IDA 通常为我执行此操作,这似乎非常麻烦。

有任何想法吗?

2个回答

0xC02860F0点击Alt+A并选择 unicode 将其定义为 unicode 字符串。在您这样做之后,IDA 应该会识别出该引用。

O(或Ctrl+O,取决于分段设置)。