سؤال

ليس سؤالا جيدا بشكل رهيب ، آسف.

لديّ برنامج يحتاج إلى تنبيهه عند فتح ملف من Explorer (أي Shellexecute (A/W) يسمى).

لسوء الحظ ، قامت Microsoft بإزالة واجهة COM (IsHellexecuteHook) التي تتيح لك ربط هذه الأحداث في Vista وما فوق ، من المفترض أن التعليمات البرمجية القديمة قد تسبب تعطل بسبب التغييرات. كان هناك عملية عمل لإعادة تمكين هذه الميزة ، لكنها لم تعد تعمل.

لقد أجريت بعض الأبحاث ويبدو أن الطريقة الوحيدة لاستلام المكالمات إلى Shellexecute هي إعادة توجيه المكالمة إلى shell32.dll. في الوقت الحالي ، أبحث عن حقن DLL الخاص بي في عملية Explorer ، ثم نسخ إدخال IAT لـ Shellexecute إلى بعض تخصيص العناوين في DLL الخاص بي ، وأخيراً تعديل إدخال IAT لـ Shellexecute للإشارة إلى وظيفتي ، والتي ستخطر البرنامج الذي تم فتحه ملف والقفز إلى وظيفة Shellexecute الأصلية ، التي قمنا بتخزينها سابقًا.

اهتمامي الأكبر هنا هو مكافحة الفيروسات. هل يهتمون بالحقن في المستكشف؟ هل يهتمون بتعديل IAT؟

مصدر قلق آخر هو ما إذا كان هذا آمنًا ؛ هل من الممكن (أو على الأرجح) عدم السماح بخصائص الأمن في Explorer بالحقن عبر createremotethread؟ إذا كان الأمر كذلك ، هل هناك طريقة أفضل للقيام بهذا الحقن؟

هل هناك طريقة أفضل للقيام بذلك بشكل عام؟

تحرير: لأي شخص يصادف هذا في المستقبل ، لا يوجد لدى Explorer.exe IAT لـ shell32.dll ؛ يحتوي على رأس ، لكن thunk مليء بالقيم غير المرغوب فيها ، لذلك لا توجد طريقة (بقدر ما أستطيع أن أقول) لاسترداد الإدخال لأي وظائف مستوردة.
يبدو أن نفق الرمز هو الطريقة الوحيدة لربط هذا.

هل كانت مفيدة؟

المحلول

يجب أن تلتقط معظم الاستدلال الجيد لمكافحة الفيروسات ترقيع جدول الاستيراد باعتبارها علامة حمراء لأنية طروادة.

يحتوي الوثائق عبر الإنترنت لـ MadCodeHook على بعض المقالات الممتدة حول تقنيات حقن الكود المختلفة ، وفوائدها/عيوبها ، وتوفر واجهة برمجة التطبيقات بعض الخيارات لتحديد التثبيت "الآمن":http://www.madshi.net/madcodehookdescription.htm

نصائح أخرى

مكتبة الالتفاف:

http://research.microsoft.com/en-us/projects/detours/

من Microsoft Research يتيح التثبيت التعسفي للوظائف. قد تعطي هذه اللقطة.

بعض الموارد الإضافية على ربط API:

خطاف سهل: http://www.codeplex.com/asyhook

ديفيار: http://www.nektra.com/products/deviare-api-hook-windows/

منشور مثير للاهتمام: http://www.codeproject.com/kb/system/hooksys.aspx

عند القيام بتثبيط API ، من المهم جدًا أن تكون الحمير في أي بيئات تحتاج إلى تشغيلها. لا تدعم جميع المكتبات x86/x64 على سبيل المثال.

يدعم Detours X64 فقط في الإصدار المرخص (المدفوع). يدعم Hook Easy X86 و X64.

لا يقوم مستكشف Windows في Windows Vista و Windows 7 حتى باستدعاء Shellexecutea أو Shellexecutew.

لا جدوى عناء. الضحك بصوت مرتفع :-)

وإذا كنت قد أضيفت ، فقد اختبرت من خلال تثبيت كلتا الوظيفتين بكلتا السنانير المضمنة 32 بت و 64 بت.

آسف. الضحك بصوت مرتفع :-)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top