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

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

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

    应该不行。

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

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