【问题标题】:How to get Radare2 to use symbol table information for library calls?如何让 Radare2 使用符号表信息进行库调用?
【发布时间】: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


【解决方案1】:

如果您使用 git 的最新版本,它应该可以工作。

Radare2 的开发速度非常快——项目每天都在发展,因此建议使用当前的 git 版本。更新您的版本,它应该可以解决您的问题:

$ git clone https://github.com/radare/radare2.git
$ cd radare2
$ ./sys/install.sh

【讨论】:

  • 是的,在 IRC 中得到了相同的答案,不幸的是它是正确的。如果有适用于 Linux 发行版的软件包(例如 PPA、可供下载的 RPM 等),那就太好了。
猜你喜欢
  • 2011-11-19
  • 1970-01-01
  • 2019-07-24
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多