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