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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ICALL-GADGET — استغلال لإعادة توجيه مسار التحكم في وحدة نواة شرعية إلى وحدة نواة غير شرعية خاصة بك لتجنب تتبع مكدس مكافحة الغش | Kitploit
أدوات/GitHubGitHub/gmh5225/icall-gadget
آليات الاستمراريةالاستغلالالتهرب من IDS/IPSالهندسة العكسيةشيل كودالفريق الأحمرتطوير الحمولاتاستغلال الملفات الثنائية
GitHubgmh5225/icall-gadget

ICALL-GADGET

استغلال لإعادة توجيه مسار التحكم في وحدة نواة شرعية إلى وحدة نواة غير شرعية خاصة بك لتجنب تتبع مكدس مكافحة الغش

عرض المستودع
12منذ 2 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

استغلال ICALL GADGET للتواصل

معلومات عامة: هذا في نواة ويندوز وسيسمح لنا بالتواصل في برنامج التشغيل الخاص بنا دون اكتشافه من قبل برامج مكافحة الغش

لذلك كنت أتصفح في IDA ووجدت هذا

image

بعد مزيد من الفحص يمكننا أن نرى أنه يستدعي دالة تسمى _guard_dispatch_icall_ptr. الـ icall في الأساس هو jmp إلى rax لذا إذا فكرت قليلاً يمكننا تعديل هذه الدالة بالكامل لتستدعي المعالج الخاص بنا باستخدام shellcode.

الـ Shellcode الخاص بنا

سنقوم بإنشاء shellcode يقوم بتعيين rax إلى مؤشر لدالة المعالج الخاصة بنا. بهذه الطريقة عندما يتم استدعاء الدالة ستنفذ الـ shellcode الخاص بنا وتستدعي المعالج الخاص بنا. نريد التأكد من أن الـ shellcode الذي نصنعه بنفس حجم البايتات بالضبط مثل الكود الذي نعدله. لذا إليك مثال على الـ shellcode الذي استخدمته في asm وستحتاج إلى تحويله إلى بايتات.

 sub    rsp,0x38
 movabs rax,0xdeadbeef #placeholder for handler
 movabs r10,0xab39cfee
 inc    rax
 dec    rax
 call   QWORD PTR [rip+0x720d4]        # 0x720f8
 jmp    0x29

الكود الخاص بنا

في cpp نحتاج فقط إلى الحصول على عنوان الدالة ثم تعيين الـ shellcode الخاص بنا فيها ولكن هنا يصبح الأمر صعباً إذا قمنا بذلك ببساطة كما هو سنفسد المكدس وسنحصل على شاشة زرقاء من وقت لآخر. لتجنب ذلك سنحتاج إلى إصلاح المكدس. لذا بدلاً من العودة داخل المعالج الخاص بنا يجب أن نقوم بنفس العمليات التي كانت الدالة ستقوم بها إذا لم نعدلها. سأترك هذا للقارئ ليقوم به بنفسه لأنني لا أريد أن أقدم طريقة مذهلة للتهرب من برامج مكافحة الغش ولكن تذكر أن تنظر إلى asm الأصلي للدالة وترى ما نعدله. ملاحظة جانبية: إذا أصلحت إفساد المكدس وقمت بما كانت الدالة تهدف إلى القيام به داخل المعالج الخاص بك سيبدو الأمر وكأن شيئاً لم يتم تعديله! :)

 //getting address to function
 FunctionAddress = module + 0xD70C; 
  
 BYTE shellcode[] = { 0x48, 0x83, 0xEC, 0x38, 0x48, 0xB8, 0xEF, 0xBE, 0xAD, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x49, 0xBA, 0xEE, 0xCF, 0x39, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xC0, 0x48, 0xFF, 0xC8, 0xFF, 0x15, 0xD4, 0x20, 0x07, 0x00, 0xE9, 0x00, 0x00, 0x00, 0x00 };

 memcpy(&shellcode[6], &hkfunction, 8);

 DisableWriteProtection();
 memcpy((PVOID)FunctionAddress, &shellcode, sizeof(shellcode));
 EnableWriteProtection();

الخلاصة

آمل أنك استفدت شيئاً من هذا الشرح السريع فقط اعلم أنه يمكنك العثور على أدوات أخرى أيضاً التي ستفعل الكثير وكلما كانت أكثر تعقيداً كان ذلك أفضل.

تنزيل الأداة