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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
qsynthesis — مُركّب Greybox مُوجَّه لفكّ تشويش تعليمات لغة التجميع. | Kitploit
أدوات/GitHubGitHub/quarkslab/qsynthesis
التحليل الثابتالتحليل الديناميكي (عزل)تحليل الثغرات الأمنيةتحليل الكودالهندسة العكسيةالأدوات والمكوناتتحليل الملفات الثنائيةالأوراق والأبحاث
GitHubquarkslab/qsynthesis

qsynthesis

مُركّب Greybox مُوجَّه لفكّ تشويش تعليمات لغة التجميع.

عرض المستودع
178171منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Qsynthesis

QSynthesis هي واجهة برمجة تطبيقات Python3 لتنفيذ تخليق البرامج القائم على الإدخال/الإخراج لتعبيرات المتجهات البتية. تهدف إلى تسهيل إزالة تشويش الشيفرة. تعتمد الخوارزمية على نهج الصندوق الرمادي الذي يجمع بين التخليق القائم على الإدخال/الإخراج كصندوق أسود والبحث في شجرة التركيب المجردة (AST) كصندوق أبيض لتخليق التعبيرات الفرعية (إذا تعذّر تخليق العقدة الجذرية).

وُصفت هذه الخوارزمية أصلاً في ورشة BAR الأكاديمية:

  • QSynth: A Program Synthesis based Approach for Binary Code Deobfuscation (المعايير المستخدمة متاحة: هنا)

تم إصدار الشيفرة كجزء من محاضرة Black Hat التالية:

  • Greybox Program Synthesis: A New Approach to Attack Dataflow Obfuscation

إخلاء مسؤولية: هذا الإطار تجريبي، ويجب استخدامه لأغراض التجريب فقط. يهدف بشكل أساسي إلى تحفيز البحث في هذا المجال.

التوثيق

التثبيت والأمثلة وتوثيق واجهة برمجة التطبيقات متاحة في التوثيق المخصص: Documentation

الوظائف

يعتمد التخليق الأساسي على محرك Triton الرمزي الذي بُني عليه الإطار بأكمله. يوفر الوظائف التالية:

  • تخليق تعبيرات المتجهات البتية
  • القدرة على التحقق عبر SMT من التكافؤ الدلالي للتعبيرات المُخلَّقة
  • القدرة على تخليق الثوابت (إذا كان التعبير يرمّز ثابتاً)
  • القدرة على تحسين الـ oracles (الجداول المحسوبة مسبقاً) بمرور الوقت عبر آلية تعلّم
  • القدرة على إعادة تجميع التعبيرات المُخلَّقة إلى لغة التجميع
  • القدرة على تقديم الـ oracles عبر واجهة REST API لتسهيل استخدام التخليق
  • إضافة IDA توفر تكاملاً مع التخليق

البدء السريع

التثبيت

لكي يعمل، يجب أولاً تثبيت Triton: install documentation. لا يثبّت Triton نفسه تلقائياً في virtualenv، انسخه إلى venv الخاص بك أو استخدم --system-site-packages عند تهيئة venv.

ثم:

$ git clone https://github.com/quarkslab/qsynthesis.git
$ cd qsynthesis
$ pip3 install '.[all]'

سيقوم [all] بتثبيت جميع التبعيات (راجع التوثيق للتثبيت الخفيف).

توليد الجداول

تتطلب خوارزمية التخليق توليد جداول oracle مشتقة من قواعد نحوية (مجموعة من المتغيرات والعوامل). يوفر تثبيت Qsynthesis أداة qsynthesis-table-manager التي تتيح التعامل مع الجداول. يقوم الأمر التالي بتوليد جدول بثلاثة متغيرات من 64 بت، و5 عوامل باستخدام متجه من 16 مدخلاً. نحدّد التوليد بـ 5 ملايين مدخلة.

$ qsynthesis-table-manager generate -bs 64 --var-num 3 --input-num 16 --random-level 5 --ops AND,NEG,MUL,XOR,NOT --watchdog 80 --limit 5000000 my_oracle_table
Generate Table
Watchdog value: 80.0
Depth 2 (size:3) (Time:0m0.23120s)
Depth 3 (size:21) (Time:0m0.23198s)
Depth 4 (size:574) (Time:0m0.26068s)
Depth 5 (size:400858) (Time:0m21.23231s)
Threshold reached, generation interrupted
Stop required
Depth 5 (size:5000002) (Time:4m52.56009s) [RAM:9.52Gb]

ملاحظة: عملية التوليد تستهلك ذاكرة الوصول العشوائي (RAM)، ويتيح --watchdog تعيين نسبة من الذاكرة يتم مقاطعة التوليد عند تجاوزها.

تخليق تعبير متجه بتّي

يمكننا بعد ذلك محاولة تبسيط تعبير يبدو مشوّشاً باستخدام:

from qsynthesis import SimpleSymExec, TopDownSynthesizer, InputOutputOracleLevelDB

blob = b'UH\x89\xe5H\x89}\xf8H\x89u\xf0H\x89U\xe8H\x89M\xe0L\x89E\xd8H\x8bE' \
       b'\xe0H\xf7\xd0H\x0bE\xf8H\x89\xc2H\x8bE\xe0H\x01\xd0H\x8dH\x01H\x8b' \
       b'E\xf8H+E\xe8H\x8bU\xe8H\xf7\xd2H\x0bU\xf8H\x01\xd2H)\xd0H\x83\xe8' \
       b'\x02H!\xc1H\x8bE\xe0H\xf7\xd0H\x0bE\xf8H\x89\xc2H\x8bE\xe0H\x01\xd0' \
       b'H\x8dp\x01H\x8bE\xf8H+E\xe8H\x8bU\xe8H\xf7\xd2H\x0bU\xf8H\x01\xd2' \
       b'H)\xd0H\x83\xe8\x02H\t\xf0H)\xc1H\x89\xc8H\x83\xe8\x01]\xc3'

# Perform symbolic execution of the instructions
symexec = SimpleSymExec("x86_64")
symexec.initialize_register('rip', 0x40B160)  # arbitrary address
symexec.initialize_register('rsp', 0x800000)  # arbitrary stack
symexec.execute_blob(blob, 0x40B160)
rax = symexec.get_register_ast("rax")  # retrieve rax register expressions

# Load lookup tables
ltm = InputOutputOracleLevelDB.load("my_oracle_table")

# Perform Synthesis of the expression
synthesizer = TopDownSynthesizer(ltm)
synt_rax, simp = synthesizer.synthesize(rax)

print(f"expression: {rax.pp_str}")
print(f"synthesized expression: {synt_rax.pp_str} [{simp}]")

القيود

  • دقة التخليق محدودة بمدى شمولية الجداول المحسوبة مسبقاً
  • توليد الجداول محدود باستهلاك الذاكرة
  • لا يمكن أن تتضمن إعادة التجميع متغير ذاكرة، فالوجهة بالضرورة سجل وتعتمد المعمارية على llvmlite (وبالتالي في الغالب x86_64)
  • تشير الشيفرة إلى تخليق قائم على التتبع وهو معطّل (لأن الإطار الأساسي ليس مفتوح المصدر بعد)

المؤلفون

  • Robin David (@RobinDavid), Quarkslab

المساهمون

شكر كبير للمساهمين في هذا البحث:

  • Luigi Coniglio
  • Jonathan Salwan
تنزيل الأداة