Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
msynth — إطار عمل لفك تشويش الشيفرة لتبسيط تعبيرات الحساب المنطقي-الحسابي المختلط (MBA) | Kitploit
أدوات/GitHubGitHub/mrphrazer/msynth
التحليل الثابتالتحليل الديناميكي (عزل)تحليل الكودالهندسة العكسيةالأدوات والمكوناتتحليل الملفات الثنائيةالأوراق والأبحاث
GitHubmrphrazer/msynth

msynth

إطار عمل لفك تشويش الشيفرة لتبسيط تعبيرات الحساب المنطقي-الحسابي المختلط (MBA)

عرض المستودع
391287منذ 13 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

msynth

المؤلف: Tim Blazytko و Moritz Schloegel

msynth هو إطار عمل لإزالة تشويق الشيفرة (code deobfuscation) لتبسيط تعبيرات الحساب المختلط الثنائي (Mixed Boolean-Arithmetic, MBA). بالنظر إلى أوراكل تبسيط محسوب مسبقًا، فإنه يمر عبر تعبير معقد ممثل كشجرة بنية مجردة (AST) ويحاول تبسيط الأشجار الفرعية باستخدام تقنيات تبسيط جبرية ودلالية متنوعة. بدلاً من ذلك، يحاول تبسيط التعبيرات عبر تخليق البرامج العشوائي.

تم بناء msynth فوق Miasm ومستوحى من الأوراق البحثية

  • "QSynth: A Program Synthesis based Approach for Binary Code Deobfuscation" بواسطة Robin David و Luigi Coniglio و Mariano Ceccato (NDSS, BAR 2020)،

  • "Syntia: Synthesizing the Semantics of Obfuscated Code" بواسطة Tim Blazytko و Moritz Contag و Cornelius Aschermann و Thorsten Holz (USENIX Security 2017) و

  • "Search-Based Local Blackbox Deobfuscation: Understand, Improve and Mitigate" بواسطة Grégoire Menguy و Sébastien Bardin و Richard Bonichon و Cauim de Souza de Lima (CCS 2021).

  • "Augmenting Search-based Program Synthesis with Local Inference Rules to Improve Black-box Deobfuscation" بواسطة Vidal Attias و Nicolas Bellec و Grégoire Menguy و Sébastien Bardin و Jean-Yves Marion (CCS 2025).

  • "Efficient Deobfuscation of Linear Mixed Boolean-Arithmetic Expressions" بواسطة Benjamin Reichenwallner و Peter Meerwald-Stadler (CheckMATE 2022) و

  • "Simplification of General Mixed Boolean-Arithmetic Expressions: GAMBA" بواسطة Benjamin Reichenwallner و Peter Meerwald-Stadler (WORMA 2023).

يمكن استخدامه بالاقتران مع محرك التنفيذ الرمزي الخاص بـ Miasm لتبسيط التعبيرات المعقدة في الشيفرة المشوشة أو كأداة مستقلة للتلاعب بتبسيط MBA.

original: {((((((((RSI[0:32] ^ 0xFFFFFFFF) & RDX[0:32]) + RSI[0:32]) ^ 0xFFFFFFFF) & RDX[0:32]) + ((RSI[0:32] ^ 0xFFFFFFFF) & RDX[0:32]) + RSI[0:32]) & (RDX[0:32] ^ 0xFFFFFFFF)) + -(((((((RSI[0:32] ^ 0xFFFFFFFF) & RDX[0:32]) + RSI[0:32]) ^ 0xFFFFFFFF) & RDX[0:32]) + ((RSI[0:32] ^ 0xFFFFFFFF) & RDX[0:32]) + RSI[0:32]) | (((RSI[0:32] ^ 0xFFFFFFFF) & RDX[0:32]) + RSI[0:32])) + ({RDI[0:32] & ({RDI[0:32] & RSI[0:32] 0 32, 0x0 32 64} * 0x2 + {RDI[0:32] ^ RSI[0:32] 0 32, 0x0 32 64})[0:32] 0 32, 0x0 32 64} * 0x2 + {((((RSI[0:32] ^ 0xFFFFFFFF) & RDX[0:32]) + RSI[0:32]) & RSI[0:32]) + (((RDI + {(RDI[0:32] ^ 0xFFFFFFFF) | RDX[0:32] 0 32, 0x0 32 64} + 0x1)[0:32] ^ 0xFFFFFFFF) & RDX[0:32]) + (RDI[0:32] ^ ({RDI[0:32] & RSI[0:32] 0 32, 0x0 32 64} * 0x2 + {RDI[0:32] ^ RSI[0:32] 0 32, 0x0 32 64})[0:32]) + ((RDI[0:32] ^ 0xFFFFFFFF) | RDX[0:32]) + (RDI + RDX + 0x1)[0:32] 0 32, 0x0 32 64})[0:32]) * 0x2 0 32, 0x0 32 64}

simplified: {(-RDX[0:32] + ((RDI[0:32] + RDX[0:32] + RSI[0:32]) << 0x1)) * 0x2 0 32, 0x0 32 64}

الميزات الأساسية

  • يبسط معظم تعبيرات MBA الموجودة في البراري
  • يمكنه تبسيط التعبيرات الكاملة إلى ثوابت
  • يستخدم جداول بحث كبيرة محسوبة مسبقًا (للكفاءة)
  • يمكنه التحقق من سلامة التبسيطات باستخدام محلل SMT
  • يمكنه تعلم التعبيرات من سلوك المدخلات والمخرجات
  • يدعم التوازي
  • قابل للتكامل بالكامل في محرك التنفيذ الرمزي الخاص بـ Miasm

التثبيت

لتثبيت msynth اتبع هذه الخطوات:

git clone https://github.com/mrphrazer/msynth.git
cd msynth

# optionally: use a virtual environment
python -m venv msynth-env
source msynth-env/bin/activate

# install dependencies
pip install -r requirements.txt

# install msynth
pip install .

# unzip database
unzip -d database -q database/3_variables_constants_7_nodes.txt.zip

عند تحديث بيئة موجودة، أعد تثبيت التبعيات لالتقاط إصدار Miasm المثبت. قد تُبلغ إصدارات Miasm المختلفة عن نفس إصدار الحزمة، لذا قد يترك التثبيت العادي الإصدار الأقدم مثبتًا:

python -m pip install --force-reinstall -r requirements.txt

جداول البحث للتبسيط المحسوبة مسبقًا

لإنشاء أوراكل، نحتاج إلى جدول بحث للتبسيط (أو قاعدة بيانات) يحتوي على عدد كبير من التعبيرات. استخدمنا بحثًا تعداديًا لحساب التعبيرات مسبقًا بحجم بت 8 و16 و32 و64 وفقًا للمواصفات التالية:

  • حتى خمسة متغيرات p0 و p1 و p2 و p3 و p4

  • عوامل الاقتطاع (truncation) لخفض المتغيرات (إذا لزم الأمر) إلى 32 و16 و8 بت،

  • عمليات المتجهات البتية: الجمع والطرح والضرب والنفي (سالب أحادي) والعطف/الفصل/الاستبعاد/النفي البتي والإزاحة المنطقية لليسار،

  • وبالنسبة لبعض الجداول، الثوابت 0x0 و 0x1 و 0x2 و 0x80 و 0xff و 0x800 و 0xffff و 0x8000_0000 و 0xffff_ffff و 0x8000_0000_0000_0000 و 0xffff_ffff_ffff_ffff.

تحتوي قاعدة البيانات المثالية المضمنة في database على جميع التوليفات البالغ عددها 1,293,020 والتي تم إنشاؤها باستخدام ثلاثة متغيرات والثوابت 0x0 و 0x1 و 0x2 لما يصل إلى 7 عقد (على سبيل المثال، ((p0 + p1) * (p2 ^ 0x2)) أو ((p0 - p2) << (p1 + p2))). يمكن العثور على قواعد بيانات أكبر محسوبة مسبقًا هنا (~31GB غير مضغوطة). لاحظ أن الشيفرة الخاصة بحساب التعبيرات مسبقًا ليست جزءًا من هذا المستودع. نخطط لإصدارها في وقت ما في المستقبل.

تخليق البرامج العشوائي

كبديل لجداول البحث المحسوبة مسبقًا، يدعم msynth تبسيط التعبيرات عبر تخليق البرامج العشوائي. بالنسبة لتعبير حسابي معقد معين، يمكن لـ msynth تعلم تعبير أقصر يشترك في نفس سلوك المدخلات والمخرجات. في الوقت الحالي، يتم تنفيذه كمكون مستقل. ومع ذلك، نخطط لدمج كلا نهجي التبسيط في المستقبل.

يستخدم مسار التخليق أيضًا قواعد الاستدلال بالبحث المعياري (Search Modulo Inference Rules, Smir) بشكل افتراضي، وفقًا لورقة CCS 2025 المرتبطة أعلاه. يعزز Smir البحث المحلي من خلال اشتقاق مرشحين قريبين للأنماط الصعبة التخليق مثل الثوابت العشوائية والأقنعة والإزاحات والدورانات الثابتة والتعبيرات الأفينية والتعبيرات متعددة الحدود المحدودة.

مثال على الاستخدام

أولاً، لنقم بإنشاء أوراكل تبسيط يستخدم قاعدة بيانات تبسيط محسوبة مسبقًا كمدخل ويجمع التعبيرات الموجودة فيها في فئات تكافؤ.

$ python scripts/gen_oracle.py database/3_variables_constants_7_nodes.txt oracle.pickle
msynth - INFO: Computing oracle for 30 variables and 50 samples. 
               Using library at 'database/3_variables_constants_7_nodes.txt'
msynth - INFO: Writing oracle to oracle.pickle
msynth - INFO: Done in 632.84 seconds

اعتمادًا على حجم قاعدة بيانات التبسيط المحسوبة مسبقًا، قد يستغرق هذا بضع دقائق أو ساعات، حسب جهاز الكمبيوتر الخاص بك. بدلاً من ذلك، يمكنك استخدام oracle.pickle المحسوب مسبقًا.

اختياريًا، يمكن استخدام علامة --sqlite لإنشاء الأوراكل بتنسيق SQLite، مما يتيح التحميل الكسول وأوقات بدء تشغيل أسرع بكثير:

$ python scripts/gen_oracle.py database/3_variables_constants_7_nodes.txt oracle.db --sqlite

بعد ذلك، يمكن استخدام الأوراكل المُسلسل لتبسيط التعبيرات المعقدة:

from msynth import Simplifier

# initialize simplifier
simplifier = Simplifier(oracle_path)
# simplify expression
simplified = simplifier.simplify(expression)

بدلاً من ذلك، يمكننا تبسيط التعبيرات المعقدة عبر تخليق البرامج وتعلم التعبيرات بنفس سلوك المدخلات والمخرجات:

from msynth import Synthesizer

# initialize synthesizer
synthesizer = Synthesizer()
# simplify via program synthesis
simplified = synthesizer.simplify(expression)

من الممكن أيضًا دمج تبسيط التعبيرات مع محرك التنفيذ الرمزي الخاص بـ Miasm:

$ python scripts/symbolic_simplification.py samples/mba_challenge 0x1290 oracle.pickle
[snip]
before: {({RDI[0:32] & RSI[0:32] 0 32, 0x0 32 64} * 0x2 + {RDI[0:32] ^ RSI[0:32] 0 32, 0x0 32 64})[0:32] 0 32, 0x0 32 64}

simplified: {RDI[0:32] + RSI[0:32] 0 32, 0x0 32 64}
[snip]

يمكن العثور على أمثلة استخدام إضافية في دليل scripts.

القيود والعمل المستقبلي

  • تخليق الثوابت الجزئية غير مدعوم
  • دعم محدود للاقتطاعات وتمديدات الصفر/الإشارة
  • قد لا تكون جداول الحساب المسبق كاملة

الاتصال

تنزيل الأداة