要求:ee-core >= 1.2.10
目前框架支持两种代码加密,分别为 字节码加密 和 压缩混淆加密。当然你也可以先混淆加密,再字节码加密。
打包时,过滤源代码
注:未使用加密,请不要过滤 。
打开package.json文件,修改 build.files 数组属性,添加 “!electron/“,如下:
"build": {
......
"asar": true,
"files": [
"**/*",
"!frontend/", // 过滤前端源码
"!run/",
"!logs/",
"!data/",
"!electron/" // 过滤electron文件夹;如果没有使用加密功能,则不能过滤该文件夹
],
......
}
加密配置文件
需要:ee-core >= 1.3.2
文件 ./electron/config/encrypt.js
module.exports = {
type: 'bytecode', // 加密类型:bytecode | confusion
directory: [ // 需要加密的目录
'electron'
],
fileExt: ['.js'], // 需要加密的文件后缀,暂时只支持js,后续待扩展
};
type
打开package.json文件,修改 scripts.encrypt 脚本属性,如下:
"scripts": {
......
"encrypt": "ee-core encrypt --type=bytecode",
......
}
加密后文件位置
加密后,文件在 ./public/electron 里面,请注意业务代码中,文件引入路径。
注:dev环境(或 未使用加密功能的prod环境)使用 ./electron 代码,prod环境使用 ./public/electron代码。
方式一:字节码加密
什么是字节码加密?
字节码是一种源码编译后的中间表示,类似汇编,是虚拟机执行的指令。逆向(反)编译的难度和传统编译型语言差不多。
代码要求:
控制器controller和服务层service代码要求加入toString()方法,用来识别加密后的 .jsc (class)模块。如:ExampleController 控制器
# 添加 toString() 方法,返回内容为 类的字符串表示
ExampleController.toString = () => '[class ExampleController]';
# 导出模块
module.exports = ExampleController;
构建要求:
- 如果交叉构建的软件运行报错,那么在对应平台构建,操作如下
- 在windows-32-bit 操作系统上构建:npm run build-w (32位)
- 在windows-64-bit 操作系统上构建:npm run build-w-64 (64位)
- 在MacOS-amd 操作系统上构建:npm run build-m
- 在MacOS-arm 操作系统上构建:npm run build-m-arm64 (m1芯片架构)
- Linux平台分发版较多,请自行测试
方式二:压缩混淆加密
压缩混淆主要是把代码压缩为一行,同时把代码中的变量、函数名等,按照一定规则做简化和替换。
代码要求:无
构建要求:
- 可在windows-64-bit 操作系统上,同时构建 32位 和 64位应用。
- 其它如上。