Rav*_*avi 16 c linux decompiling extract shared-libraries
我正在研究以前开发的软件,源代码编译为linux共享库(.so),源代码不存在.有没有可以从linux共享库中提取源代码的工具?
谢谢,拉维
cni*_*tar 16
没有.编译代码后,二进制文件中没有剩余的痕迹,只有机器代码.
有些人可能会提到反编译器,但那些没有提取源,他们分析可执行文件并产生一些应该具有与原始版本相同效果的源.
您可以尝试反汇编目标代码并获取机器码助记符。
objdump -D --disassembler-options intel sjt.o 获取 Intel 语法汇编
objdump -D --disassembler-options att sjt.o或objdump -D sjt.o获取 AT&T 语法汇编
但原始的源代码永远无法找到。您可以尝试通过研究和重建这些部分来扭转该过程。那将是地狱般的痛苦。
免责声明:我在 Hex-Rays SA 工作。
Hex-Rays 反编译器是我所知道的唯一一款可以与现实生活中的x86 和 ARM 代码配合良好的商用反编译器。确实,你没有得到原始来源,但你得到了与之相当的东西。如果您没有剥离二进制文件,您甚至可能会获得函数名称,或者如果幸运的话,甚至可以获得类型和局部变量。然而,即使你没有符号信息,你也不必坚持第一轮反编译。Hex-Rays 反编译器是交互式的- 您可以重命名任何变量或函数、更改变量类型、创建结构类型来表示原始代码中的结构、添加注释等。只需做一点工作,您就可以恢复很多。通常,您需要的不是整个原始文件,而是一些关键算法或函数 - 而这个 Hex-Rays 通常可以为您提供。