今天同事问了一个比较好的问题.
web 前端的代码 经过编译混淆,能不能反编译出源代码? 这个源代码是 有目录结构的.
有知道的大佬,说说你的技巧.
|  |      1noe132      2020-06-09 17:55:42 +08:00 最简单的 // a.js console.log(1) // b.js import './a.js' console.log(2) 经过 webpack concatenate 或者 rollup 打包后 生成的 chunk 文件内容是 console.log(1) console.log(2) 如果没有 sourcemap,你是绝对不可能还原出目录结构的。 | 
|  |      2pinkSlime      2020-06-09 18:21:49 +08:00 想啥呢 还比较好的问题, 这是个根本没有意义的问题好么 打包过程是不可逆的,这中间有些信息丢掉了 找不回来了 不然要 sourcemap 干嘛呢 你能把 jpg 还原成 raw 吗 | 
|      3superrichman      2020-06-09 18:35:31 +08:00 via iPhone 给你一杯橘子汁,那你能帮帮我还原一个橘子吗? 这种不可逆的压缩+混淆已经丢失了一些原始的信息。 | 
|  |      4youla      2020-06-09 18:40:47 +08:00 审查元素不是看得到吗? | 
|  |      5youla      2020-06-09 18:41:34 +08:00 没注意看题,我以为你要借鉴别人前端的某些地方 | 
|  |      6Vegetable      2020-06-09 18:45:44 +08:00 不行 压缩的本身是丢弃尽可能多的,对于机器无用的信息,目录信息恰恰如此。往往还会往里边添加点垃圾增加安全性。 如果你足够的耐心,并且有足够的经验,可以将前端代码人工还原一遍,也可能还原的非常 nice,但是不可能和原始目录一样。 | 
|  |      7kop1989      2020-06-09 18:47:28 +08:00 via iPhone 如果要逆混淆,可以,但是还需要和原项目目录结构一致?这是想达成什么目的? | 
|  |      8AV1      2020-06-09 21:00:03 +08:00 最多只能通过 js beautify 把代码格式化好。 想得到“有目录结构的”代码,你只能期待站长犯傻不小心把 source map 发布上线,不然就是做梦。 | 
|  |      9black11black      2020-06-09 23:16:04 +08:00 @pinkSlime 杠一下,jpg 还原成 raw 现在技术条件下没准还真能做到(满足 raw 功能性的“raw”) | 
|  |      10no1xsyzy      2020-06-10 01:53:12 +08:00 @black11black #9 我也杠一下,那直接用 js2js 反编译一下也行,已经确定能做到了 js2js 比较复杂,类 unix 下也可以用 cat 取代。 | 
|      11XanderChen      2020-06-10 03:52:23 +08:00 via Android 有你研究怎么反编译的功夫,都不如直接仿造一个… | 
|      12zk8802      2020-06-10 05:33:00 +08:00 via iPhone 可以试试 jsnice | 
|      13ibegyourpardon      2020-06-10 08:29:51 +08:00 @black11black 路人插入回杠。  应该不行。 raw → jpg 就是个丢弃信息( even the information is useful )的过程。 从这个角度来说,基本不可能回溯成 『满足 raw 功能性的 raw 』。最多是满足我当前需要的 jpg 本质的 raw 后缀名文件。 | 
|  |      14Mutoo      2020-06-10 08:33:27 +08:00 尝试一下 .map 文件,如果存在的话,下载下来后,可以用这个工具还原出带目录结构的源码 https://github.com/mutoo/webpack-sourcemap-unpacker# | 
|      15zqguo      2020-06-10 08:35:20 +08:00 你在想啥呢,大兄弟 ? | 
|  |      16gimp      2020-06-10 08:40:16 +08:00  1 视频打了马赛克能还原吗? | 
|      17GzhiYi      2020-06-10 08:46:52 +08:00 via iPhone 怎么可能??这本身就是不可逆的。 | 
|  |      18takemeaway      2020-06-10 09:20:43 +08:00 前端还需要反编译?那叫做混淆还原吧? 没见过前端有多难仿制的东西。 再说了,打包后的也是直接复制能用的。 | 
|  |      19cweijan      2020-06-10 10:50:25 +08:00 就像 MD5 一样, 编译后已经丢失了原来的信息, 所以是不可能的, 如果是加密, 解析后看到的代码也是压缩的 | 
|  |      20BreezeInWind      2020-06-10 11:02:26 +08:00 var nameIsOne = 1,nameIsTwo = 2 ; 打包混淆后 var a = 1, b = 2 你怎么去还原回来 nameIsOne 跟 nameIsTwo | 
|  |      21black11black      2020-06-10 18:47:22 +08:00 @ibegyourpardon 所谓丢信息主要是 dct 变换精度,以及 quantization 的问题。已知原图片信息,量化表是可猜的,也许可以用某种神奇的方式脑补出丢失的高频信息,我觉得没啥问题。另外就是 cbcr 平面的分辨率问题,这个更好解决,现在超分这么多,还有 luma 辅助判断 |