我有两种由 C++ 构建的 ELF 文件。
.so
文件:
ELF 64 位 LSB 共享对象,x86-64,版本 1 (GNU/Linux),动态链接,BuildID[sha1]=5e751e769912aef28bc63b888e5e4904b867a180,剥离
和可执行文件:
ELF 64 位 LSB 可执行文件,x86-64,版本 1 (SYSV),动态链接,解释器 /lib64/ld-linux-x86-64.so.2,用于 GNU/Linux 2.6.32,BuildID[sha1]=1c215d8895277612d3f44382864df6df6d , 剥离
我对逆向工程完全陌生,我一直在试验objdump
,readelf
和nm
,但我仍然需要一些帮助。
我想从库中找到对一些函数的函数调用,而不执行二进制文件(即静态分析)。
通过上面的命令,我知道使用了符号,但我不知道将哪些参数传递给调用,或者函数被调用了多少次。
理想情况下,我想得到一些接近原始源代码的东西,例如
thelib::TheClass::theFunction("a", b, c);
但我明白这很难实现。我只要检索第一个参数是字符串文字(及其值)还是其他东西就满足了。
这是否可以使用现有工具(例如上述工具)(可能具有特定选项),或者我是否必须实现自己的某些东西?