V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zzgy
V2EX  ›  问与答

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

  •  
  •   zzgy · 2017-03-03 00:52:16 +08:00 · 2704 次点击
    这是一个创建于 2858 天前的主题,其中的信息可能已经有所发展或是发生改变。
    3 条回复    2017-03-03 22:15:11 +08:00
    ryd994
        1
    ryd994  
       2017-03-03 01:35:30 +08:00   ❤️ 1
    难不少
    首先变量名就看不出,除非编译的时候加了 debug 信息。而 pyc 基本上就是 py 的直接翻译,同时去掉注释
    其次 C++编译的时候一般会优化,优化过的代码和源代码可以天差地别。 Java 编译的时候会有少量优化,但为了保证可移植性,大多数黑科技优化是留给 runtime 或者 jit 的,因为不可能在编译时就知道目标平台有哪些优化可用(指令集,硬件架构等)
    coderluan
        2
    coderluan  
       2017-03-03 10:40:06 +08:00
    #1 说的对,但是要点其实是 [编译型语言] 和 [解释型语言] 。
    编译型语言,基本都是无法获得源码的,因为经过优化源码已经没了,只有优化过的代码, 并且他们之间的关系并不是一对一的。优化越大,难度越大。
    所以 C++比 Java 难,解释型的 Python 和他们不是一个级别的。
    Karblue
        3
    Karblue  
       2017-03-03 22:15:11 +08:00
    c++ 编译出来的是二进制。反汇编出来的是汇编。只能看出代码流程和大概功能。复杂。其他的都是上层有个虚拟机。可以反编译出相对完整的代码
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   929 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 22:43 · PVG 06:43 · LAX 14:43 · JFK 17:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.