首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从.so文件中提取C源代码?

如何从.so文件中提取C源代码?
EN

Stack Overflow用户
提问于 2011-05-09 13:55:55
回答 5查看 61.7K关注 0票数 19

我在以前开发的软件上工作,源代码被编译为linux共享库(.so),源代码不存在。有没有可以从linux共享库中提取源代码的工具?

谢谢,拉维

EN

回答 5

Stack Overflow用户

发布于 2011-05-09 13:58:52

没有。一旦你编译了你的代码,在二进制文件中就没有留下任何痕迹,只有机器代码。

有些人可能会提到反编译器,但那些不提取源代码的人,他们分析可执行文件并产生一些源代码,这些源代码应该与原始源代码具有相同的效果。

票数 19
EN

Stack Overflow用户

发布于 2011-05-09 17:22:45

您可以尝试反汇编目标代码并获得机器代码助记符。

获取英特尔语法汇编的objdump -D --disassembler-options intel sjt.o

获取AT&T语法程序集的objdump -D --disassembler-options att sjt.oobjdump -D sjt.o

但是一直没有找到原始的源代码。您可以尝试通过研究和重新构建这些部分来逆转这一过程。那将会是地狱般的痛苦。

票数 4
EN

Stack Overflow用户

发布于 2011-05-10 06:26:38

免责声明:我为Hex-Rays SA工作。

据我所知,Hex-Ray反编译器是唯一可以与、x86和ARM代码很好地配合使用的商业反编译器。你确实没有得到原始的源代码,但你得到了与之等同的东西。如果你没有剥离你的二进制文件,你甚至可能得到函数的名称,或者,如果幸运的话,甚至是类型和局部变量。然而,即使你没有符号信息,你也不必坚持第一轮的反编译。Hex-Rays反编译器是交互式的-您可以重命名任何变量或函数,更改变量类型,创建结构类型来表示原始代码中的结构,添加注释等。只要做一点工作,你就能恢复很多。通常,你需要的不是整个原始文件,而是一些关键的算法或函数-而这个Hex-Rays通常可以提供给你。

看看demo videoscomparison pages。还认为“盯着集会看”是一回事吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5933057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档