hexvero_open
Open target
Register a local file or directory for analysis. Returns its id, size, hash and detected format. Ids are stable per content.
path必填
io.github.maximilianfeix由 GitHub 帳號 maximilianfeix 發布v0.12.0更新於 Nov 1, 2026
Electron release diff for security review: what changed in IPC, contextBridge, windows and hosts.
靜態檢查本機軟體建置(多為 Electron 應用程式),讓助理比對兩個版本,查看 IPC、preload 橋接、視窗設定與網路主機有何變動。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
參照 儲存庫 中的啟動說明。
Know what changed inside your Electron release.
Diff two builds of an Electron app and see the IPC channels, preload bridge, window settings and network hosts that changed, with file and line on both sides.
Website · Try it · CI · AI agents · Comparison · Limits · Docs
English · Deutsch · Español · Français · Português (Brasil) · Русский · 中文 · 日本語 · 한국어
30 seconds of real output: a terminal recording and a browser recording, joined with a fade · mp4 · terminal: release-review-terminal.tape, UI: record-release-review.mjs
Needs Node.js 22.12 or newer. It copies two builds of a small example app (NotesDesk 1.4.0 and 1.5.0) into ./hexvero-demo and shows what changed. Excerpt, … marks cuts:
? means hexvero could not tell, so shell:open is reported as unknown, not as removed. Then turn it into a gate:
npx hexvero ui --demo --open shows the same comparison in a local web UI with the source lines of both builds side by side. The full tour: walkthrough.
app.asar; running the app to find out is not always allowed, and a checklist scanner looks at one build, not the change.Inputs: an app.asar, a macOS .app, a Windows or Linux install directory, or the release .zip you publish. Installers (.dmg, setup .exe, AppImage) need unpacking first. Per-platform paths: docs/cli.md.
To accept what is there today, add --baseline .hexvero/baseline.json --update-baseline once; later runs fail only on new findings.
One build instead of two, with the single-build checks known from Electronegativity (CSP, shell.openExternal, permission handlers, window settings, certificate and command-line switches):
Pinned to a version so a release cannot change your results unannounced:
Baseline, Markdown job summary and a least-privilege SARIF upload for code scanning: docs/ci.md.
In Claude Code, server and skill come as one plugin:
Elsewhere, npx hexvero setup --apply registers the MCP server with the coding agents it finds (dry run without --apply), or run npx -y [email protected] mcp over stdio. Text inside the target is treated as data, never as instructions. Clients, tools and what an agent receives: docs/mcp.md.
Electronegativity was archived on 2026-10-24. hexvero audit <build> runs part of its single-build checks with the same exit codes and SARIF as check; which checks are covered and which are not is listed in the migration page. REA does much that hexvero does not (dynamic analysis, devices, decompilers); use it for that. Sources, dates and every caveat: docs/comparison.md.
On the newest blind set, written by someone without access to hexvero, it found 52 of 64 IPC channels with none false, and it misses and misreports rows in other lists (all numbers). On real releases it is checked against the source (GitHub Desktop 3.6.7 → 3.6.10, Electron Fiddle 0.38 → 0.39), misses included. It reads files and never runs them, so a finding is what the code contains, not what it does at run time or whether it is exploitable; a passing check is not a security verdict. Parsing a hostile file still processes attacker-controlled bytes, within size, depth and time limits. The full list: docs/accuracy.md.
Walkthrough · CLI · CI · MCP · Policy schema · Electron rules and sources · Accuracy · Benchmarks · Other formats (native binaries, APK, WebAssembly and more) · Changelog
No. Targets are parsed as bytes; nothing is executed. The UI binds to 127.0.0.1 with a per-session token. There is no telemetry and no network call in the code base. Through a cloud-hosted agent, the results that agent requests go to its model provider like any other tool output. Use hexvero only on software you may examine (DISCLAIMER.md).
Rules in CONTRIBUTING.md; good first issue is sized for an afternoon. Found a wrong or missing fact? Open a bug report with hexvero doctor output and, if you can, the file.
If hexvero showed you something you would have missed in a release, a ⭐ helps the next Electron team find it.
MIT
來源:README.md,提交 12626b3
Open target
Register a local file or directory for analysis. Returns its id, size, hash and detected format. Ids are stable per content.
path必填List targets
List targets opened in this session.
無需輸入參數。
Close target
Release a target and its retained analysis.
targetId必填Analyze target
Run the built-in analyzer for the target's format (ELF/PE/Mach-O, Go, .NET, WASM, EVM, SQLite, plist, APK, ZIP, Electron ASAR, JavaScript apps, source maps, HAR). Returns a summary, findings with confidence, limitations, a compact overview and the collections available for paging. Large JavaScript apps are read in batches: when `complete` is false, `coverage` says how many files are unread and every list covers the scanned part only; call again with scan to read more.
scanbatchfreshdetailincludetargetId必填Page a collection
Page through one named list from the analysis, e.g. symbols, imports, exports, sections, libraries, types, methods, pinvokes, selectors, instructions, tables, columns, requests, endpoints, permissions, components, modules, edges, ipcChannels, findings. Use hexvero_analyze to see which exist.
textlimitoffsetmaxBytestargetId必填collection必填Strings
Printable ASCII (and optional UTF-16LE) strings with offsets and tags (url, path, email, ip, format, secret-ish, base64-ish).
tagtextlimitutf16offsetmaxBytestargetId必填minLengthRead bytes
Read a bounded window (max 64 KiB) of the target as hex plus an ASCII gutter.
length必填offset必填targetId必填Export analysis
Write the complete analysis as JSON to a file and return its path and size. Use this instead of paging when you need everything.
path必填targetId必填overwriteRecover sources
Write recoverable sources into a new directory: the modules of a webpack/Rspack/browserify/esbuild bundle (one file each plus hexvero-bundle.json with requires/exports), or the original files embedded in a source map (sourcesContent). No engine needed; nothing is executed.
targetId必填outputDir必填Unknowns ledger
Record a material question the investigation could not answer (with what was already checked), list open or resolved unknowns, or resolve one. Unknowns are exported with the analysis so reports never silently drop them.
idlimitaction必填offsetstatuscheckedquestiontargetIdresolutionCompare collections
Diff one collection between two targets: added, removed, changed (with the fields that differ) and unchanged items, matched by key (auto-detected: name, channel, id, path, url, type+name … or pass key, a+b for composites). States completeness; unknown items are neither added nor removed. Each list pages on its own (list + offset). Without collection: counts per shared collection, to pick one.
keylistlimitignoreoffsetstricttargetA必填targetB必填collectionCheck release policy
Apply a release policy (inline JSON or file) to two builds, as `hexvero check`: status pass, fail or incomplete, and findings paged by offset. Reads a baseline, never writes one.
limitformatoffsetpolicytargetA必填targetB必填policyPathbaselinePathResolve source map position
Map a generated line/column of a source map target back to its original source, line, column and name.
line必填column必填targetId必填Providers
Detect optional external engines (radare2/rizin, Ghidra) and the operations each supports.
無需輸入參數。
Run provider operation
Run one engine operation on a target: functions, disassemble, decompile, strings, imports, xrefs (references to an address), callers, callees, callgraph or search (names + strings). Output is bounded and cached.
textaddressprovider必填targetId必填operation必填timeoutMsCall graph
Bounded call-graph neighborhood around a function (callers, callees or both, by depth and node count), or the shortest call path from root to goal. One engine run per target, cached; levels state what was cut.
goalroot必填maxDepthmaxNodesprovider必填targetId必填directiontimeoutMs已滿足適用檢查項的 90%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
npx hexvero demoWhat changed between notesdesk-1.4.0.asar and notesdesk-1.5.0.asar Two builds of a small example Electron app, read statically. Nothing was executed.
interfaces (2) + preload.js::notesdesk::checkUpdate @ b: preload.js:9, handler main.js:30 · link direct - preload.js::notesdesk::openInShell @ a: preload.js:9, handler main.js:30 · link direct … ipcChannels (2) + update:check @ b: receiver main.js:30, sender preload.js:9 ? shell:open @ a: receiver main.js:30, sender preload.js:9 the other side has values there that could not be resolved windows (1) ~ main.js::win @ b: main.js:8 nodeIntegration: true → false, nodeIntegrationInEffect: "on" → "off", sandbox: false → true … endpoints (1) + main.js::fetch::https://updates.notesdesk.example/latest.json @ b: main.js:30 · literal$ npx hexvero check hexvero-demo/notesdesk-1.4.0.asar hexvero-demo/notesdesk-1.5.0.asar --policy hexvero-demo/policy.jsonhexvero check fail: the policy is violated ✗ new-interface-member notesdesk.checkUpdate new · fail ✗ new-external-host updates.notesdesk.example new · fail …$ echo $?3npx hexvero compare old/YourApp.app new/YourApp.app --report report.html # one offline HTML pagenpx hexvero init old/YourApp.app # starting policy, current hosts allowednpx hexvero check old/YourApp.app new/YourApp.app --policy .hexvero/policy.jsonnpx hexvero audit YourApp.app --format sarif > audit.sarif # exit 3 when a rule is violatedjobs: hexvero: runs-on: ubuntu-latest permissions: contents: read steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: persist-credentials: false - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7 with: node-version: 24 # Build your app and fetch the previous release here, e.g. into previous/ and dist/. - run: npx --yes [email protected] check previous/app.asar dist/app.asar --policy .hexvero/policy.json/plugin marketplace add maximilianfeix/hexvero/plugin install hexvero@hexveronpm install && npm run check # typecheck, lint, format, unit tests, shape rulesnpm run e2e # the user flows on real inputs