Electron混淆和加密主进程代码
1.前言
Electron 是一个使用前端技术栈来创建桌面应用程序的框架。它是一个 node.js 应用,开发应用有两部分:主脚本(主进程)和H5前端(渲染进程)。主进程是使用 node.js 进行开发的,其被工具(本文使用了 electron-builder)打包后会被压缩到一个 asar 文件。这个 asar 类似一个压缩文件夹,是可以通过工具 asar 来进行解压的,解压后可以看到本来的源代码,而这些代码是未进行任何处理的源代码。本文要解决的问题是,如何对主进程的源代码进行混淆和加密。方案是使用 webpack 对源代码进行混淆,使用 bytenode 对混淆后的代码进行加密。
2. 源代码
代码的目录结构如下:
- build 目录内是 webpack 构建脚本
- dist 是 electron-builder 打包的输出目录
- obf 是加密脚本
- dist-obf 是主进程最终的经过混淆和加密后的输出目录
- htmls 是前端h5项目代码
3. 混淆
混淆是通过 webpack 来实现,以下是基础的构建脚本:
'use strict'
const path = require('path')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
module.exports = {
mode: 'production',
context: path.resolve(__dirname, '..'),
entry: {
main: './src/main.js'
},
output: {
filename: '[name].js',
path: path.resolve(__dirname, '../dist-obf'),
},
plugins: [
new CleanWebpackPlugin()
],
target: "electron-main"
}
经过处理后的源代码会被压缩和混淆,如下图。
4. 加密
通过混淆后的代码基本处于不可阅读的状态,但是仍然是明文的,可以看到里面的中英文常量都是可以识别的。所以通过加密这个过程,使混淆后的 js 文件输出为字节形式的文件,其内容是16进制的,是不可阅读的。
加密使用了 bytenode 工具,加密脚本的入口为步骤 2 混淆后的 main.js 文件,故只需处理一个文件即可,代码如下:
require('bytenode').compileFile({
filename: './dist-obf/main.js',
output: './dist-obf/main.jsc'
});
process.exit(0)
加密结果的文件内容是不可阅读的,如下:
5. 打包验证
打包使用 electron-builder 进行,打包后(本文使用 mac)的输出在 dist/mac/demo1.app。右键 demo1.app 显示包内容,可以在以下路径 demo1.app/Contents/Resources/app.asar 找到主进程的压缩包。使用 asar 工具解压 app.asar: asar extract app.asar ./
。可以看到,打包进去的是混淆和加密后的代码,这样就实现了本文的目标。本文例子 Example。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhchcbbc
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13