关于前端代码逻辑的保护, sablejs 你值得拥有

2021-06-08 16:32:28 +08:00
 zyEros

如果按照提升破解成本的目标,自定义字节码执行是一条很靠谱的路径,有需要的可以参考: https://github.com/sablejs/sablejs

3899 次点击
所在节点    浏览器
12 条回复
yushiro
2021-06-08 17:16:54 +08:00
不知道能都和 jq 之类的第三方库兼容
iikebug
2021-06-08 17:36:41 +08:00
前端搞代码保护都是虚的, 重要逻辑放 wasm 搞搞就好了
newmlp
2021-06-08 17:45:12 +08:00
保护逻辑有毛用,直接找到输入输出,黑箱调用就行了,干嘛要搞清楚里面的逻辑
zyEros
2021-06-08 18:07:35 +08:00
@newmlp 有点想当然了,你可以看看这个 https://github.com/sablejs/sablejs/issues/10
zyEros
2021-06-08 18:08:53 +08:00
@iikebug 一个道理,但是 wasm 要去调用外部 DOM BOM 的逻辑太透明
zyEros
2021-06-08 18:12:29 +08:00
@yushiro 他也沙盒的作用
no1xsyzy
2021-06-08 19:33:52 +08:00
@zyEros 看了下你这 issue10,很明显调用外部也是近乎透明的。只要破解者传给你的全都是被包装过的
wraps(wrapped) => (...args) => {debugger; let result=wrapped(...args); debugger; return result}
别的不管,任何需要调用环境的加密,直接覆盖你的 preamble 就行了。

而且 vm 形式理论上可以任意进行状态回归( deepcopy 一下),而且边界清晰得多,实际上当黑箱用比混淆过的代码更方便了。

更不用说,你认为应当减少与外界的交互?正确的方法是拿大量无效的外界交互去干扰。

就好比你分发 bin 也应当默认 strace 存在比较好。大部分应用重写、甚至写得更好真不是什么难事儿。所谓要『保护』的东西其实根本就不存在,保护了个寂寞。
3dwelcome
2021-06-08 19:47:41 +08:00
我一直想吐槽,楼主来 V2 宣传过几次了,可 github 代码又不开源。。
3dwelcome
2021-06-08 19:53:01 +08:00
还有讨论到前端加密,V2 一直挺激烈的。

我个人感悟就是,用程序代码生成一个一次性的虚拟机,关键逻辑只执行一次性代码,这样相对而言安全一些。

让黑客无法静态调试,依赖虚拟机运行的逻辑代码,也是服务器按需下载。下次请求的虚拟机指令就变了,下载逻辑代码自然也会变。
matrix67
2021-06-08 20:36:49 +08:00
@3dwelcome #9 可是又有啥前端业务能够那么重要要保护,不是数据最重要么,,,,
zyEros
2021-06-08 20:45:51 +08:00
@no1xsyzy 之后会产出一个人机识别产品,会有代码还原及 hack 的活动,到时候有现金奖励,欢迎参与😄
zyEros
2021-06-08 20:48:06 +08:00
@3dwelcome 是的,实际上商用版 opcode 会变化

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/782192

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX