我在以前开发的软件上工作,源代码被编译为linux共享库(.so),源代码不存在。有没有可以从linux共享库中提取源代码的工具?
谢谢,拉维
发布于 2011-05-09 13:58:52
没有。一旦你编译了你的代码,在二进制文件中就没有留下任何痕迹,只有机器代码。
有些人可能会提到反编译器,但那些不提取源代码的人,他们分析可执行文件并产生一些源代码,这些源代码应该与原始源代码具有相同的效果。
发布于 2011-05-09 17:22:45
您可以尝试反汇编目标代码并获得机器代码助记符。
获取英特尔语法汇编的objdump -D --disassembler-options intel sjt.o
获取AT&T语法程序集的objdump -D --disassembler-options att sjt.o
或objdump -D sjt.o
但是一直没有找到原始的源代码。您可以尝试通过研究和重新构建这些部分来逆转这一过程。那将会是地狱般的痛苦。
发布于 2011-05-10 06:26:38
免责声明:我为Hex-Rays SA工作。
据我所知,Hex-Ray反编译器是唯一可以与、、x86和ARM代码很好地配合使用的商业反编译器。你确实没有得到原始的源代码,但你得到了与之等同的东西。如果你没有剥离你的二进制文件,你甚至可能得到函数的名称,或者,如果幸运的话,甚至是类型和局部变量。然而,即使你没有符号信息,你也不必坚持第一轮的反编译。Hex-Rays反编译器是交互式的-您可以重命名任何变量或函数,更改变量类型,创建结构类型来表示原始代码中的结构,添加注释等。只要做一点工作,你就能恢复很多。通常,你需要的不是整个原始文件,而是一些关键的算法或函数-而这个Hex-Rays通常可以提供给你。
看看demo videos和comparison pages。还认为“盯着集会看”是一回事吗?
https://stackoverflow.com/questions/5933057
复制相似问题