如何反编译写好的前端代码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Zach369

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

  •  1
     
  •   Zach369 2020 年 6 月 9 日 7614 次点击
    这是一个创建于 2141 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    应该不行。

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

    从这个角度来说,基本不可能回溯成 『满足 raw 功能性的 raw 』。最多是满足我当前需要的 jpg 本质的 raw 后缀名文件。
    Mutoo
        14
    Mutoo  
       2020 年 6 月 10 日
    尝试一下 .map 文件,如果存在的话,下载下来后,可以用这个工具还原出带目录结构的源码
    https://github.com/mutoo/webpack-sourcemap-unpacker#
    zqguo
        15
    zqguo  
       2020 年 6 月 10 日
    你在想啥呢,大兄弟 ?
    gimp
        16
    gimp  
       2020 年 6 月 10 日   1
    视频打了马赛克能还原吗?
    GzhiYi
        17
    GzhiYi  
       2020 年 6 月 10 日 via iPhone
    怎么可能??这本身就是不可逆的。
    takemeaway
        18
    takemeaway  
       2020 年 6 月 10 日
    前端还需要反编译?那叫做混淆还原吧?
    没见过前端有多难仿制的东西。
    再说了,打包后的也是直接复制能用的。
    cweijan
        19
    cweijan  
       2020 年 6 月 10 日
    就像 MD5 一样, 编译后已经丢失了原来的信息, 所以是不可能的, 如果是加密, 解析后看到的代码也是压缩的
    BreezeInWind
        20
    BreezeInWind  
       2020 年 6 月 10 日
    var nameIsOne= 1,nameIsTwo = 2 ;
    打包混淆后
    var a = 1, b = 2
    你怎么去还原回来 nameIsOne 跟 nameIsTwo
    black11black
        21
    black11black  
       2020 年 6 月 10 日
    @ibegyourpardon 所谓丢信息主要是 dct 变换精度,以及 quantization 的问题。已知原图片信息,量化表是可猜的,也许可以用某种神奇的方式脑补出丢失的高频信息,我觉得没啥问题。另外就是 cbcr 平面的分辨率问题,这个更好解决,现在超分这么多,还有 luma 辅助判断
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1585 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 230ms UTC 16:43 PVG 00:43 LAX 09:43 JFK 12:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86