网上流传的 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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.