
6 条命令的 Electron 逆向分析实操把 asar 的 IPC 链路从静态一路还原到运行时【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea周三 15:04你拿到同事发来的一份app.asar8.9 MB目标应用装在他机器上你跑不起来。你要回答的只有一句话——「粘贴到应用」按钮走了哪条 IPC 通道主进程侧谁在接收。做这次 Electron 逆向分析rea 不让你解压着祈祷。能跑什么几步能跑起来reaReverse Engineer Anything把逆向能力通过 CLI 和 MCP 同时暴露给你的终端与 AI 助手。对 Electron/JavaScript 目标静态路径只依赖 Node.js 22.19 与 npm不需要任何反汇编引擎。最小可运行路径两条命令setup把你的 AgentClaude Code、Gemini CLI 等注册为 MCP 客户端并安装工作流指令analyze-javascript-application把一份 asarElectron 的归档格式直接送入静态重构npx rea-agents setup npx -y rea-agentslatest analyze-javascript-application /path/to/app.asar --json输出是 Evidence 记录——带身份、来源定位、置信度的结果对象不是裸数据。先盯两处Electron 边界摘要contextBridge.exposeInMainWorld的 API key 与字面量成员路径、IPC 字面量通道以及normalized_result.statistics节点数、覆盖率、解析失败数。不执行一行应用代码怎么还原模块边界结论静态路径是解析不执行——eval、Function、vm.runInContext、DOM、bundle 引导代码永不使用目标字节全程不运行。取舍记录在 docs/javascript-artifact-reconstruction.mdJS/TS 源码按惰性文本解析Webpack/Rspack 的 chunk 注册与模块工厂以 AST 字面量形式恢复测试套件里有一个专门 fixture执行它会篡改全局并抛异常而重构恢复了它的四个模块工厂两个副作用都没触发。图里每个节点与边都带 authorityartifact bytes / AST analysis / static inference与认知状态observed / inferred / unknown / unavailableunknown是一等公民不是缺字段。这意味着你可以把 asar 直接喂给自动化流水线不用先问这个目标能不能跑。代价是硬边界import 与调用关系只是静态推断invoke只与唯一一个同字面量通道的ipcMain.handle配对动态通道永不配对多个候选只报ambiguous而不画边。运行时怎么绑回静态图而不是互相冒充结论静态与运行时各持独立 authority调和只新增observed_as推断边从不覆盖任何一边的既有观察。两条观察通道互补。被动list-electron-targets/inspect-electron-page附加到已运行的 Electron CDPChrome DevTools 协议回环端点不执行 renderer 代码、不注入、不点击。主动capture-electron-scenario用 Playwright 官方_electron.launch启动应用并由 rea 拥有其生命周期——60 秒启动截止SIGINT/SIGTERM 请求取消并等待清理——记录 IPC 通道与参数形状元数据payload 值永不保留实现见 src/browser/PlaywrightElectronActiveProvider.ts。匹配规则按证据强度排序内容寻址——同一字节内容永远映射到同一 ID比对的是字节摘要而非文件名捕获源 SHA-256 映射位置 唯一内容摘要 唯一映射路径中等置信度多候选是ambiguous摘要不符是显式mismatch路径永远不能覆盖摘要分歧。规则全文见 docs/javascript-runtime-reconciliation.md。这意味着磁盘上哪个文件真的在跑有了字节级答案且证据可回溯到两层各自的 Evidence。边界not-observed-in-capture绝不意味着全局未加载source map 原始源永不作为运行时字节匹配的主证据。追踪读出来的是什么边界在哪里结论trace 返回的是可达子图、终端路径与 authority 汇总不是反编译出的源码。trace-application-feature的 seed 是字面量node ID、route、string、API、IPC channel、module、native export——只接受精确或子串匹配不接受正则不接受可执行谓词。trace-javascript-semantics再深一层覆盖词法定义与读取、闭包捕获、唯一解析的本地调用、参数/返回值流、Promise 链、EventEmitter 注册与派发、node:child_process创建与所有权。函数指纹忽略局部变量名保留语法、字面量、运算符与对象键所以压缩改名不影响跨版本比对compare-application-versions按五级配对内容摘要 模块源摘要 节点身份 source-map 身份 结构指纹把版本间模块归为 unchanged / added / removed / changed / unknown见 docs/javascript-application-workflows.md。这意味着厂商升级后你能复现同样的结论因为结论不依赖变量名。边界resolved表示静态分析中唯一不是该路径被执行过的证明.nodeadd-on 只恢复 JavaScript 语法请求的导出成员原生符号验证留给 Hopper/Ghidra 这一层。一条最短可行链路照着敲前面讲为什么这样设计这里只讲现在敲什么。六条命令每条按输入 → 关键输出字段 → 下一步判断走。注册 Agent只走 CLI 可跳过npx rea-agents setup无输入输出里看各客户端的注册状态有失败项按提示处理然后进入下一条。静态重构并落盘——真实应用的 Evidence 可达数百 MB不要直接对着终端读rea analyze-javascript-application /path/to/app.asar --json app-evidence.json输入是 asar 绝对路径关键输出字段Electron 边界contextBridge 的api_key、字面量 IPC 通道与normalized_result.statistics判断从证据里挑一条字面量通道或字符串作为下一条的 seed。枚举运行中实例的页面应用需带 CDP 调试端口启动rea list-electron-targets http://127.0.0.1:9223 --json输出是本地file://页面数组关键输出字段target ID 与 canonical 本地路径判断选出承载待查功能的那个页面 ID。检查该页面并取脚本源rea inspect-electron-page http://127.0.0.1:9223 TARGET_ID --include-script-sources --json关键输出字段每个脚本的身份与内容寻址摘要判断拿着这批摘要去对静态证据看磁盘上哪个文件真的在跑。把两份 Evidence 调和rea reconcile-javascript-runtime reconciliation-input.json --json输入 JSON 含static_layers与runtime_observations完整 Evidence 对象不是 ID关键输出字段observed_as边以及各静态资产的加载态loaded / resident-in-loaded-asset / not-observed-in-capture / unknown判断ambiguous与mismatch条目转人工复核不要猜。追踪目标功能rea trace-application-feature ./trace-input.json --json输入是完整 Evidence 加字面量 seed如{kind:string,value:notion:clipboard:write}关键输出字段可达子图规模、终端路径、native handoff判断终端路径若止于.node请求原生部分移交 Hopper/Ghidra静态层到此为止。边界与诚实声明capture-electron-scenario保有完整宿主机权限不是沙箱应用以你的用户权限运行选一台丢得起的机器。静态分析不证明运行时not-observed-in-capture绝不等于全局未加载缺边不等于缺功能。动态 IPC 通道永不配对ambiguous 候选永不连边图里没有的rea 不会替你补一条。无法确定精确遗漏数时omitted_count输出null而不是猜测值。大型应用的完整 Evidence 可达数百 MB文档以 334 MB 的 Obsidian 为例用inspect-analysis-view投出 summary 或单模块页不要整读。rea 把 Electron 逆向分析从一次性考古变成了可复现的工程动作每条结论都带着哪些字节、哪些推断、哪些 unknown——边界不再是我猜而是可重跑、可交叉验证。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考