electron 加密打包的正确方法

2018-09-27 22:42:02 +08:00
 jetiny

网上流传的 Electron 加密打包文件 或 electron 源码加密 都是指的 asar pack 并非真正的加密

如何在 asar 的基础上实现加密呢?

先来看看 asar 文件的结构

加密最简单的方式就是在 asar 打包的基础上对需要的文件进行加密

asar 文件是怎么被识别调用的呢, 首先是 C++部分

asar::Archive 压缩包功能类

asar::URLRequestAsarJob 压缩包注册为资源, 供 Browser 模块识别

Archive V8 绑定到 node, 供 Node 模块识别

其次是 js 部分

asar.js 导出 wrapFsWithAsar 方法, 把 V8 绑定的 Archive 能力提供给 fs
asar_init.js 用来覆盖 fs 的读取操作, 这样 fs 就可以识别 asar 压缩包内的资源了

根据以上分析, 加密解密思路就有了

加密方法

在 asar 打包时写入文件之前, 通过加密算法把写入的文件进行加密

解密方法

同时也可以做文件头部 json 的加密,官方的 asar 就没法解包了

通过这种方式, 个人在稳定版本 electron-2.0.8 和最新版本 electron-3.0.0 都做了成功的尝试

再也不用担心核心业务代码泄露了

想尝试下的可以联系我 Q 1584625095

15192 次点击
所在节点    程序员
13 条回复
XiaoJSoft
2018-09-28 00:02:38 +08:00
只要你的产品要在别人的计算机上跑...就能够被破解...而且通常很简单...
除非...你把核心代码拿个密钥加密...每次启动都得输入那个密钥才能解密启动...
XiaoJSoft
2018-09-28 00:03:23 +08:00
@XiaoJSoft
当然这样也没什么太大用,我完全可以跟你买一个密钥,然后就又可以拿到你的代码了...
jetiny
2018-09-28 00:34:15 +08:00
是这个道理, 所以头部也是被加密的,程序可以解密头部,从头部拿到你的密钥再解密后面的文件,目前是这样实现的,没有 C++的代码,要破解也要花一番功夫的不是?
seeker
2018-09-28 02:04:43 +08:00
没有办法绝对防止代码泄露,只能增加门槛。楼主可以打包一个实例应用给咱看看效果。
XiaoJSoft
2018-09-28 02:55:11 +08:00
@jetiny
讲真...曾经的我也这么想过...
...直到被一堆 Hacker 搞的体无完肤... -_-!!
janxin
2018-09-28 07:34:40 +08:00
你这个破解也很简单啊…
iBaoger
2018-09-28 08:00:35 +08:00
核心功能封装 node 模块,用 c++实现
liang2u
2018-09-28 08:08:18 +08:00
asar 只认定制加密版本 electron,且关闭控制台才有意义,否则最终用户能通过控制台看代码啊。
Chenamy2017
2018-09-28 09:17:18 +08:00
我马上也会遇到这个问题,感谢分享。
12101111
2018-09-28 10:47:32 +08:00
加密文件没有用,这些文件总是要在内存中解密的,应该对内存区域进行加密,这时候就适合 VMprotect+native 程序,否则还是老老实实做服务器验证吧,毕竟无数游戏都能被破解,唯一不能破解的就是强制联网验证
Chenamy2017
2018-11-20 14:08:18 +08:00
请问,程序在调用用 asar 归档的文件时,应该用的标准的解压算法,如何让它在执行时调用解密算法?
caoqiang250
2019-07-03 16:52:25 +08:00
编程猫硬件助手好像使用了相关技术,使用官方的 asar 无法解包
xspeed
2022-09-12 20:56:00 +08:00
已搞定!

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

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

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

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

© 2021 V2EX