到目前为止,有没有把 js 完全加密的方法?

2014-12-05 16:46:36 +08:00
 kisshere
网上查了查js加密,都能很轻易的解密,请教V友,有没有将js加密后不能被破解的方法或软件?
11416 次点击
所在节点    问与答
29 条回复
tabris17
2014-12-05 16:47:25 +08:00
除非不在客户端执行
kiritoalex
2014-12-05 17:04:33 +08:00
楼上+1
kisshere
2014-12-05 17:08:36 +08:00
@tabris17 是确确定定不能在浏览器加密么?
easychen
2014-12-05 17:08:39 +08:00
木有。不过现在已经可以把一部分代码用node在云端执行,这样就不会被人偷代码了。
smblog
2014-12-05 17:08:56 +08:00
make the code unreadable.
kisshere
2014-12-05 17:16:03 +08:00
@smblog 能举个实际例子嘛,谢啦
lincanbin
2014-12-05 17:18:46 +08:00
浏览器能解析,就能解密。
你能做的无非就是按照《如何写出无法维护的代码》的教程去进行混淆罢了。
例如随机更换变量名。
txlty
2014-12-05 17:37:21 +08:00
为楼上补充一个自动化工具。
http://utf-8.jp/public/jjencode.html
royzheng
2014-12-05 17:39:32 +08:00
混淆吧 混淆后那么恶心了 我想没人去搞这货吧 出了问题都没法改
tabris17
2014-12-05 17:41:25 +08:00
问题是javascript这种动态语言很难实现变量名替换的混淆方式
Bluek404
2014-12-05 17:43:27 +08:00
表示用dart自动生成的混淆后js,又长又难看
RemRain
2014-12-05 18:04:17 +08:00
用 js 写一个操作系统(比如 http://jslinux.org/),在系统里面用 C 开发,编译后删除源文件,只留二进制文件,然后再给二进制文件加壳。

要是你愿意的话,还可以用 C 实现 js, 再用 js 实现操作系统加 C,循环 N 次,然后所有人就都给你跪下了 @_@
zythum
2014-12-05 18:33:31 +08:00
理论上是可以的。看个例子吧。这个是letv的加密方法。从网站上拷贝下来的。

https://gist.github.com/zythum/4982268b3bb21825847f
http://gist.github.com/zythum/4982268b3bb21825847f

但是问题是js的代码是明文的。可以被拷走的。这样只能做到看不懂。但是依然可以运行。开一个js虚拟机就可以了。
zythum
2014-12-05 18:34:19 +08:00
@livid 我错了。我把样式搞坏了。
a2z
2014-12-05 18:35:54 +08:00
@zythum
这个把最后一个eval改成console.log就出来了……
scusjs
2014-12-05 18:38:57 +08:00
@zythum 笑翻了,这是什么节奏
zythum
2014-12-05 18:42:24 +08:00
@a2z 这个做法就是,我中间的过程看不懂。解出来估计也是数学家了。但是我可以跑啊。
zythum
2014-12-05 18:44:29 +08:00
@scusjs 会不会有letv的同行来打我。 话说回家还要修 妈妈计划了。估计好久了。应该好多都不能用了,最近比较忙。
cctvsmg
2014-12-05 19:13:07 +08:00
其实可以仿照vmprotect写一个js版本的,vmprotect思想来源于门电路
原理是,把加减乘除都用nor指令实现,nor = not not and
于是原来很容易看出逻辑的 and xor not or 都加密成了整齐划一的单一操作字符nor
再从nor还原回去变的极为困难
目前为止vmp虚拟机加密只能半自动甚至手工还原,还原vmp至今是仍然有很大难度(爆破是另一回事)

javascript也可以这么做,也就是在js虚拟机上再搞vmp虚拟机
但是似乎js界和搞加密解密的交集太少,没有人去做这个事情
也可能是js并没有那么高的价值值得如此保护
a2z
2014-12-05 19:15:49 +08:00
@cctvsmg
机器码可以这么搞,js这么搞chrome什么的还行,ie直接卡出翔了

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

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

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

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

© 2021 V2EX