
Reverify کیا کرتا ہے
Reverify ایک AI معاون ریورس انجینئرنگ ٹول کِٹ ہے، جو بائنری تجزیے کے دوران فرضی یا غلط معلومات پیدا ہونے کے امکانات کم کرنے کے لیے بنائی گئی ہے۔ زبان کے ماڈل کی تشکیلِ نو پر بھروسا کرنے کے بجائے، Reverify اسے ایک مفروضہ سمجھتا ہے اور اصل بائنری کے خلاف اس کی جانچ کرتا ہے۔
طریقۂ کار سادہ ہے: ماڈل تجویز پیش کرتا ہے اور قطعی ٹولز اس کی تصدیق کرتے ہیں۔ Reverify بائٹس کو disassemble کر سکتا ہے، پیٹرنز اسکین کر سکتا ہے، executable فارمیٹس parse کر سکتا ہے، strings نکال سکتا ہے، کوڈ emulate کر سکتا ہے اور wire formats کا معائنہ کر سکتا ہے۔ جانچے گئے دعوے کو مشاہدہ شدہ شواہد کے ساتھ تین میں سے ایک نتیجہ ملتا ہے: VERIFIED، REFUTED، یا INCONCLUSIVE۔
Reverify صرف مجاز ریورس انجینئرنگ کے لیے استعمال کریں، جیسے malware analysis، CTF challenges، interoperability research، اور وہ software جس کے آپ مالک ہوں یا جس کے معائنے کی آپ کو اجازت حاصل ہو۔
اہم خصوصیات
- قطعی تصدیق: دعووں کا فیصلہ AI سے تیار کردہ وضاحت قبول کرنے کے بجائے target binary میں مشاہدہ شدہ بائٹس کی بنیاد پر کیا جاتا ہے۔
- Executable parsing: PE، ELF، اور Mach-O فائلوں کا معائنہ کریں، جس میں معاونت دستیاب ہونے کی صورت میں architecture، entry point، sections، imports، اور exports شامل ہیں۔
- Disassembly اور emulation: x86، x64، ARM، اور ARM64 کوڈ کا تجزیہ کریں؛ صلاحیتیں فعال backends کے لحاظ سے مختلف ہوتی ہیں۔
- Pattern اور string analysis:
??wildcards کے ساتھ AOB patterns اسکین کریں اور offsets سمیت ASCII یا UTF-16LE strings نکالیں۔ - Protocol inspection: schema کی ضرورت کے بغیر Protobuf اور TLV data decode کریں۔
- Reverse-engineering utilities: Frida hooks تیار کریں، aligned hex dumps بنائیں، اور binary diffs یا patches تیار کریں۔
- Agent integration: Claude Code اور Cursor جیسے ٹولز کے لیے Reverify کو Model Context Protocol server کے طور پر چلائیں۔
- Pure-Python fallback: بنیادی package، Ghidra یا لازمی native analysis engines کے بغیر کام کرتا ہے۔
تنصیب اور سیٹ اپ
Pure-Python Core انسٹال کریں
PyPI سے CLI اور MCP server انسٹال کریں:
pip install reverify
یہ pure-Python core فراہم کرتا ہے اور آغاز کرنے کا آسان ترین طریقہ ہے۔
اختیاری Mature Engines انسٹال کریں
بہتر parsing، disassembly، اور emulation کے لیے full extra انسٹال کریں:
pip install "reverify[full]"
Full installation Reverify کو disassembly کے لیے Capstone، CPU emulation کے لیے Unicorn، اور PE، ELF، اور Mach-O parsing کے لیے LIEF استعمال کرنے کے قابل بناتی ہے۔ اگر یہ packages دستیاب نہ ہوں تو Reverify اپنی pure-Python implementation پر واپس آ جاتا ہے۔
دیکھیں کہ کون سے engines فعال ہیں:
reverify backends
Checkout سے براہِ راست چلائیں
Repository کو package انسٹال کیے بغیر بھی استعمال کیا جا سکتا ہے:
python reverify/cli.py auto sample.bin --json
python reverify/cli.py parse-pe sample.exe --json
python reverify/cli.py disasm 90505831C0C3 --arch x86_64
بنیادی Binary Triage
فائل format اور architecture معلوم کرنے، sections کا معائنہ کرنے، اور نمایاں strings کی رپورٹ حاصل کرنے کے لیے auto command سے آغاز کریں:
reverify auto sample.bin --json
--json option اس وقت مفید ہے جب کسی دوسرے script، CI job، یا AI agent کو نتیجہ programmatically استعمال کرنا ہو۔
مرکوز executable parsing کے لیے PE، ELF، یا Mach-O فائلوں کے ساتھ parse استعمال کریں:
reverify parse sample.bin --json
Windows executable کے لیے dedicated PE parser، PE32 یا PE32+ headers، imports، اور exports کا معائنہ کر سکتا ہے:
reverify parse-pe sample.exe --json
Raw Bytes کو Disassemble کرنا
disasm command hexadecimal machine code decode کر سکتی ہے۔ یہ مثال ایک مختصر x86-64 sequence کا تجزیہ کرتی ہے:
reverify disasm 90505831C0C3 --arch x86_64
Disassembly یہ جانچنے کے لیے مفید ہے کہ آیا تجویز کردہ instruction sequence بائٹس سے مطابقت رکھتی ہے۔ Reverify binary section سے code بھی disassemble کر سکتا ہے، جس سے دعووں کو الگ تھلگ، ماڈل سے تیار کردہ تشریح کے بجائے file contents سے منسلک کیا جا سکتا ہے۔
Verification Loop استعمال کرنا
Reverify claim بائنری کے بارے میں ایک structured hypothesis ہوتا ہے۔ verify command دعوے کا جائزہ لیتی ہے اور toolkit کے مشاہدہ کردہ شواہد کے ساتھ اس کا status واپس کرتی ہے۔
Instruction Sequence کی تصدیق کریں
درج ذیل claim یہ جانچتی ہے کہ آیا 4096 offset پر موجود بائٹس کسی ایسے function prologue میں decode ہوتی ہیں جو push، mov، اور sub سے شروع ہوتا ہے:
reverify verify sample.bin --claim '{
"kind": "instructions",
"offset": 4096,
"mnemonics": ["push", "mov", "sub"],
"note": "function prologue"
}'
Reverify صرف مجوزہ تشریح دہراتا نہیں۔ یہ متعلقہ بائٹس کو پڑھ کر disassemble کرتا ہے، پھر رپورٹ کرتا ہے کہ مطلوبہ mnemonic sequence کی تائید ہوتی ہے یا نہیں۔
Emulated Result کی تصدیق کریں
آپ emulator میں machine code چلا کر اور اس کے نتیجے میں registers کی جانچ کر کے behavioral claim بھی test کر سکتے ہیں:
reverify verify - --claim '{
"kind": "emulate_result",
"code": "b805000000b90300000001c8c3",
"arch": "x86",
"expect_registers": {"eax": 8}
}'
یہ تصدیق کرتا ہے کہ فراہم کردہ routine eax کو 8 کے برابر چھوڑتی ہے۔ یہ ماڈل کی اس وضاحت کو قبول کرنے سے زیادہ مضبوط جانچ ہے کہ instructions بظاہر کیا compute کرتی ہیں۔
دستیاب Claim Types
Reverify درج ذیل claim kinds کو support کرتا ہے:
bytes_atمخصوص مقام پر موجود بائٹس کو چیک کرتا ہے۔pattern_presentیہ چیک کرتا ہے کہ بائٹس کا پیٹرن موجود ہے یا نہیں۔string_presentبائنری میں کسی اسٹرنگ کی موجودگی چیک کرتا ہے۔instructionsتجویز کردہ ہدایات کی ترتیب کو چیک کرتا ہے۔emulate_resultایمولیشن کے بعد رجسٹرز کے متوقع نتائج کو چیک کرتا ہے۔protobuf_fieldProtobuf فیلڈ کے دعوے کو چیک کرتا ہے۔pe_importPE امپورٹ کے دعوے کو چیک کرتا ہے۔
بیچ تصدیق اور CI گیٹنگ
بڑی تحقیقات کے لیے متعدد دعوے ایک JSON فائل میں رکھیں اور انہیں ایک ساتھ جانچیں:
reverify verify sample.bin --claims-file claims.json
اگر کسی بھی دعوے کی تردید ہو جائے تو CLI غیر صفر اسٹیٹس کے ساتھ بند ہوتا ہے۔ یہ رویہ اسے CI پائپ لائنز اور خودکار ایجنٹ ورک فلو کے لیے موزوں بناتا ہے: دوبارہ تشکیل دی گئی ساخت یا روٹین کو شائع کرنے یا اگلے مرحلے میں استعمال کرنے سے پہلے مسترد کیا جا سکتا ہے۔
ایک عملی ورک فلو یہ ہے:
- ابتدائی شواہد جمع کرنے کے لیے
auto،parse،strings، یاdisasmاستعمال کریں۔ - کسی تجزیہ کار یا ماڈل سے محدود دائرۂ کار والے دعوے تشکیل دلوائیں۔
- متعلقہ دعوے ایک JSON فائل میں محفوظ کریں۔
verifyچلائیں اور ہرREFUTEDیاINCONCLUSIVEنتیجے کا جائزہ لیں۔- دوبارہ تشکیل کو بہتر بنائیں اور اس وقت تک عمل دہرائیں جب تک حمایت یافتہ دعوے مشاہدہ شدہ شواہد پر مبنی نہ ہو جائیں۔
اضافی تجزیاتی کمانڈز
Reverify میں متعدد مخصوص کمانڈز شامل ہیں جو تصدیقی عمل میں معاون ثابت ہو سکتی ہیں:
- پیٹرن اسکیننگ: عین بائٹس اور
??وائلڈ کارڈز پر مشتمل AOB تلاش کے لیےpattern-scanاستعمال کریں۔ - اسٹرنگ اخذ کرنا: ASCII اور UTF-16LE اسٹرنگز تلاش کرنے اور ان کے آفسیٹس محفوظ رکھنے کے لیے
stringsاستعمال کریں۔ - مائیکرو ایمولیشن: CPU رجسٹر اور اسٹیک کے رویے کا معائنہ کرنے کے لیے
emulateاستعمال کریں۔ - وائر فارمیٹ کی تشریح: اسکیما کے بغیر ڈیٹا کے تجزیے کے لیے
decode-protobufیاdecode-tlvاستعمال کریں۔ - Frida انضمام: انٹرسیپٹر اسکرپٹ تیار کرنے کے لیے
gen-hookاستعمال کریں۔ - خام معائنہ: بائنری ڈیٹا کا منظم اور ہم محور منظر دیکھنے کے لیے
hexdumpاستعمال کریں۔ - تبدیلی کا تجزیہ: بائنری اختلافات اور پیچ تیار کرنے کے لیے
diff-patchاستعمال کریں۔ - حدود کا آڈٹ: دفاعی فائل سسٹم اور SSRF حدود کی جانچ کے لیے
audit-boundaryاستعمال کریں۔
دوبارہ تشکیل کے ذریعے عمل مکمل کرنا
reconstruct کمانڈ Reverify کے بند لوپ والے طریقۂ کار کو نافذ کرتی ہے: ایک ماڈل دعوے پیش کرتا ہے، قطعی ٹولز ان کا فیصلہ کرتے ہیں، اور یہ عمل ایک مستند نتیجے کی جانب تکرار کرتا ہے۔ یہ کسی ماڈل سے مکمل ساخت یا الگورتھم مانگنے اور اس کے پہلے جواب کو مستند سمجھنے سے بہتر ہے۔
قابلِ اعتماد نتائج کے لیے دعووں کو مختصر اور قابلِ آزمائش رکھیں۔ عین بائٹس، مختصر ہدایات کی ترتیب، درآمد شدہ فنکشن، یا رجسٹر کے نتیجے سے متعلق دعوے کی جانچ اور نظرثانی پورے بائنری کے بارے میں وسیع بیانیے کے مقابلے میں آسان ہوتی ہے۔
Reverify کو AI ایجنٹس سے جوڑنا
ریپوزٹری چیک آؤٹ سے MCP سرور اس طرح شروع کریں:
python reverify/mcp_server.py
اس کے بعد آپ Claude Code یا Cursor جیسے MCP سے مطابقت رکھنے والے کلائنٹ کو سرور شروع کرنے کے لیے ترتیب دے سکتے ہیں۔ ایجنٹ براہِ راست Reverify کے پارسنگ، ڈس اسمبلی، اسکیننگ، اور تصدیقی ٹولز استعمال کر سکتا ہے۔
MCP ٹول re_verify_claim ایجنٹس کے لیے یہی تصدیقی لوپ فراہم کرتا ہے۔ اس سے ایجنٹ کسی مفروضے کو جمع کرا سکتا ہے، VERIFIED، REFUTED، یا INCONCLUSIVE نتیجہ حاصل کر سکتا ہے، اور نتیجہ بتانے سے پہلے اپنے تجزیے پر نظرثانی کر سکتا ہے۔
اعلیٰ درجے کی تجاویز
- پہلے فعال بیک اینڈز چیک کریں: تجزیے سے پہلے
reverify backendsچلائیں تاکہ معلوم ہو کہ Capstone، Unicorn، اور LIEF دستیاب ہیں یا نہیں۔ - JSON آؤٹ پٹ کو ترجیح دیں: جب نتائج کو اسکرپٹس، ایجنٹس، یا CI سسٹمز پارس کریں گے تو
--jsonاستعمال کریں۔ - مشاہدے کو تشریح سے الگ رکھیں: اعلیٰ سطحی وضاحت لکھنے سے پہلے آفسیٹس، بائٹس، ڈی کوڈ شدہ ہدایات، اور رجسٹر اسٹیٹس ریکارڈ کریں۔
- غیر فیصلہ کن نتائج کو دیانت داری سے لیں:
INCONCLUSIVEنتیجہ تصدیق نہیں ہوتا۔ مزید شواہد جمع کریں یا دعوے کا دائرۂ کار محدود کریں۔ - متعلقہ دعووں کو بیچ میں چلائیں: ساختی اور رویّاتی جانچ کو claims فائل میں رکھیں تاکہ ایک مسترد شدہ مفروضہ خودکار دوبارہ تشکیل کو روک سکے۔
- رویّاتی دعووں کے لیے ایمولیشن استعمال کریں: اگر دعویٰ یہ بتاتا ہے کہ کوئی روٹین کیا حساب کرتی ہے تو صرف ڈس اسمبلی پر انحصار کرنے کے بجائے متوقع رجسٹر اسٹیٹ کی تصدیق کریں۔
- پورٹیبلٹی کے لیے خالص Python فال بیک استعمال کریں: بنیادی پیکیج سے آغاز کریں، پھر جب پختہ مقامی انجن درکار ہوں تو
reverify[full]انسٹال کریں۔
نتیجہ
Reverify اہم دعووں کو بائنری کے خلاف قطعی جانچ سے گزار کر AI کی معاونت سے ہونے والی ریورس انجینئرنگ کو زیادہ قابلِ دفاع بناتا ہے۔ اس کا CLI فوری جائزہ، پارسنگ، ڈس اسمبلی، پیٹرن اسکیننگ، ایمولیشن، اور بیچ تصدیق کی سہولت دیتا ہے، جبکہ اس کا MCP سرور AI ایجنٹس کو اسی شواہد پر مبنی ورک فلو تک رسائی فراہم کرتا ہے۔ نتیجہ پُراعتماد قیاس آرائی کے بجائے مشاہدہ شدہ بائٹس پر مبنی تجزیہ ہے۔
Reverify MIT لائسنس کے تحت ہے اور PyPI سے دستیاب ہے۔
