将 Js 代码编译成汇编形式的 Js 代码,能否起到加密作用?

22 小时 5 分钟前
 heroisuseless

我先实现一个简单的虚拟机,例如叫 jsm ,有 ax ,bx ,cx ,dx 四个寄存器,外加一个 stack 执行栈。

现在加密一个 js 函数,例如一个简单的 add 函数:

function add(x, y) {
	return x + y;
}

经过编译后,变成了类汇编的 js 代码:

jsm.label('add');
jsm.pop(jsm.ax);
jsm.pop(jsm.bx);
jsm.add(jsm.ax, jsm.bx);
jsm.push(jsm.ax);
jsm.ret();

更近一步地,将 js 代码编译成二进制文件,然后再在网页上的虚拟机上运行,是否能起到加密作用?

908 次点击
所在节点    奇思妙想
11 条回复
iikebug
21 小时 53 分钟前
1 、前端网页的是否需要考虑性和网页大小
2 、首先你虚拟机的逻辑也会被反编译出来,意义不是很大
3 、加密优先考虑一下 wasm ?比自己写个虚拟机方便多了
nomagick
21 小时 50 分钟前
不要敝帚自珍了。。。js 里面一个断点 console.log ,随你数据咋生成的
luckyrayyy
21 小时 41 分钟前
你是说 WebAssembly?
MRG0
21 小时 32 分钟前
纯前端的加密,似乎不怎么有人提到。重要内容都放后端呗
yichya
21 小时 31 分钟前
您要找的是不是: https://blog.jsvmp.com/
tsem1n
21 小时 30 分钟前
jsvmp 就是你说的这种, 国内已经有很多用了
nulIptr
21 小时 28 分钟前
不是哥们你有这个水平还来提这个问题?搞出这个东西就为了加密?
lisongeee
20 小时 26 分钟前
Blanke
18 小时 23 分钟前
你是在说 js vmp?
rekulas
13 小时 11 分钟前
是否能起到加密作用

当然可以,你都会写虚拟机了这个问题应该不用问别人才对,我之前玩过 php 语言的底层混淆也做过 js 逆向,js 安全性差的一个重要原因就是逆向直接调试明文就行了,相比二进制程序来说要容易许多,如果跑在虚拟机自然难度就提高了
lisxour
3 小时 51 分钟前
可以大幅提高破解门槛

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

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

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

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

© 2021 V2EX