You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron应用构建后如何保护app.asar文件?

解决Electron app.asar被提取/修改的免费简单方案

针对你Windows平台Electron应用的asar安全问题,以下是几个无需复杂签名、免费且易实现的方案:

方案一:自定义ASAR加密+启动时解密验证

这个方案直接对asar文件做对称加密,启动时在内存中解密后加载,避免明文被直接提取:

  • 编写加密脚本:用Node.js的crypto模块实现AES对称加密,示例代码:
    const fs = require('fs');
    const crypto = require('crypto');
    
    const key = Buffer.from('自定义32位密钥字符串', 'utf8');
    const iv = crypto.randomBytes(16);
    const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
    
    const input = fs.readFileSync('./app.asar');
    const encrypted = Buffer.concat([cipher.update(input), cipher.final()]);
    fs.writeFileSync('./encrypted.asar', Buffer.concat([iv, encrypted]));
    
  • 修改主进程启动逻辑:在main.js最开头添加解密代码,读取加密后的asar,尽量在内存中完成解密后通过app.setAppPath加载,避免明文写入磁盘
  • 混淆密钥:不要把密钥直接写死在代码里,可以拆分字符串拼接、或从应用资源片段中组合生成,降低密钥被逆向获取的风险

方案二:自定义ASAR哈希校验(防修改)

如果主要需求是防止asar被篡改,而非完全阻止提取,可以实现启动时的哈希校验:

  • 提前计算app.asar的SHA256哈希值:用命令行openssl dgst -sha256 app.asar得到哈希字符串
  • 在main.js中硬编码哈希值(可简单混淆,比如拆分成数组再拼接),启动时读取asar文件计算哈希对比:
    const fs = require('fs');
    const crypto = require('crypto');
    const { app } = require('electron');
    
    // 混淆后的预期哈希值
    const expectedHashParts = ['a1b2', 'c3d4', 'e5f6'];
    const expectedHash = expectedHashParts.join('');
    
    const fileBuffer = fs.readFileSync(`${process.resourcesPath}/app.asar`);
    const hash = crypto.createHash('sha256').update(fileBuffer).digest('hex');
    
    if (hash !== expectedHash) {
      console.error('ASAR文件已被篡改');
      app.quit();
    }
    
  • 每次重新打包后要更新代码中的哈希值,确保和最终生成的asar文件匹配

方案三:核心逻辑迁移至原生Node.js Addon

把敏感的核心代码(比如数据记录、权限校验)用C/C++编写成Node.js原生模块,编译成.node二进制文件:

  • 用N-API编写简单的原生模块,实现数据存储、校验等核心方法,通过node-gyp编译得到.node文件
  • 在main.js中require这个原生模块,调用其方法完成敏感操作
  • 打包时将.node文件和asar一起打包,即使asar被提取,核心逻辑在二进制模块中,逆向难度远高于JS代码

方案对比

  • 方案一:能同时防提取和修改,但解密过程存在内存明文风险,适合对代码保密性要求较高的场景
  • 方案二:仅防修改,无法阻止提取,但实现最简单,适合主要担心文件被篡改的场景
  • 方案三:保护核心逻辑,即使asar被提取,关键功能也无法被篡改或分析,适合敏感操作较多的应用

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 07:22:32