
نظرة أولى على ملف ثنائي أو حزمة تطبيق: تحليل ساكن بدون تنفيذ مع أدلة. واجهة سطر أوامر، وخادم MCP بـ 15 أداة، وواجهة ويب محلية، تعتمد على Node فقط.
English · Deutsch · Español · Français · Português (Brasil) · Русский · 中文 · 日本語 · 한국어
جرّبه · حالات الاستخدام · التثبيت · ما الذي يقرأه · CLI · واجهة الويب · لوكلاء الذكاء الاصطناعي · المحركات · الحدود · مقارنة مع REA · كيف يعمل · المساهمة · الأسئلة الشائعة
نظرة أولى سريعة ومحلية ومدعومة بالأدلة على البرمجيات، للمطورين ووكلاء الذكاء الاصطناعي.
يقرأ hexvero الملفات التنفيذية وتطبيقات Electron وملفات APK والأرشيفات وقواعد البيانات ولقطات الشبكة دون تشغيلها. يخبرك بما تحتويه البرمجيات، وما تكشفه، ومن أين قُرئت كل حقيقة، ومدى تأكدها، وما لم يتمكن من إثباته. واجهة سطر أوامر واحدة، وخادم MCP واحد لوكلاء البرمجة، وواجهة ويب محلية واحدة. لا شيء يغادر جهازك.

npx hexvero analyze ./MyApp.app/Contents/Resources/app.asar
Node.js 22.12 أو أحدث هو كل ما يتطلبه الأمر. من ذاكرة npm المؤقتة الفارغة، استغرق أول نتيجة أمرًا واحدًا وحوالي تسع ثوانٍ على حاسوب محمول، بما في ذلك التنزيل. تشغيل حقيقي على تطبيق Electron الصغير في examples/:
$ hexvero analyze examples/notesdesk-1.4.0.asar
Summary
Electron ASAR: 4 JavaScript modules, 6 IPC channels
Findings
○ nodeIntegration: true in a BrowserWindow @ main.js:14
contextIsolation is on for the same window, so page scripts do not get require(). Node integration keeps the renderer out of the Chromium sandbox.
○ sandbox: false in a BrowserWindow @ main.js:15
The renderer process runs without the Chromium sandbox.
● 6 IPC channels @ main.js:25
app:quit, notes:list, notes:save, settings:get, settings:set, shell:open (collections ipcChannels, ipc)
● 6 members exposed to pages as window.notesdesk @ preload.js:4
getSetting, setSetting, listNotes, saveNote, quit, openInShell (collection contextBridge)
○ 2 network endpoints read from the code @ renderer/app.bundle.js:11
${…}/notes/sync, https://telemetry.notesdesk.example/collect (collection endpoints)
● 1 storage key read from the code @ renderer/app.bundle.js:10
notesdesk.token (collection storage)
… (preload script, list of collections)
Next
Which IPC channels can a page reach, and who handles them?
hexvero collection examples/notesdesk-1.4.0.asar ipcChannels
What does the preload script expose to web content?
hexvero collection examples/notesdesk-1.4.0.asar contextBridge
… (two more)
نقطة ممتلئة هي حقيقة مقروءة من الملف، ونقطة مجوّفة هي استنتاج من نمط؛ @ main.js:14 هو موضع قراءتها. تُعرض الإعدادات كما كُتبت، وليس كما تفترض إعدادات Electron الافتراضية. ${…} تشير إلى الجزء من العنوان الذي يُحسب وقت التشغيل. تجمع مجموعة windows الخاصية nodeIntegration وcontextIsolation وsandbox لكل نافذة جنبًا إلى جنب كـ true أو false أو computed أو not written، وتوضح ما يترتب عليها مجتمعة؛ أما القيمة التي تستند إلى الإعداد الافتراضي لـ Electron للإصدار المذكور في package.json فتُوسم بـ default on / default off. القواعد ومصادرها في docs/electron-findings.md. لا تكون نتيجة IPC نقطة ممتلئة إلا إذا أمكن تتبع كل استدعاء على شكل IPC؛ وإلا فإن القيود تسمّي الاستدعاءات التي تعذّر تتبعها، مع الملف والسطر.
1. فهم تطبيق غير مألوف. نزّلت ملفًا ثنائيًا أو تطبيق Electron أو ملف APK. يخبرك hexvero ما هو، وما الذي يكشفه، وأين الدليل، ويقترح ما ينبغي النظر إليه تاليًا. وفي برنامج أصلي يسمّي إجراءات التقوية والواردات الجديرة بالنظر:
$ cc -O2 -o demo examples/native/demo-v2.c && hexvero analyze demo
Findings
● Imports functions that start other programs or a shell: system
Read from the import table. Whether and with what input they are called is not established by static reading; a call graph (hexvero calls) shows who calls them. (collection imports)
● Hardening: PIE yes, stack canary no, ARC no, code signature yes, stripped yes
$ hexvero calls demo radare2 main --goal system # with radare2, rizin or Ghidra installed
radare2 path main → sym.imp.system · found
main
└ sym._run_tool
└ sym.imp.system
2. قارن بين نسختين. ما الذي تغيّر بين بناءين، قائمة بقائمة، مع العنصر كدليل. لا يُبلَّغ عن الكود الذي انتقل فقط كمتغيّر.
$ hexvero compare examples/notesdesk-1.4.0.asar examples/notesdesk-1.5.0.asar webPreferences
webPreferences: 0 added, 0 removed, 2 changed, 2 unchanged · matched by file+windowName+key
~ main.js::win::nodeIntegration value: true → false
~ main.js::win::sandbox value: false → true
$ hexvero compare examples/notesdesk-1.4.0.asar examples/notesdesk-1.5.0.asar windows
windows: 0 added, 0 removed, 1 changed, 0 unchanged · matched by file+windowName
~ main.js::win nodeIntegration: true → false, nodeIntegrationInEffect: "on" → "off", sandbox: false → true, sandboxInEffect: "off" → "on"
$ hexvero compare examples/notesdesk-1.4.0.asar examples/notesdesk-1.5.0.asar contextBridge
contextBridge: 1 added, 1 removed, 0 changed, 5 unchanged · matched by api+member
+ notesdesk::checkUpdate
- notesdesk::openInShell
لا يتم تجاهل أي شيء افتراضيًا؛ فالكود الذي انتقل فقط داخل ملف ثنائي أصلي يُحتسب كـ relocated. تتم مطابقة النوافذ حسب المتغير المُسنَد إليه (win)، لذا فإن إضافة نافذة لا تؤدي إلى إقران خاطئ للنوافذ الأخرى. العنصر الموجود على جانب واحد فقط يكون added أو removed فقط إذا كان الجانب الآخر قد قرأ الملف الذي يوجد فيه؛ وإلا فإنه يكون unknown (?).
3. دع وكيل ذكاء اصطناعي يحقق. يسجّل npx hexvero setup --apply خادم MCP لدى وكلاء البرمجة الذين يعثر عليهم (Claude Code وCodex وCursor وVS Code و14 غيرها)، ويثبّت npx hexvero setup --skill --apply مهارة تعلّم حلقة التحقيق. بعد ذلك يفتح الوكيل هدفًا، ويقرأ إجابة أولى صغيرة مع اقتراحات للاستدعاءات التالية، ويتصفح فقط القوائم التي يحتاجها، ويستشهد بـ file:line لكل ادعاء. يُعامل النص داخل الهدف كبيانات، وليس كتعليمات أبدًا؛ ويقوم اختبار بزرع نص كهذا في هدف للتحقق من ذلك. راجع لوكلاء الذكاء الاصطناعي.