C++的反编译获取源码跟 Python 、 Java 、Erlang 等相比,难度如何?

2017-03-03 00:52:16 +08:00
 zzgy
2513 次点击
所在节点    问与答
3 条回复
ryd994
2017-03-03 01:35:30 +08:00
难不少
首先变量名就看不出,除非编译的时候加了 debug 信息。而 pyc 基本上就是 py 的直接翻译,同时去掉注释
其次 C++编译的时候一般会优化,优化过的代码和源代码可以天差地别。 Java 编译的时候会有少量优化,但为了保证可移植性,大多数黑科技优化是留给 runtime 或者 jit 的,因为不可能在编译时就知道目标平台有哪些优化可用(指令集,硬件架构等)
coderluan
2017-03-03 10:40:06 +08:00
#1 说的对,但是要点其实是 [编译型语言] 和 [解释型语言] 。
编译型语言,基本都是无法获得源码的,因为经过优化源码已经没了,只有优化过的代码, 并且他们之间的关系并不是一对一的。优化越大,难度越大。
所以 C++比 Java 难,解释型的 Python 和他们不是一个级别的。
Karblue
2017-03-03 22:15:11 +08:00
c++ 编译出来的是二进制。反汇编出来的是汇编。只能看出代码流程和大概功能。复杂。其他的都是上层有个虚拟机。可以反编译出相对完整的代码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/344483

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX