如果按照提升破解成本的目标,自定义字节码执行是一条很靠谱的路径,有需要的可以参考: https://github.com/sablejs/sablejs
1
yushiro 2021-06-08 17:16:54 +08:00 via iPhone
不知道能都和 jq 之类的第三方库兼容
|
2
iikebug 2021-06-08 17:36:41 +08:00
前端搞代码保护都是虚的, 重要逻辑放 wasm 搞搞就好了
|
3
newmlp 2021-06-08 17:45:12 +08:00
保护逻辑有毛用,直接找到输入输出,黑箱调用就行了,干嘛要搞清楚里面的逻辑
|
4
zyEros OP @newmlp 有点想当然了,你可以看看这个 https://github.com/sablejs/sablejs/issues/10
|
7
no1xsyzy 2021-06-08 19:33:52 +08:00 1
@zyEros 看了下你这 issue10,很明显调用外部也是近乎透明的。只要破解者传给你的全都是被包装过的
wraps(wrapped) => (...args) => {debugger; let result=wrapped(...args); debugger; return result} 别的不管,任何需要调用环境的加密,直接覆盖你的 preamble 就行了。 而且 vm 形式理论上可以任意进行状态回归( deepcopy 一下),而且边界清晰得多,实际上当黑箱用比混淆过的代码更方便了。 更不用说,你认为应当减少与外界的交互?正确的方法是拿大量无效的外界交互去干扰。 就好比你分发 bin 也应当默认 strace 存在比较好。大部分应用重写、甚至写得更好真不是什么难事儿。所谓要『保护』的东西其实根本就不存在,保护了个寂寞。 |
8
3dwelcome 2021-06-08 19:47:41 +08:00
我一直想吐槽,楼主来 V2 宣传过几次了,可 github 代码又不开源。。
|
9
3dwelcome 2021-06-08 19:53:01 +08:00
还有讨论到前端加密,V2 一直挺激烈的。
我个人感悟就是,用程序代码生成一个一次性的虚拟机,关键逻辑只执行一次性代码,这样相对而言安全一些。 让黑客无法静态调试,依赖虚拟机运行的逻辑代码,也是服务器按需下载。下次请求的虚拟机指令就变了,下载逻辑代码自然也会变。 |