在IDA视图中,我看到了(glb_SomeVar是字节数组):在同一个功能中:

cmp al, glb_SomeVar+22h


是否可以解决此问题,例如使IDA重新分析所选功能甚至整个代码?我猜在其他地方,也缺少交叉引用。

#1 楼

编辑->全局->交叉参考->交叉参考深度。视情况增加。

评论


噢,不知道这个功能。谢谢

–k0ng0
13年5月29日在15:21

#2 楼

我认为IDA 6.8中的默认值是交叉参考深度16。我先将其增加到32,然后又增加到1024,再增加到65535(因为为什么不这样)。这些都没有导致我的外部参照正常工作,所以我一定不明白。

我正在分析ARM ELF共享对象文件。我正在查看的函数由.init_array段中的偏移量引用的函数调用(不确定是否相关)。我要查看的所有偏移量是:

.bss:00424778 ; void *dword_424778
.bss:00424778 dword_424778    % 4


它最初被标识为unk_424778,但我按了Y并将类型设置为“ void *”。 />
Hex Rays显示此作业:

    dword_424778 = &_sF;


使用HexRaysCodeXplorer,我按J跳回到从Hex Rays拆卸的状态。它使我进入0026D69C行:

...
.text:0026D668                 LDR             R5, [R4,R2] ; unk_424758
.text:0026D66C                 ADD             R0, R5, #0x1C
.text:0026D670                 STMIA           R5, {R3,R7}
.text:0026D674                 STR             R7, [R5,#8]
.text:0026D678                 STR             R7, [R5,#0xC]
.text:0026D67C                 STR             R7, [R5,#0x10]
.text:0026D680                 STR             R7, [R5,#0x14]
.text:0026D684                 STR             R7, [R5,#0x18]
.text:0026D688                 BL              sub_26F42C
.text:0026D68C                 LDR             R2, =(off_374A30 - 0x374C20)
.text:0026D690                 LDR             R3, [SP,#0x38+var_34]
.text:0026D694                 STR             R9, [R5]
.text:0026D698                 STR             R8, [R5,#0x24]
.text:0026D69C                 STR             R11, [R5,#0x20]
...


我不太了解ARM,但我读到STMIA R5 {R3,R7}会导致无法预测的行为由于注册表({R3,R7})以比Rn(R5)低的数字开头。