如何找到对具有内存段的地址的所有引用?

逆向工程 雷达2
2021-06-14 10:40:26

如果我想找到fs:[0x28]有关如何使用radare2 进行操作的所有参考资料例如,

0x000006b5      64488b042528.  mov rax, qword fs:[0x28]    ; [0x28:8]=0x1978 ; '(' ; "x\x19"

我想找到所有引用的行fs:[0x28],就像上面的那一行这个地址被用作stack canary,我特别有兴趣看看从中读取了什么。

2个回答

似乎您可以仅使用地址找到写入它的内容axt查找对此地址的数据/代码引用0x28我仍然不确定如何限定内存段,

[0x000006aa]> axt 0x28
sym.foo 0x6b5 [DATA] mov rax, qword fs:[0x28]

但这不起作用,

[0x000006aa]> axt fs:[0x28]
entry0; [14] -r-x section size 514 named .text 0x5a0 [CODE] xor ebp, ebp
sym.__libc_csu_init 0x779 [CALL] call qword [r12 + rbx*8]

通过查看此功能的实现方式,似乎没有其他选项(但请在 Telegram 上询问r2)。它只需要一个被转换为数字的字符串,仅此而已。如果你想查看所有fs:[0x28]被使用的地方,为什么不搜索这部分操作码呢?

[0x004049a0]> /c fs:[0x28]
0x00402a19   # 9: mov rax, qword fs:[0x28]
0x00403f81   # 9: xor rcx, qword fs:[0x28]
0x00404dc1   # 9: mov rax, qword fs:[0x28]
0x00404de6   # 9: xor rdx, qword fs:[0x28]
0x00405431   # 9: mov rax, qword fs:[0x28]
0x004054ea   # 9: xor rbx, qword fs:[0x28]
...