Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/trailofbits/cobra
التحليل الثابتتحليل الكودالهندسة العكسيةالتشفيرتحليل الملفات الثنائية
GitHubtrailofbits/cobra

CoBRA

إعادة البناء القائمة على المعاملات للعمليات الحسابية — مُبسِّط تعبيرات الحساب المختلط البولي-الحسابي (MBA) لإزالة التشويش

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CoBRA

إعادة بناء حسابية قائمة على المعاملات — مُبسِّط تعبيرات الحساب المنطقي المختلط (Mixed Boolean-Arithmetic).

License: Apache-2.0 C++23 Tests

يقوم CoBRA بإزالة التعتيم (deobfuscation) عن التعبيرات التي تخلط بين العمليات الحسابية (+, -, *) والعمليات المنطقية على البتات (&, |, ^, ~) وعمليات الإزاحة (<<, >>) — وهي تقنية شائعة الاستخدام في تعتيم البرمجيات.

root@kitploit:~
$ cobra-cli --mba "(x&y)+(x|y)"
x + y

$ cobra-cli --mba "((a^b)|(a^c)) + 65469 * ~((a&(b&c))) + 65470 * (a&(b&c))" --bitwidth 16
67 + (a | b | c)

$ cobra-cli --mba "((a^b)&c) | ((a&b)^c)"
c ^ a & b

$ cobra-cli --mba "(x&0xFF)+(x&0xFF00)" --bitwidth 16
x

$ cobra-cli --mba "(x ^ 0x10) + 2 * (x & 0x10)"
16 + x

$ cobra-cli --mba "x << 3"
8 * x
مزيد من الأمثلة
root@kitploit:~
$ cobra-cli --mba "~x"
~x

$ cobra-cli --mba "(x^y)*(x&y) + 3*(x|y)"
(x ^ y) * (x & y) + 3 * (x | y)

$ cobra-cli --mba '-357*(x&~y)*(x&y)+102*(x&~y)*(x&~y)+374*(x&~y)*~(x^y)
  -306*(x&~y)*~(x|y)-17*(x&~y)*~(x|~y)-105*~(x|~y)*(x&y)+30*~(x|~y)*(x&~y)
  +110*~(x|~y)*~(x^y)-90*~(x|~y)*~(x|y)-5*~(x|~y)*~(x|~y)+34*(x&~y)*~x
  -85*(x&~y)*~y+10*~(x|~y)*~x-25*~(x|~y)*~y'
22 * (x & y) + -17 * x + -5 * y

كيف يعمل

يستخدم CoBRA منسّقًا قائمًا على قائمة عمل (worklist) لتبسيط التعبيرات. يدخل كل تعبير إلى قائمة العمل كعنصر عمل مُعلَّم بنوع حالة. يختار المجدول (scheduler) المرحلة التالية بناءً على حالة العنصر، والاعتماديات المسبقة، وذاكرة تخزين مؤقتة للمحاولات تمنع العمل المتكرر.

تُنظَّم 36 مرحلةً منفصلة في عائلات: معالجة شجرة التحليل (AST)، والتقنيات القائمة على التوقيع، والتقنيات شبه الخطية، والتفكيك، والرفع. بعض المراحل تُطلق بدائل محلية أو حلولًا فرعية تُحسم عبر مجموعات تنافسية (competition groups)؛ وخارج هذه المجموعات، تعيد قائمة العمل أول مرشح علوي مُتحققٍ منه بالكامل. تُتحقق جميع النتائج عبر فحص عشوائي للمدخلات (الافتراضي) أو عبر إثبات تكافؤ باستخدام Z3 (--verify).

root@kitploit:~
Input Expression
       |
  [Worklist Scheduler]
       |
  Work items flow through state kinds:
       |
  kFoldedAst ──> AST processing passes
       |         (classify, lower, rewrite)
       |
       +──> kSignatureState ──> Signature techniques
       |    (pattern match, CoB, ANF, polynomial recovery)
       |
       +──> kSemilinearNormalizedIr ──> Semilinear techniques
       |    (normalize, recover structure, refine, reconstruct)
       |
       +──> kCoreCandidate / kRemainderState ──> Decomposition
       |    (extract core, classify residual, solve)
       |
       +──> kLiftedSkeleton ──> Lifting
       |    (virtual variable substitution, outer solve)
       |
       +──> kCandidateExpr ──> Verification
            (spot-check or Z3 proof)
       |
  Simplified Expression

التقنيات القائمة على التوقيع تقيّم التعبير على جميع المدخلات المنطقية للحصول على متجه توقيع. يحوّل فراشي CoB (butterfly) لاستعادة معاملات أساس جداء AND. وتتعامل مطابقة الأنماط، وANF، واستعادة الحدوديات مع مستويات تعقيد مختلفة.

التقنيات شبه الخطية تتعامل مع التعبيرات ذات الأقنعة الثابتة (مثل x & 0xFF). يُفكَّك التعبير إلى ذرّات bitwise موزونة، ثم يعمل استرداد البنية وتحسين الحدود على تبسيط التمثيل الوسيط، وتُعيد تجميع OR المقسمة حسب البتات بناء النتيجة النهائية.

التفكيك يستهدف التعبيرات المختلطة التي تحتوي على جداءات من تعبيرات فرعية bitwise. يُستخرج نواة حدودية، ثم تُصنَّف البقايا وتُحل (حدودية، أو منطقية-صفرية/شبحية، أو قالب احتياطي).

الرفع (Lifting) يستبدل التعبيرات الفرعية المعقدة بمتغيرات افتراضية، ويحل الهيكل الخارجي المبسّط، ثم يعيد التعويض.

الميزات

  • تبسيط MBA الخطي — مجاميع موزونة من ذرّات bitwise عبر متجه التوقيع وتحويل CoB
  • مطابقة الأنماط المقيّسة — k * f(vars) + c مع تفكيك شانون للتعبيرات المنطقية ذات 4-5 متغيرات
  • دعم شبه خطي — ذرّات ذات أقنعة ثابتة مع خفض الثوابت عبر XOR/OR/NOT-AND، واسترداد البنية، وتحسين الحدود، وإعادة البناء المقسمة حسب البتات
  • استرداد الحدوديات — حدود متعددة الخطية وقوى مفردة عبر تقسيم المعاملات والفرق المحدود
  • معالجة الجداءات المختلطة — محرك تفكيك مع استخراج النواة وحل البقايا وتصنيف البقايا الشبحية
  • رفع التعبيرات الفرعية — استبدال الأشجار الفرعية المعقدة بمتغيرات افتراضية لتقليل أبعاد المسألة
  • منسّق قائمة العمل — جدولة مراحل تدرك الرسوم البيانية الحلقية الموجهة (DAG) مع إزالة التكرار وبحث محدود
  • مجموعات تنافسية — الفروع البديلة المحلية والحلول الفرعية تستخدم اختيار الفائز بناءً على التكلفة مع استمراريات
  • إزاحات ثابتة — << يُحوَّل إلى ضرب، و>> يُبسَّط عبر التقنيات شبه الخطية
  • تنظيف ANF — الامتصاص، واستخراج العوامل المكعبة المشتركة، والتعرف على OR
  • عرض بت قابل للتكوين — حساب معياري من 1 إلى 64 بت
  • حذف المتغيرات المساعدة — يقلل عدد المتغيرات عندما تختصر الحدود
  • تحقق Z3 — فحص تكافؤ اختياري للمخرجات المبسّطة
  • اختبار ذاتي بالفحص العشوائي — تحقق خفيف بمدخلات عشوائية عندما يكون Z3 غير متاح
  • إضافة LLVM pass — تكامل مباشر مع خطوط أنابيب المترجم (يتطلب LLVM 19-22)

البناء

راجع BUILD.md للحصول على التفاصيل الكاملة بما في ذلك الاعتماديات الاختيارية (LLVM، Z3).

root@kitploit:~
# Build dependencies (Abseil, Highway; optionally GoogleTest, LLVM, Z3)
cmake -S dependencies -B build-deps -DCMAKE_BUILD_TYPE=Release
cmake --build build-deps

# Build CoBRA
cmake -S . -B build \
  -DCMAKE_PREFIX_PATH=$(pwd)/build-deps/install \
  -DCMAKE_BUILD_TYPE=Release
cmake --build build

# (Optional) Build and run tests
cmake -S dependencies -B build-deps -DCMAKE_BUILD_TYPE=Release -DCOBRA_BUILD_TESTS=ON
cmake --build build-deps
cmake -S . -B build \
  -DCMAKE_PREFIX_PATH=$(pwd)/build-deps/install \
  -DCMAKE_BUILD_TYPE=Release \
  -DCOBRA_BUILD_TESTS=ON
cmake --build build
ctest --test-dir build --output-on-failure

مع إضافة LLVM Pass

root@kitploit:~
cmake -S . -B build \
  -DCMAKE_PREFIX_PATH=$(pwd)/build-deps/install \
  -DCOBRA_BUILD_LLVM_PASS=ON \
  -DCMAKE_BUILD_TYPE=Release
cmake --build build

الاستخدام

root@kitploit:~
# Basic simplification
cobra-cli --mba "(x&y)+(x|y)"

# Specify bitwidth
cobra-cli --mba "(x&0xFF)+(x&0xFF00)" --bitwidth 16

# Enable Z3 equivalence verification
cobra-cli --mba "(a^b)+(a&b)+(a&b)" --verify

# Verbose output (show intermediate pipeline steps)
cobra-cli --mba "(x&y)+(x|y)" --verbose

الخيارات

بنية المشروع

root@kitploit:~
lib/core/                Core simplification engine (~50 source files)
  Orchestrator             Worklist scheduler, state machine, main simplification loop
  OrchestratorPasses       39-pass registry with DAG-aware scheduling
  CompetitionGroup         Multi-technique racing and winner selection
  ContinuationTypes        Deferred recombination data for pass composition
  JoinState                Multi-operand join tracking for structural rewrites
  SignatureSimplifier      Signature-based techniques (CoB, pattern matching, ANF)
  SignatureVector          Evaluate expression on {0,1}^n inputs
  AuxVarEliminator         Reduce variable count by detecting cancellations
  PatternMatcher           Recognize bitwise patterns (2-var/3-var tables, scaled)
  CoeffInterpolator        Butterfly interpolation for coefficient recovery
  CoBExprBuilder           Reconstruct expressions from CoB coefficients
  AnfTransform             Algebraic Normal Form conversion
  AnfCleanup               Absorption, factoring, OR recognition
  CoefficientSplitter      Separate bitwise vs. arithmetic contributions
  ArithmeticLowering       Lower arithmetic fragment to polynomial IR
  PolyNormalizer           Canonical form for polynomial expressions
  SingletonPowerRecovery   Detect x^k terms via finite differences
  DecompositionEngine      Extract-solve loop: polynomial core + residual solving
  GhostBasis               Ghost primitive library (mul_sub_and, mul3_sub_and3)
  GhostResidualSolver      Boolean-null classification and ghost residual solving
  WeightedPolyFit          2-adic weighted linear solve for polynomial quotients
  MixedProductRewriter     Expand bitwise products into linear sums
  TemplateDecomposer       Bounded template matching for mixed expressions
  ProductIdentityRecoverer Recover product-of-sums identities
  SemilinearNormalizer     Decompose into weighted bitwise atoms
  SemilinearSignature      Per-bit signature evaluation and linear shortcut
  StructureRecovery        XOR recovery, mask elimination, term coalescing
  TermRefiner              Dead-bit mask reduction, same-coefficient merge
  BitPartitioner           Group bit positions by semantic profile
  MaskedAtomReconstructor  Reassemble with OR-rewrite for disjoint masks
  Evaluator                Compiled expression evaluator

lib/llvm/                LLVM pass plugin (CobraPass, MBADetector, IRReconstructor)
lib/verify/              Z3-based equivalence verification
include/cobra/           Public headers
tools/cobra-cli/         CLI frontend and expression parser
test/                    1195 tests across ~63 test files

الاختبارات

يحتوي CoBRA على 1195 اختبارًا تغطي اختبارات الوحدات والتكامل ومعايير مجموعات البيانات:

root@kitploit:~
# Run all tests
ctest --test-dir build --output-on-failure

# Run a specific test suite
ctest --test-dir build -R test_simplifier --output-on-failure

# Run with verbose output
ctest --test-dir build -V

تتحقق معايير مجموعات البيانات من التعبيرات المعتّمة الواقعية من مصادر مستقلة متعددة. راجع DATASETS.md للتقرير الكامل للمعايير — 75,126 تعبيرًا عبر 35 ملف بيانات من 7 مصادر مستقلة.

القيود المعروفة

  • MBAs متعددة الحدود المختلطة المتداخلة بعمق — التعبيرات غير المدعومة المتبقية هي في الغالب أشجار AST كبيرة ومكررة بكثافة مع تداخل بين العمليات الحسابية والمنطقية على البتات. يستعيد رفع التعبيرات الفرعية المرتب حسب الأثر العديدَ منها، لكن التعبيرات التي تستنفد ميزانية قائمة العمل بعد الرفع تظل غير مدعومة.
  • تباعد إعادة البناء في النطاق المنطقي — عدد صغير من التعبيرات ينتج مرشحات CoB صحيحة على مدخلات {0,1} ولكنها غير صحيحة عند العرض الكامل (أساس جداء AND مقابل الضرب الحسابي). تُكتشف هذه الحالات وتُبلَّغ بشكل صحيح كفشل في التحقق.
  • لا يوجد تصغير منطقي عام — يستخدم CoBRA إعادة كتابة جبرية جشعة، وليس Quine-McCluskey/Espresso/BDD.

شكر وتقدير

شكرًا لـ Bas Zweers وفريق Back Engineering على الإلهام والتوجيه الذي ساعد في تشكيل هذا المشروع. يُنصح بمشاهدة: محاضرتهم re//verse 2026 بعنوان Deobfuscation of a Real World Binary Obfuscator.

شكر إضافي لـ Jack Royer و Matteo Favaro و Arnau Gàmez والمساهمين المجهولين الآخرين على المراجعة والاختبار المستمرين.

الترخيص

Apache-2.0. تُعاد توزيع مجموعات بيانات الاختبار في test/datasets/ من مشاريع بحثية تابعة لجهات خارجية بموجب تراخيصها الأصلية (بشكل أساسي GPL-3.0). راجع THIRD_PARTY_LICENSES للتفاصيل.

تنزيل الأداة
الخيارالافتراضيالوصف
--mba <expr>التعبير المراد تبسيطه
--bitwidth <n>64عرض الحساب المعياري (1-64)
--max-vars <n>16أقصى عدد للمتغيرات
--verifyoffفحص تكافؤ باستخدام Z3
--verboseoffطباعة تفاصيل خط الأنابيب الداخلية