1
beordle 2018-12-12 19:14:34 +08:00
和 vmp 比较像,虚拟机加壳,应该是目前最强的了吧
|
2
Mohanson 2018-12-12 19:50:16 +08:00 via Android
然而你名字都没拼对。
|
4
hjc4869 2018-12-12 20:01:00 +08:00
只是目前相关工具还不成熟而已。
|
5
hakono OP @hjc4869 是的,不过按照现在 WebAssembly 的普及速度来看,相关工具目测完善还要好几年。
一个前端 js 代码能在几年内达到一定的安全性能已经很好了 |
6
gam2046 2018-12-12 20:35:36 +08:00
其实现在浏览器正在慢慢充当一个操作系统的角色,浏览器本身复杂度越来越高,网页设计也越来越复杂。
|
7
heimeil 2018-12-12 20:43:36 +08:00
Rust 有个基于 WebAssembly 的项目,直接映射了所有 JS 对象,完全用 Rust 实现逻辑,JS 只是加载 wasm 的作用。
https://github.com/DenisKolodin/yew |
8
Nasei 2018-12-12 21:11:38 +08:00
有可能他用 wasm 并不是为了加密, 像 u3d 做网页版就是把 c#编译成 wasm 吧?
|
9
hakono OP @Nasei 是的,大部分用到 WebAssembly 的游戏都是 u3d 的。但从结果来看,编译成 wasm 后,想反向游戏代码难度的确比起 js 混淆是提升了一个量级的。
不过保护代码的确本来就是 WebAssembly 设计的目的之一。 |
10
zyEros 2018-12-12 21:21:27 +08:00
很成熟了...都用得腻了
|
11
mywaiting 2018-12-12 23:12:53 +08:00
我觉得如果浏览器所有的 Native API 提供一个类似 Proxy ( https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy ) 这样的实现,那么不用怎么逆向你的 WebAssembly 逻辑实现,分析出你的程序调用流也是分分中的事情。
有程序调用流,再来一个个逆向 WebAssembly 程序用到的数据结构 如果还能提供浏览器自身的内存映射结构出来让 IDA 搞,那目测也没有啥秘密可言~ |
12
realityone 2018-12-12 23:14:46 +08:00 via iPhone
为什么不尝试直接调用呢?
|
13
wdlth 2018-12-12 23:36:42 +08:00
因为是从 LLVM IR 来的,本身就不容易分析。
|
14
wwwe 2018-12-13 00:01:53 +08:00 via Android
然而 js 并不能转换为 asm.js 或者 wasm 啊
|
15
hakono OP @mywaiting 是的,的确是个思路。
但问题还是回到了我 9 楼提到的等各种工具想法落实出来,也不知道要等几年。 一个前端 js 代码能在几年内提供一个比单纯混淆要高很多的反向难度的话已经够了。 @realityone 单纯直接调用有时不一定能解决所有问题啊。 |
16
secondwtq 2018-12-13 01:15:28 +08:00
看了前两段,这无非是顺便利用了“现在浏览器调试工具很不适合技术发展趋势”的缺陷而已
Google 和 Mozilla 等厂一方面鼓吹强行要在 Web 上做乱七八糟的应用,同时用 Web 技术做了自己的调试工具,结果拿来调试复杂应用的效果一塌糊涂,完美打了自己的脸 别说游戏,只要随便引几个稍微大点的 npm 包做个 bundle 就够卡死了 借地发点无关紧要的牢骚 ... |
17
secondwtq 2018-12-13 01:18:00 +08:00
哪需要 41 MB,只要不到 10MB 就足够卡到需要载入时强行 kill 进程,调试到半路强行 kill 进程,跑着跑着两个进程都需要强行 kill ...
|
18
hakono OP @secondwtq 哈哈,深有感触。js 调试比起其他语言真的是痛苦。 甚至连 js 都不用,在调试工具的 Network 里显示个很庞大的 json 就能直接让开发工具炸了。
|
20
flyzero 2018-12-13 08:39:32 +08:00 via Android
wasm 也需要比较新的游览器支持的,开发网站为了兼容,现在还是很少用 wasm 吧
|
21
reus 2018-12-13 09:30:13 +08:00
这就是做传统逆向和协议分析的人擅长的了
所以说 wasm 必然会让一部分只懂 js 的程序员失业,别以为前端就只能用 js |
22
no1xsyzy 2018-12-13 15:21:10 +08:00
没用过 WebAssembly。难道还可以加壳,加花指令吗?
说真的,能加花吗? |
23
zyEros 2018-12-13 17:25:52 +08:00
唉...你们没想过用 vscode 等工具来调试大的 js bundle 么....谁说 debug 一定要在 devtool 里面了
|
24
zyEros 2019-02-15 16:59:29 +08:00
我们研发了最新的 JS 保护代码方案,https://github.com/qiaozi-tech/SecurityWorker,敬请期待
|