Electron应用逆向分析有哪些具体步骤和技巧?

摘要:一、逆向目标与核心思路 1. 目标 不是为了“破解软件”,而是学习 Electron 应用的逆向通用思路: 绕过反调试机制 突破文件完整性校验 劫持核心 API 分析逻辑 实现离线激活流程劫持 2. 核心概念 Electron 应用基于 N
一、逆向目标与核心思路 1. 目标 不是为了“破解软件”,而是学习 Electron 应用的逆向通用思路: 绕过反调试机制 突破文件完整性校验 劫持核心 API 分析逻辑 实现离线激活流程劫持 2. 核心概念 Electron 应用基于 Node.js + 浏览器内核,所有核心行为都依赖 JavaScript/Node.js API。我们不需要懂二进制/C++,只需拦截(Hook)这些 API,就能修改程序行为(比如让程序读“假文件”、返回“假结果”)。 Electron基于主进程(Main Process) 和渲染进程(Renderer Process) 的双进程模型。 主进程:整个应用的入口,负责窗口管理、系统交互、生命周期控制,运行在Node.js环境中(有完整的Node API权限)。 渲染进程:每个窗口对应一个渲染进程,负责页面渲染、用户交互,运行在Chromium环境中(默认无Node权限,需通过webPreferences配置)。 一、编译后Electron应用的核心结构 编译后的应用会将源码、依赖、Electron运行时打包成独立文件,典型结构如下(以Windows为例): xxx-win32-x64/ ├── xxx.exe # 应用入口可执行文件 ├── resources/ # 资源目录 │ ├── app.asar # 打包后的源码(main.js、preload.js、页面等) │ └── app.asar.unpacked/ # 未打包的二进制依赖(可选) └── electron*.dll # Electron运行时依赖 核心:源码被打包进app.asar(一种Electron专属的归档格式),但执行顺序逻辑和开发环境一致,仅资源加载路径发生变化。 二、编译后代码的完整执行顺序 以下是编译后可执行文件运行时的代码执行流程,对比开发环境标注差异点: 1. 启动阶段:Electron运行时初始化 1. 双击xxx.exe → 系统启动Electron运行时(内置Node.js + Chromium) 2. 运行时读取resources目录 → 定位app.asar包,提取并执行**编译后的主进程入口文件**(如main.js) ✨ 差异点:开发环境直接读取本地main.js,编译后读取asar内的main.js 二、前置准备(必装工具) 工具/环境 作用 安装方法 Node.js + npm 提供 JavaScript 运行环境,安装 asar 工具 官网 https://nodejs.org/ 下载 LTS 版,默认安装(勾选“Add to PATH”) Typora v1.12.4 目标分析软件 官网下载最新版,默认安装到 C:\Program Files\Typora(必须默认路径,否则需改代码) 文本编辑器 写代码、改配置(如 VS Code、记事本++) 任意编辑器均可,推荐 VS Code(官网 https://code.visualstudio.com/) 验证安装 打开「命令提示符(CMD)」,输入以下命令,能显示版本号就是安装成功: node -v # 显示 v18+ 即可 npm -v # 显示 8+ 即可 三、详细逆向步骤(按顺序来,一步都不能漏) 步骤1:安装 Typora 并初步测试反调试 安装 Typora:默认路径 C:\Program Files\Typora,安装后先正常启动一次,确认能打开(然后关闭)。 测试反调试: 打开 CMD,输入命令(启动 Typora 并尝试调试):cd C:\Program Files\Typora Typora.exe --inspect 现象:程序启动失败,弹出错误提示。 原因:Typora 有反调试机制,检测到 --debug/--inspect 参数就拒绝启动。 3.Typora是基于Electron开发的应用,而Electron本身内置了Chromium的调试协议,支持通过 --debug(旧版参数)或 --inspect(新版参数)开启调试端口。 启动后,你可以用Chrome DevTools等工具直接连接调试端口,动态查看主进程和渲染进程的JS代码、调用栈与内存数据。 这是最直接、无侵入的调试方式,不需要提前解压asar包或修改代码。 在Electron应用的逆向流程中,这是最优先的尝试方向: 如果调试成功,就能直接定位激活逻辑、验证机制等核心代码,效率远高于后续的静态分析。
阅读全文