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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
strilight — يحوّل حلقات الكود الثنائي x86-64 إلى قيود SMT مغلقة الصيغة عبر تحليل الفترات المتدرجة، مما يتيح تنفيذًا رمزيًا بتعقيد O(1) واستعادة مفاتيح crackme. | Kitploit
أدوات/GitHubGitHub/asama7706r-ui/strilight
التحليل الثابتتحليل الكودالهندسة العكسيةتحليل الملفات الثنائية
GitHubasama7706r-ui/strilight

strilight

يحوّل حلقات الكود الثنائي x86-64 إلى قيود SMT مغلقة الصيغة عبر تحليل الفترات المتدرجة، مما يتيح تنفيذًا رمزيًا بتعقيد O(1) واستعادة مفاتيح crackme.

عرض المستودع
23منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

Strilight (v0.2.0)

محرك رفع الحلقات الجبرية عالي الأداء والتكرارات النسبية الدقيقة للغة Python و C

Release Python Version Complexity Exact Arithmetic Tests License


نظرة عامة: لماذا تُكرِّر عندما يمكنك أن تحل؟

تتعامل المترجمات التقليدية وبيئات التشغيل ومحركات JIT (مثل GCC أو Clang أو PyPy أو Numba) مع الحلقات كتسلسلات متكررة من تدفق التحكم، فتنفّذ التعليمات خطوة بخطوة:

$$ \text{Runtime Cost} = \mathcal{O}(N) $$

عندما يكون $N = 10^6$ أو $10^9$، فإن التنفيذ التسلسلي يستنزف مليارات دورات المعالج. يعيد Strilight هندسة تنفيذ الحلقات جذريًا من خلال الرفع الجبري الرمزي:

  1. صياغة انتقال الحالة: يفحص جسم الحلقة بشكل ساكن ويصوغ مصفوفة انتقال الحالة الرياضية الخاصة به:

$$ \vec{\mathbf{X}}(N) = \mathbf{A}^N \cdot \vec{\mathbf{X}}0 + \sum{k=0}^{N-1} \mathbf{A}^{N-1-k} \vec{\mathbf{B}} $$

  1. حل بصيغة مغلقة: يحل نظام التكرار بصيغة مغلقة، مما يقلل زمن التنفيذ من $\mathcal{O}(N)$ إلى $\mathcal{O}(1)$ (للسلاسل العددية/الدورية/المتتالية المتداخلة) أو $\mathcal{O}(\log N)$ (عبر رفع المصفوفات الثنائي السريع).

فلسفة التصميم: جودة حياة المطوّر أولًا

لا يدّعي Strilight أنه يقدّم سحرًا غامضًا؛ فهو في جوهره أداة لجودة حياة المطوّر.

في النمذجة الفيزيائية والحوسبة العلمية والمحاكاة العددية، يواجه المهندسون غالبًا معضلة محبطة:

  • كود قابل للقراءة: معادلات طبيعية ومعبّرة تحاكي فيزياء الكتب المدرسية، لكنها تُنفَّذ ببطء عند تكرارها ملايين المرات.
  • كود محسّن يدويًا: حلقات ملتوية تُفكّ يدويًا واختصارات حسابية غامضة تعمل بسرعة، لكنها هشّة وصعبة التصحيح وتحجب الفيزياء الكامنة.

يحل Strilight هذه المعضلة. تكتب المفهوم الفيزيائي أو الرياضي بأي صياغة مباشرة وطبيعية تفضّلها. يفحص Strilight بنية حلقتك، ويستخرج صيغ التكرار الدقيقة بالصيغة المغلقة، ويسرّع التنفيذ خلف الكواليس—مع الحفاظ على قابلية قراءة كاملة وبساطة في قاعدة شفرتك.


الأسس المعمارية

1. حساب نسبي دقيق على $\mathbb{Q}$ (بدون فقدان للدقة)

يُدخل الحساب العشري أخطاء اقتطاع تراكمية ($1/3 \times 3 \approx 0.9999999999999999$). يُجري Strilight الاستقراء التآلفي وتحليل الخطوات على حقل الأعداد النسبية $\mathbb{Q}$:

  • تُنمذج المضاعفات والإزاحات ككسور قانونية ($\frac{p}{q}$).
  • يُصدر نوى بدقة مزدوجة في C وتمثيلات Fraction دقيقة في Python، مما يضمن تكافؤًا رياضيًا مطابقًا للبت بنسبة 100%.

2. أنظمة تكرار مترابطة متعددة المتغيرات ($\mathcal{O}(\log N)$)

المتغيرات التي تعتمد على بعضها البعض (مثل المحاكاات الفيزيائية حيث يعتمد الموضع على السرعة وتعتمد السرعة على التسارع) تُستخرج تلقائيًا إلى مصفوفة اقتران المتغيرات ($\mathbf{A}$). يُجري Strilight رفعًا ثنائيًا على $\mathbf{A}$، فينفّذ ملايين التكرارات في أقل من 2 نانوثانية.

3. مُزخرف @accelerate الشفاف (كيف يعمل)

إن تزيين أي دالة Python قياسية بـ @accelerate ينفّذ خط أنابيب آليًا في وقت تعريف الدالة (دون أي تكلفة تحليل وقت تشغيل لكل استدعاء):

  1. استخراج AST: يفحص شجرة AST الخاصة بالدالة، ويحدد تراكيب حلقة for، ويستخرج متغيرات الاستقراء.
  2. تركيب الصيغة المغلقة: يحوّل الحلقة إلى نماذج تكرارية مكافئة بصيغة مغلقة أو نوى رفع مصفوفة ثنائية.
  3. التوصيل الموضعي: يستبدل عُقد AST الخاصة بالحلقة في موضعها، ويُصرّف الكائن القابل للاستدعاء إلى الذاكرة، ويحقن متغيرات عامة وقت التشغيل (Fraction، math) دون تلويث فضاءات أسماء الوحدة.
  4. انعكاس العقد: يُرفق _loop_summary و_invariant_contract بكائن الدالة المُصرّف، مما يمكّن المصرّفات وأدوات التحقق اللاحقة من فحص مصفوفة الانتقال الأساسية $\mathbf{A}$.
  5. التراجع الرشيق: إذا صودف فهرسة غير خطية أو استدعاءات ديناميكية غير مدعومة، يُصدر Strilight تحذيرًا تشخيصيًا ويتراجع بنظافة إلى التنفيذ الأصلي دون تعطّل.
from strilight import accelerate

@accelerate
def compute_simulation(steps: int) -> int:
    acc = 0
    for i in range(steps):
        acc += (i * 3) + 7
    return acc

# Executes in O(1) time (~0.001 ms even if steps = 100,000,000)
result = compute_simulation(100_000_000)

4. توجيهات مصدر C الموجَّهة بالعقد (#pragma strilight)

على عكس الانعكاس الديناميكي في Python، تتبع تحويلات شيفرة C في Strilight بدقة نموذج عقد المطوّر الصريح عبر توجيهات pragma بأسلوب OpenMP. لا يقوم المحرّك أبدًا بتعديل شيفرة مصدر C ضمنيًا؛ إذ لا تحدث التحويلات إلا عند توجيهها ببنود عقد صريحة من المطوّر (contract، target، include، model):

  • #pragma strilight accelerate: يمنح صراحةً الإذن لـ Strilight برفع حلقة for في C المعلَّمة إلى تعبير رياضي مغلق الصيغة مكافئ.
  • #pragma strilight fuse: توجيه صريح من المطوّر يوجّه Strilight إلى دمج الحلقات المتجاورة المعيَّنة التي تشترك في نطاقات تكرار متطابقة في نواة تكرارية موحّدة لمصفوفة ثنائية بزمن $\mathcal{O}(\log N)$.
// Example of contract-guided multi-loop fusion via developer directive
int simulate_motion(int n) {
    int pos = 0, vel = 10;

    #pragma strilight fuse
    for (int i = 0; i < n; i++) {
        pos += vel;
    }
    for (int i = 0; i < n; i++) {
        vel += 2;
    }
    return pos;
}

5. حل الرموز والثوابت عبر الملفات (CrossFileResolver)

كثيرًا ما تُعرّف المحاكاات العددية المعاملات في ملفات رأس منفصلة أو وحدات إعدادات. يقوم CrossFileResolver في Strilight بما يلي:

  • يتتبع بشكل ساكن عمليات استيراد الوحدات المحلية وتوجيهات C ‏#include / #define.
  • يقيّم تعبيرات الثوابت الحرفية (مثل SOLAR_MASS = 4 * PI * PI) عبر الملفات من خلال تقييم AST دون تنفيذ كود وقت التشغيل الاعتباطي أو استخدام eval غير الآمن.

6. استقراء شرائح المصفوفات والبحث الدوري في الجداول

  • البحث الدوري في المصفوفات: يرفع عمليات البحث الدوري في الجداول (table[i % P]) إلى صيغ مغلقة لمجموع البادئة المحسوبة مسبقًا بزمن $\mathcal{O}(1)$.
  • تعديل شرائح المصفوفات في المكان: يصنّف عمليات التعبئة الثابتة والمتتاليات الحسابية، ويولّد استدعاءات memset العتادية المثلى أو إسنادات شرائح المتجهات (arr[:N] = ...).

7. كيف يعمل التسريع الفيزيائي والحركي في الخلفية

في المحاكاات الميكانيكية والفيزيائية الفلكية (مثل أنظمة $N$-body، وميكانيكا المدارات، وحركية الجسيمات)، تقضي الأجسام الفيزيائية غالبًا فترات طويلة في اجتياز مسارات سلسة غير مضطربة دون تصادمات مفاجئة أو تغيرات في الاتجاه:

  • تركيب المسارات التحليلي: عندما يحدد Strilight أن جسيمًا أو جسمًا سماويًا يتبع مسارًا جاذبيًا أو خطيًا غير مضطرب، فإنه يطوي حلقة الخطوات الزمنية التكرارية إلى الحد الأدنى من العمليات الرياضية الممكنة (صياغة مدارية كبلرية/توافقية تحليلية)—دون التضحية بدقة الإحداثيات.
  • الانتقال إلى الأحداث المعقدة: عند حدوث أحداث معقدة (تصادمات منفصلة، أو اصطدامات بجدران حدودية، أو اقترانات غير منتظمة متعددة الأجسام)، ينتقل التنفيذ إلى مصفوفات اقتران تصادم متخصصة ($\mathbf{A}$) أو مراحل محاكاة موضعية.
  • صفر مخاطر على الكود: Strilight غير تدخّلي تمامًا. في Python، هو مجرد مزخرف @accelerate واحد؛ وفي C، هو #pragma قياسي. يمكنك إضافته أو إزالته في أي وقت دون تغيير خوارزميتك أو منطق عملك.
  • تراجع رشيق وحاسم: إذا صادف Strilight حلقة ذات آثار جانبية غير منظمة، أو استدعاءات خارجية غير معروفة، أو ديناميكيات غير أفينية، فإنه يوقف محاولات التسريع بشكل حاسم ونظيف ويعود إلى التنفيذ الأصلي. لا يتعطل برنامجك أبدًا.

8. العمل مع مساعدي البرمجة بالذكاء الاصطناعي وفحص الكود المُسرَّع

يتفوق مساعدو البرمجة بالذكاء الاصطناعي الحديثون (مثل Claude أو Gemini أو GPT أو Jules) عند العمل على الصيغ الجبرية والمعادلات المغلقة. يجعل Strilight من السهل على المطورين ووكلاء الذكاء الاصطناعي فحص الكود المُولَّد والعقود الرياضية مباشرةً:

فحص العقود الرياضية في Python:

from strilight import accelerate

@accelerate
def compute_energy(steps: int) -> int:
    total = 0
    for i in range(steps):
        total += 15
    return total

# Execute once to trigger definition-time synthesis
result = compute_energy(100)
تنزيل الأداة