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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/gmh5225/iat-hook
آليات الاستمراريةتحليل الكودالهندسة العكسيةتحليل البرمجيات الخبيثةالفريق الأحمرتطوير الحمولاتاستغلال الملفات الثنائية
GitHubgmh5225/iat-hook

IAT-Hook

C++ DLL تقوم بتنفيذ اعتراض جدول عناوين الاستيراد (Import Address Table hooking) عبر تحليل ترويسات PE وإعادة توجيه عناوين الدوال المستوردة إلى خطاف مخصص داخل عملية مستهدفة.

عرض المستودع
1منذ 4 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

الاعتراض - IAT

الاعتراض

الاعتراض (Hooking) هو تقنية تتيح للمستخدم إعادة توجيه مسار تنفيذ البرنامج. في معظم الأحيان نستخدم اعتراض الدوال (function hooking). إما أن نستبدل دالة أو نعيد توجيهها إلى دالتنا الخاصة، وهذا مفيد جدًا وله حالات استخدام متعددة. هناك طرق متعددة للاعتراض، وهنا ننظر إلى IAT Hooking، وهو اختصار لـ Import Address Table. يتمثل في استبدال عنوان دالة بعنوان دالتنا الخاصة في جدول كبير يُملأ في وقت التشغيل. كما ذكرت سابقًا في مستودع آخر، أوصيك بقراءة المزيد عن PE Format لفهم جزء تحليل IAT في هذا الكود. إليك مخططًا أساسيًا لكيفية عمل IAT Hooking. في هذا المثال، يتم استدعاء الدالة الأصلية بعد تنفيذ الكود الخبيث. في هذا المثال سنقوم ببساطة باستدعاء دالة أخرى بدلاً من الدالة الأصلية. ميزة هذه التقنية أنها لا تتطلب تعديل جسم الدالة على عكس اعتراض تصحيح .text التقليدي (detours) الذي يجب أن يغيّر التعليمات في بداية الدالة لوضع jmp على سبيل المثال.

image

خطوات الاعتراض

الأمر في الواقع أبسط بكثير مما يبدو، سنمضي داخليًا لجعل الأمور أسهل، مما يعني أن هذا المستودع سيُترجم إلى DLL يمكن حقنها في العملية الهدف باستخدام أدوات الحقن LoadLibraryA أو Manual Mapping الخاصة بي للحقن في العملية الهدف.

أولاً نقوم بتحليل PE Headers للعملية الهدف لتحديد موقع Import Descriptor هكذا:

process_base + nt_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;

يمكننا بعد ذلك المرور عبر كل وحدة مستوردة، والمرور عبر كل دالة في هذه الوحدة (سبب الحلقات المتداخلة) وإيجاد عنوان تلك الدالة الذي تم ملؤه في وقت التشغيل. في هذا المثال سنعترض TranslateMessage التي تستخدمها Windows لمعالجة الأحداث في واجهات المستخدم الرسومية. لذا بمجرد أن نجد عنوان تلك الدالة، نستبدله بعنوان دالتنا الخاصة التي عرفناها سابقًا والتي توجد في سياق العملية البعيدة بما أننا داخليون. لا تنسَ استخدام VirtualProtect لضمان حصولك على الإذن بالكتابة إلى ذلك الموقع.

VirtualProtect(&firstThunk->u1.Function, sizeof(uint64_t), PAGE_READWRITE, &old_protection);
firstThunk->u1.Function = (uint64_t)hookfunction;

العرض التوضيحي

كما ترى، عندما يستدعي notepad الدالة TranslateMessage (في معظم الأوقات) سيشغّل دالة الاعتراض الخاصة بنا والتي تنتهي بعرض صندوق رسالة!

image

تنزيل الأداة