• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Zach369
V2EX  ›  程序员

如何反编译写好的前端代码?

  •  1
     
  •   Zach369 · Jun 9, 2020 · 7802 views
    This topic created in 2208 days ago, the information mentioned may be changed or developed.

    今天同事问了一个比较好的问题.

    web 前端的代码 经过编译混淆,能不能反编译出源代码? 这个源代码是 有目录结构的.

    有知道的大佬,说说你的技巧.

    Supplement 1  ·  Jun 10, 2020
    多谢大家的意见.... 昨天研究了下.终于懂了....
    21 replies    2020-06-10 18:47:22 +08:00
    noe132
        1
    noe132  
       Jun 9, 2020
    最简单的
    // a.js
    console.log(1)

    // b.js
    import './a.js'
    console.log(2)

    经过 webpack concatenate 或者 rollup 打包后
    生成的 chunk 文件内容是
    console.log(1)
    console.log(2)

    如果没有 sourcemap,你是绝对不可能还原出目录结构的。
    pinkSlime
        2
    pinkSlime  
       Jun 9, 2020
    想啥呢 还比较好的问题, 这是个根本没有意义的问题好么
    打包过程是不可逆的,这中间有些信息丢掉了 找不回来了 不然要 sourcemap 干嘛呢
    你能把 jpg 还原成 raw 吗
    superrichman
        3
    superrichman  
       Jun 9, 2020 via iPhone
    给你一杯橘子汁,那你能帮帮我还原一个橘子吗?
    这种不可逆的压缩+混淆已经丢失了一些原始的信息。
    youla
        4
    youla  
       Jun 9, 2020
    审查元素不是看得到吗?
    youla
        5
    youla  
       Jun 9, 2020
    没注意看题,我以为你要借鉴别人前端的某些地方
    Vegetable
        6
    Vegetable  
       Jun 9, 2020
    不行
    压缩的本身是丢弃尽可能多的,对于机器无用的信息,目录信息恰恰如此。往往还会往里边添加点垃圾增加安全性。
    如果你足够的耐心,并且有足够的经验,可以将前端代码人工还原一遍,也可能还原的非常 nice,但是不可能和原始目录一样。
    kop1989
        7
    kop1989  
       Jun 9, 2020 via iPhone
    如果要逆混淆,可以,但是还需要和原项目目录结构一致?这是想达成什么目的?
    AV1
        8
    AV1  
       Jun 9, 2020
    最多只能通过 js beautify 把代码格式化好。
    想得到“有目录结构的”代码,你只能期待站长犯傻不小心把 source map 发布上线,不然就是做梦。
    black11black
        9
    black11black  
       Jun 9, 2020
    @pinkSlime 杠一下,jpg 还原成 raw 现在技术条件下没准还真能做到(满足 raw 功能性的“raw”)
    no1xsyzy
        10
    no1xsyzy  
       Jun 10, 2020
    @black11black #9 我也杠一下,那直接用 js2js 反编译一下也行,已经确定能做到了
    js2js 比较复杂,类 unix 下也可以用 cat 取代。
    XanderChen
        11
    XanderChen  
       Jun 10, 2020 via Android
    有你研究怎么反编译的功夫,都不如直接仿造一个…
    zk8802
        12
    zk8802  
       Jun 10, 2020 via iPhone
    可以试试 jsnice
    ibegyourpardon
        13
    ibegyourpardon  
       Jun 10, 2020
    @black11black 路人插入回杠。

    应该不行。

    raw → jpg 就是个丢弃信息( even the information is useful )的过程。

    从这个角度来说,基本不可能回溯成 『满足 raw 功能性的 raw 』。最多是满足我当前需要的 jpg 本质的 raw 后缀名文件。
    Mutoo
        14
    Mutoo  
       Jun 10, 2020
    尝试一下 .map 文件,如果存在的话,下载下来后,可以用这个工具还原出带目录结构的源码
    https://github.com/mutoo/webpack-sourcemap-unpacker#
    zqguo
        15
    zqguo  
       Jun 10, 2020
    你在想啥呢,大兄弟 ?
    gimp
        16
    gimp  
       Jun 10, 2020   ❤️ 1
    视频打了马赛克能还原吗?
    GzhiYi
        17
    GzhiYi  
       Jun 10, 2020 via iPhone
    怎么可能??这本身就是不可逆的。
    takemeaway
        18
    takemeaway  
       Jun 10, 2020
    前端还需要反编译?那叫做混淆还原吧?
    没见过前端有多难仿制的东西。
    再说了,打包后的也是直接复制能用的。
    cweijan
        19
    cweijan  
       Jun 10, 2020
    就像 MD5 一样, 编译后已经丢失了原来的信息, 所以是不可能的, 如果是加密, 解析后看到的代码也是压缩的
    BreezeInWind
        20
    BreezeInWind  
       Jun 10, 2020
    var nameIsOne = 1,nameIsTwo = 2 ;
    打包混淆后
    var a = 1, b = 2
    你怎么去还原回来 nameIsOne 跟 nameIsTwo
    black11black
        21
    black11black  
       Jun 10, 2020
    @ibegyourpardon 所谓丢信息主要是 dct 变换精度,以及 quantization 的问题。已知原图片信息,量化表是可猜的,也许可以用某种神奇的方式脑补出丢失的高频信息,我觉得没啥问题。另外就是 cbcr 平面的分辨率问题,这个更好解决,现在超分这么多,还有 luma 辅助判断
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   929 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 19:13 · PVG 03:13 · LAX 12:13 · JFK 15:13
    ♥ Do have faith in what you're doing.