electron-egg electron-egg
首页
  • v4.x
  • v3.x
  • v2.x
插件
  • v4.x
  • v3.x
demo
支持
知识点
案例
交流
  • GitHub (opens new window)
  • Gitee (opens new window)
首页
  • v4.x
  • v3.x
  • v2.x
插件
  • v4.x
  • v3.x
demo
支持
知识点
案例
交流
  • GitHub (opens new window)
  • Gitee (opens new window)
❤️成为赞助商
  • 快速入门

  • 基础功能

  • 生成软件

    • 构建
    • 代码加密
      • 图标修改
    • 升级

    • 跨语言支持

    • 更新记录
    • 常见问题
    目录

    代码加密

    要求:ee-core: v1.2.10 及以上

    目前框架支持两种代码加密,分别为 字节码加密 和 压缩混淆加密

    # 命令

    # 代码加密
    npm run encrypt
    
    # 清除加密的代码
    npm run clean
    
    # 合并命令,package.json中修改 start 命令
    # 这样每次预发布时,就会生成加密的代码,避免构建时忘记
    "start": "ee-bin encrypt && ee-bin start",
    

    # 打包时,过滤源代码

    注意

    加密,请添加 "!electron/"

    未加密,请删除 "!electron/"

    打开package.json 或 builder.json文件,修改 build.files 数组属性,添加 "!electron/",如下:

    // electron-egg: v3.4.0版本,将构建配置,独立为./electron/config/builder.json 文件
    
    "build": {
      ......
      "asar": true,
      "files": [
        "**/*",
        "!frontend/", // 过滤前端源码
        "!run/",
        "!logs/",
        "!data/",
        "!electron/" // 过滤electron文件夹;如果没有使用加密功能,请删除
      ],
        ......
    }  
    

    # 加密配置文件

    ee-core: v1.3.2

    文件 ./electron/config/bin.js

    encrypt: {
      type: 'confusion',
      files: [
        'electron/**/*.(js|json)',
        '!electron/config/encrypt.js',
        '!electron/config/nodemon.json',
        '!electron/config/builder.json',
        '!electron/config/bin.json',
      ],
      fileExt: ['.js'],
      confusionOptions: {
        compact: true,      
        stringArray: true,
        stringArrayEncoding: ['none'],
        stringArrayCallsTransform: true,
        deadCodeInjection: false,
        numbersToExpressions: true,
        target: 'node',
      }
    },
    

    # type

    • bytecode 字节码加密
    • confusion 压缩混淆加密
    • strict 先混淆加密,然后字节码加密

    # directory

    需要加密的目录,将废弃,用files替代

    # files

    ee-core: v2.1.0

    需要加密的文件匹配,功能更强,说明:

    files: [
      'electron/**/*.(js|json)', // 匹配 electron 目录下的 js|json文件
      '!electron/config/nodemon.json' // 过滤 electron/config/nodemon.json 文件
    ],
    

    # confusionOptions

    • compact [Boolean] - 压缩成一行
    • stringArray [Boolean] - 删除字符串文字并将其放置在一个特殊数组中
    • stringArrayEncoding [Array] - 对stringArray的所有字符串文字进行编码,值:'none' | 'base64' | 'rc4'
    • stringArrayCallsTransform: true, // 调用的所有参数都可能被提取到不同的对象中
    • deadCodeInjection [Boolean] - 注入死代码,注:影响性能
    • deadCodeInjectionThreshold [number], // 死代码注入阈值,默认0.3
    • numbersToExpressions [Boolean], // 将数字转换为表达式
    • target [String], // 设置运行环境

    # 加密后文件位置

    加密后,文件在 ./public/electron 里面,请注意业务代码中,文件引入路径。

    注意

    dev环境(或 未使用加密功能的prod环境)使用 ./electron 代码;

    prod环境使用 ./public/electron 代码。

    # 方式一:字节码加密 - bytecode

    什么是字节码加密?

    字节码是一种源码编译后的中间表示,类似汇编,是虚拟机执行的指令。逆向(反)编译的难度和传统编译型语言差不多。

    # 代码要求

    控制器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平台分发版较多,请自行测试

    # 方式二:压缩混淆加密 - confusion

    ee-core: v1.4.1

    配置

    # electron/config/bin.js
    
    confusionOptions: {
      compact: true, // 将代码压缩为1行        
      stringArray: true, // 删除字符串文本并将其放置在特殊数组中
      stringArrayEncoding: ['none'], // 对stringArray编码 'none', 'base64', 'rc4',增加安全性
      stringArrayCallsTransform: true, // 调用的所有参数都可能被提取到不同的对象中
      deadCodeInjection: false, // 是否注入死代码,代码体积变大。
      deadCodeInjectionThreshold: 0.3, // 死代码注入阈值,默认0.3
      numbersToExpressions: true, // 将数字转换为表达式
      target: 'node', // 设置运行环境
    }
    

    # 代码要求

    无

    # 构建要求

    • 可在windows-64-bit 操作系统上,同时构建 32位 和 64位应用。
    • 其它如上。

    注意

    如果加密生成的代码无法运行,请多次 执行 npm run encrypt

    原因:加密后代码混淆很大,可能触发某些关键字或者字符编码,导致代码无法正常读取。

    # 方式三:压缩混淆加密 strict

    ee-core: v1.4.0

    先 压缩混淆加密,然后 字节码加密,代码更加安全。

    注意

    问题同上

    上次更新: 2025/06/06, 07:21:49
    构建
    图标修改

    ← 构建 图标修改→

    Theme by Vdoing | Copyright © 2023-2025 哆啦好梦 | 京ICP备15041380号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×