
Glass - بديل سريع ومجاني لـ IDA Pro
بمعنى شفاف وسلس
مفكِّك تفاعلي سريع وأصلي، يعطي أولوية لتطبيقات الجوال، وهو الخليفة الروحي لـ IDA Pro في سير عمل الهندسة العكسية لنظامي Android / iOS، مبني حول:
smali للتعامل مع APK / DEX / smaliarmv8-encode لـ AArch64 و ARMv7 (A32 / Thumb) — ملفات .so الأصلية و iOS Mach-Ogpui (Zed) لواجهة مستخدم أصلية متسارعة عبر GPUredb للتخزين الدائم المعنون بالمحتوىrquickjs لإضافات قابلة للبرمجة (مخطط لها)الترخيص: GPL-3.0-only (موروث من smali).
لقد استخدمنا جميعًا IDA Pro — إنه المعيار الصناعي للهندسة العكسية ولديه سنوات من الإضافات خلفه، لكنه بطيء ومكلف وقديم. Glass مبني بنسبة 100% على Rust الأصلي مع واجهة مستخدم متسارعة عبر GPU لتفاعل سلس. كما أنه مجاني ومفتوح المصدر بالكامل — ساهم معنا من فضلك.
arm64-v8a و armeabi-v7a من مكتبة في استعلام واحد). قواعد نحوية لأنماط البايت مع إخفاء + فجوات؛ وقواعد نحوية للتجميع المكتوب لـ AArch64 و ARMv7، مع قائمة إكمال تلقائي تدرك بنية التعليمات ISA.جولة سريعة عبر العروض الرئيسية — انقر على أي صورة مصغرة لرؤيتها بالحجم الكامل.
كل تحليل يقوم به Glass في الواجهة الرسومية يُكشف عنه أيضًا كأمر CLI يُخرج JSON منظمًا. نفس الملف التنفيذي glass هو نقطة الدخول إلى الأتمتة — اختر أمرًا فرعيًا وستحصل على نتيجة لمرة واحدة قابلة للبرمجة النصية، مثالية لخطوط أنابيب jq والتكامل المستمر CI.```sh
glass classes ./app.apk --package com.example. --text
glass callers ./libfoo.so --artifact libfoo.so --symbol "glass::main"
onCreate across DEX, machine-readable:glass search ./app.apk onCreate | jq '.data.hits[] | select(.kind=="method")'
glass types ./app.ipa --kind swift-class --text
glass type ./app.ipa --artifact app --name blackjack.ContentView
مرر `--text` للحصول على عرض قابل للقراءة البشرية، واحذفه للحصول على JSON.
المرجع الكامل: **[docs/cli-api.md](https://github.com/azw413/glass/blob/main/docs/cli-api.md)**.
هذا يعني أنه يمكنك كتابة سكربتات وأتمتة العمليات الشائعة.
## المهارات وMCP
كل أمر من أوامر CLI يتم كشفه أيضًا كأداة عبر خادم MCP (Model Context Protocol) مدمج، بحيث يمكن لأي مضيف يدعم MCP — Claude Desktop أو Cursor أو Zed أو عميلك الخاص — التحكم في Glass مباشرة للمساعدة في مهام الهندسة العكسية.```sh
# Print the machine-readable skill catalog (one JSON object listing
# every verb with its schema and an example invocation).
glass skills
# Run as an MCP stdio server. Plug into any MCP host's tool list.
glass mcp
للتسجيل مع Claude Desktop، أضف Glass إلى ~/Library/Application Support/Claude/claude_desktop_config.json:```json
{
"mcpServers": {
"glass": { "command": "/usr/local/bin/glass", "args": ["mcp"] }
}
}
يمكن للنموذج بعد ذلك استدعاء `inspect` و`symbols` و`disasm` و`cfg-of` و`dex-callers` و`search` وأي فعل آخر على أي حزمة (bundle) تشير إليها. تعود نتائج الأدوات في نفس غلاف JSON الذي ستحصل عليه من سطر الأوامر.
## البحث
ثلاثة محركات متكاملة، كلها متاحة من نفس لوحة ⌘F في الواجهة الرسومية وكأفعال CLI / MCP.
### البحث النصي الكامل
مطابقة ضبابية عبر الحزمة بالكامل للرموز الأصلية (native symbols) وفئات / طرق / حقول DEX والسلاسل النصية الحرفية في أقسام الكود والبيانات. تتم التصفية المباشرة أثناء الكتابة؛ وتُوجَّه النتائج إلى العرض الصحيح (قائمة العناوين الأصلية، عارض smali لأهداف DEX، عرض سداسي عشري لإصابات البيانات). تُبنى الفهارس في خيط خلفي بعد التحميل — تظهر شريحة تقدم أثناء ذلك.```sh
glass search ./app.apk onCreate # all things named like "onCreate"
glass search ./libfoo.so init --limit 20
مرجع سطر الأوامر: فعل search في docs/cli-api.md.
محرك أنماط على مستوى البايت. كل ذرة عبارة عن قناع سداسي عشري من حرفين (c0, e?, ?f, ??) أو فجوة (* = 0..=32 بايت، *(min..max) للحدود الصريحة). المطابقات لا تمتد عبر الأقسام. في لوحة الواجهة الرسومية، يبدّل ⌘2 إلى الوضع الثنائي؛ خانة اختيار الرمز فقط (مفعّلة افتراضيًا) تقيّد الفحص على أقسام النص حتى لا تغرق في نتائج البيانات عند البحث عن شكل تعليمة.```sh
mov w0, #1 ; retglass bin-search ./libfoo.so --artifact libfoo.so --pattern '20 00 80 52 c0 03 5f d6'
glass bin-search ./libfoo.so --artifact libfoo.so --pattern '?? ?? ?? 9? ?? ?? 4? 91'