Myslím, že výchozí hodnota v IDA 6.8 je hloubka křížového odkazu 16. Zvýšil jsem to nejprve na 32 a poté na 1024 a poté na 65535 (protože proč ne). Nic z toho nevedlo k tomu, že můj xref pracoval podle přání, takže nesmím něčemu rozumět.
Analyzuji soubor ARM ELF sdílených objektů. Funkce, na kterou se dívám, je volána funkcí, na kterou odkazuje offset v segmentu .init_array (nejste si jisti, zda je to relevantní). Posun, který chci vidět všechny odkazy, je:
.bss: 00424778; void * dword_424778.bss: 00424778 dword_424778% 4
Původně byl identifikován jako unk_424778, ale stiskl jsem Y a nastavil typ na „void *“.
Hex Rays zobrazuje toto přiřazení:
dword_424778 = &_sF;
Pomocí HexRaysCodeXplorer stiskem J skočíte zpět k demontáži z Hex Rays. Dostalo mě to na řádek 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 moc dobře neznám, ale četl jsem, že STMIA R5, {R3, R7} bude mít za následek nepředvídatelné chování kvůli do reglistu ({R3, R7}) začínajícího registrem s nižším číslem než Rn (R5).
Může problém souviset s tím, že dword_424778 je v sekci .bss?