网上流传的 Electron 加密打包文件 或 electron 源码加密 都是指的 asar pack 并非真正的加密
如何在 asar 的基础上实现加密呢?
文件大小标记 04 00 00 00 64 10 00 00 60 10 00 00 5B 10 00 00
文件头部 json {"files":...}
文件内容区 由一个个文件拼接而成
加密最简单的方式就是在 asar 打包的基础上对需要的文件进行加密
asar::Archive 压缩包功能类
asar::URLRequestAsarJob 压缩包注册为资源, 供 Browser 模块识别
Archive V8 绑定到 node, 供 Node 模块识别
asar.js 导出 wrapFsWithAsar 方法, 把 V8 绑定的 Archive 能力提供给 fs
asar_init.js 用来覆盖 fs 的读取操作, 这样 fs 就可以识别 asar 压缩包内的资源了
根据以上分析, 加密解密思路就有了
在 asar 打包时写入文件之前, 通过加密算法把写入的文件进行加密
修改 asar::Archive
类增加 C++解密方式, 供 Browser 和 atom 加载 asar 资源
修改 asar.js
增加 js 解密方式, 供 nodejs 加载 asar 资源
同时也可以做文件头部 json 的加密,官方的 asar 就没法解包了
通过这种方式, 个人在稳定版本 electron-2.0.8 和最新版本 electron-3.0.0 都做了成功的尝试
再也不用担心核心业务代码泄露了
想尝试下的可以联系我 Q 1584625095
有需要的吗,最近撸了个官网,需要的请联系哦,electron.ink
应客户要求,已经在最新 electron 13 版本上已实现 加密功能,需要的联系哦, electron 13 http://electron.ink/
1
XiaoJSoft 2018-09-28 00:02:38 +08:00 1
只要你的产品要在别人的计算机上跑...就能够被破解...而且通常很简单...
除非...你把核心代码拿个密钥加密...每次启动都得输入那个密钥才能解密启动... |
3
jetiny OP 是这个道理, 所以头部也是被加密的,程序可以解密头部,从头部拿到你的密钥再解密后面的文件,目前是这样实现的,没有 C++的代码,要破解也要花一番功夫的不是?
|
4
seeker 2018-09-28 02:04:43 +08:00
没有办法绝对防止代码泄露,只能增加门槛。楼主可以打包一个实例应用给咱看看效果。
|
6
janxin 2018-09-28 07:34:40 +08:00 via iPad
你这个破解也很简单啊…
|
7
iBaoger 2018-09-28 08:00:35 +08:00 via Android
核心功能封装 node 模块,用 c++实现
|
8
liang2u 2018-09-28 08:08:18 +08:00 via Android
asar 只认定制加密版本 electron,且关闭控制台才有意义,否则最终用户能通过控制台看代码啊。
|
9
Chenamy2017 2018-09-28 09:17:18 +08:00
我马上也会遇到这个问题,感谢分享。
|
10
12101111 2018-09-28 10:47:32 +08:00 via Android
加密文件没有用,这些文件总是要在内存中解密的,应该对内存区域进行加密,这时候就适合 VMprotect+native 程序,否则还是老老实实做服务器验证吧,毕竟无数游戏都能被破解,唯一不能破解的就是强制联网验证
|
11
Chenamy2017 2018-11-20 14:08:18 +08:00
请问,程序在调用用 asar 归档的文件时,应该用的标准的解压算法,如何让它在执行时调用解密算法?
|
12
caoqiang250 2019-07-03 16:52:25 +08:00
编程猫硬件助手好像使用了相关技术,使用官方的 asar 无法解包
|
13
xspeed 2022-09-12 20:56:00 +08:00
已搞定!
|