【发布时间】:2018-05-16 06:36:15
【问题描述】:
Objdump 可以判断二进制文件何时调用 GLIBC 函数,例如 printf:
$ objdump -d crackme03.64 -Mintel | grep printf
5c8: ff 25 12 0a 20 00 jmp QWORD PTR [rip+0x200a12] #200fe0 <__printf_chk@GLIBC_2.3.4>
但是,查看相同的地址,Radare 的帮助要小得多:
[0x000005c8]> pd 2
/ (fcn) sub.__cxa_finalize_224_5c8 8
| sub.__cxa_finalize_224_5c8 ();
| ; CALL XREF from 0x000007bc (sym.main)
| ; CALL XREF from 0x00000809 (sym.main)
| 0x000005c8 ff25120a2000 jmp qword [reloc.__cxa_finalize_224] ; [0x200fe0:8]=0 LEA reloc.__cxa_finalize_224 ; reloc.__cxa_finalize_224
\ 0x000005ce 6690 nop
有没有办法让Radare弄清楚这些函数对应什么?
【问题讨论】:
-
Objdump 使用与动态链接在运行时用于填充 GOT 值的相同符号表信息。那是你想让Radare2做的吗?如果是这样,更好的标题可能是“...使用符号表信息进行库调用”。您只是在分析 对 glibc 函数的调用,而不是 glibc 函数的代码。 (后者可能会因为惰性动态链接和
memset等函数的运行时调度而变得棘手。) -
已更改,感谢您的澄清
-
这个问题应该在 reverseengineering.stackexchange.com 你应该标记它以使其迁移。
标签: c assembly reverse-engineering glibc disassembly