zzgy
V2EX  ›  问与答

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

  •  
  •   zzgy · Mar 3, 2017 · 3501 views
    This topic created in 3405 days ago, the information mentioned may be changed or developed.
    3 replies    2017-03-03 22:15:11 +08:00
    ryd994
        1
    ryd994  
       Mar 3, 2017   ❤️ 1
    难不少
    首先变量名就看不出,除非编译的时候加了 debug 信息。而 pyc 基本上就是 py 的直接翻译,同时去掉注释
    其次 C++编译的时候一般会优化,优化过的代码和源代码可以天差地别。 Java 编译的时候会有少量优化,但为了保证可移植性,大多数黑科技优化是留给 runtime 或者 jit 的,因为不可能在编译时就知道目标平台有哪些优化可用(指令集,硬件架构等)
    coderluan
        2
    coderluan  
       Mar 3, 2017
    #1 说的对,但是要点其实是 [编译型语言] 和 [解释型语言] 。
    编译型语言,基本都是无法获得源码的,因为经过优化源码已经没了,只有优化过的代码, 并且他们之间的关系并不是一对一的。优化越大,难度越大。
    所以 C++比 Java 难,解释型的 Python 和他们不是一个级别的。
    Karblue
        3
    Karblue  
       Mar 3, 2017
    c++ 编译出来的是二进制。反汇编出来的是汇编。只能看出代码流程和大概功能。复杂。其他的都是上层有个虚拟机。可以反编译出相对完整的代码
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5343 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 05:47 · PVG 13:47 · LAX 22:47 · JFK 01:47
    ♥ Do have faith in what you're doing.