![]() |
|
LoadDriver SSDT Hook - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : مصادر دلفي مفتوحة تعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=14) +--- الموضوع : LoadDriver SSDT Hook (/showthread.php?tid=2565) الصفحات:
1
2
|
LoadDriver SSDT Hook - STRELiTZIA - 14-11-2010 السلام عليكم و رحمة الله LoadDriver SSDT Hook.
Compile it with Meerlat 1.1 (http://www.delphi4arab.net/forum/showthread.php?p=22034) Use DbgView to catch informations. Only for Windows XP. Delphi project link: hxxp://www.mediafire.com/?klfd7ozqliawq6f الملفات المصدرية:
PHP كود : unit ZwLoadDriverHook;PHP كود : unit KernelUtils;LoadDriver SSDT Hook - Rad01 - 14-11-2010 السلام عليكم شكرا لك أخي STRELiZIA .. ولكن عندما جربته على WinXP SP3 قام بعملية رستارت لا أعلم ما المشكل؟ LoadDriver SSDT Hook - GamingMasteR - 15-11-2010 نعم ربما يحدث في NT 5.1 وما فوق لأن الـServiceTable يكون موجود في Read-only memory page . لابد من ايقاف الـwrite protection عن طريق التعديل على الـcontrol register 0 ، او عن طريق عمل Mapping لنفس الـPhysical Page الى MDL تسمح بالـWrite . كود : cli;
mov eax, cr0;
and eax, ~0x10000;
mov cr0, eax;
// ssdt patch code
mov eax, cr0;
or eax, 0x10000;
mov cr0, eax;
sti;او : كود : PMDL mdlServiceTable = MmCreateMdl(NULL, KeServiceDescriptorTable->ServiceTable, KeServiceDescriptorTable->TableSize * sizeof(PVOID));
if (mdlServiceTable)
{
PVOID lpServiceTable = NULL;
MmBuildMdlForNonPagedPool(mdlServiceTable);
mdlServiceTable->MdlFlags |= MDL_MAPPED_TO_SYSTEM_VA;
lpServiceTable = MmMapLockedPages(mdlServiceTable, KernelMode);
// ssdt patch code (use lpServiceTable instead of KeServiceDescriptorTable->ServiceTable)
MmUnmapLockedPages(lpServiceTable, mdlServiceTable);
IoFreeMdl(mdlServiceTable);
}LoadDriver SSDT Hook - STRELiTZIA - 16-11-2010 السلام عليكم و رحمة الله بارك الله فيك اخي GM تم التحديث بمعالجة الــ write protection لدعم النسخ Vista و Seven التحميل نفس الرابط في المشاركة الأولى او في مدونة Slug Analysis Lab رابط المدونة: كود : http://sluganalysislab.blogspot.comSource updated 16 november 2010 بالتوفيق ان شاء الله LoadDriver SSDT Hook - GamingMasteR - 16-11-2010 مبروك افتتاح المدونة ![]() off topic: (لماذا ليست Wordpress) LoadDriver SSDT Hook - STRELiTZIA - 16-11-2010 السلام عليكم و رحمة الله الله يبارك فيك اخي GM و ان شاء الله نرى واحدة تخص KDetective في المستقبل القريب... إقتباس :(لماذا ليست Wordpress)للأسف WordPress مليئة بالثغرات... ثبتها على server افتراضي و نجحت عليها تجربة كل ما تم نشره من ثغرات... على عكس Blogspot التي هي تحت دعم حقيقي من مهندسي Google في الوقت الحالي... Off topic: النسخة الجديدة التجريبية من KDetective رائعة جدا... (اشهـــــار )تحياتي LoadDriver SSDT Hook - TF6M - 20-11-2010 و عليكم السلام و رحمة الله و بركاته - بارك الله فيك أستاذ StrLxxx , لي ملاحظة بسيطة في ما يخص : Function Ord كود : [COLOR=#000000][COLOR=#0000bb]DbgPrint[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]'ZwLoadDriver Ord Address: 0x%.8X'[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]SystemServiceOrd[/COLOR][COLOR=#007700]($[/COLOR][COLOR=#0000bb]7A[/COLOR][COLOR=#007700])^); [/COLOR][COLOR=#ff8000]// XP Ord![/COLOR][/COLOR]يكفي جلب قيمة الـ EAX للتحصل على عنوان الدالة المستهدفة ZwLoadDriver يمكن تعويض كل من SystemServiceName & SystemServiceOrd بي : كود : Asm
PushAd
Mov Tmp,eax
PopAd
End;
DbgPrint('SystemServiceOrd ($xx) : 0x%.8X', Tmp);- جلب الـ Ord الصحيح , دالة بدائية ممكن ؟ , لكن تفي بالغرض : كود : Type
SSDT = Array[0..$FF]Of Dword ;//ServiceLimit = $F8 (Windows NT 4.0).
Procedure GetOrigFuncOrdTable (_FuncAddress: Pointer);
Var
i: Byte;
_Addr: SSDT;
Begin
For i:= 0 to $FF Do
Begin
_Addr[i]:= SystemServiceOrd(i)^;
If _Addr[i] = Dword(_FuncAddress) Then
DbgPrint('TrgFunction Ord : 0x%.8X',i);
End;
End;LoadDriver SSDT Hook - GamingMasteR - 23-11-2010 صحيح لم انتبه لهذا أخي STR ، أي كرنل توجد به NtLoadDriver في الـIndex 0x7A ؟ لا يبدو لي ان هناك واحد به هذا الترتيب ... بالنسبة لطريقة الأخ TF6M فهي جيدة لكن الأفضل تطبيقها على Image لـntdll.dll غير المحمّل في الذاكرة لأنه لو هناك user-mode hook او patch لهذه الدالة سيتم جلب opcode آخر وبالتالي Index غير حقيقي . الافضل تحميل Image نظيف للملف من الدسك والعمل عليه . LoadDriver SSDT Hook - STRELiTZIA - 23-11-2010 السلام عليكم و رحمة الله اخي GM نورت الموضوع ![]() إقتباس :صحيح لم انتبه لهذا أخي STR ، أي كرنل توجد به NtLoadDriver في الـIndex 0x7A ؟اظنها النسخة الأولى لــ WinXP بدون SP صينية... إقتباس : DbgPrint('ZwLoadDriver Ord Address: 0x%.8X', SystemServiceOrd($7A)^); // XP Ord!في المثال فوق لا يتم الاعتماد عليها في عملية المعالجة، فالأندكيس يرجعه DbgPrint إقتباس :الافضل تحميل Image نظيف للملف من الدسك والعمل عليه .فكرة جيدة بارك الله فيك LoadDriver SSDT Hook - GamingMasteR - 23-11-2010 لدي نسخة أصلية بدون اي اضافات ، وايضا 0x61 ... هل يمكن ان ترسل ي ملف الكرنل الخاص بها ؟ |