как в kernel-mode узнать аддресс образа ядра, не используя никаких native-api ф-ций вроде ZwQuerySystemInformation итп...
не катит, мне для шеллкода нужно так что исходить приходится из того, что нам вообще не известны адресса каких-либо ф-ций
в стеке адрес ядерной функции, откуда был запущен дров т.е. pop esi если речь идет о шлюзе, то сперва отлавливаем функцию в приложении, а далее спускаемся по цепочке до ядра
Код (Text): call @f @@: pop esi @@: dec esi cmp word ptr [esi], "ZM" jnz @B находим свой образ,ищем импорт, там ловим любую апишку ядра, и аналогично ищем базу..
FreeManCPM этот метод более близкий к реальности вобщем, более универсального способа, насколько я понял, нет =(
Код (Text): szOur db 'Our Base address is 0x%08X',0 szProc db 'Proc in kernel address is 0x%08X',0 szKer db 'Kernel base address is 0x%08X',0 proc get_kernel call @f @@: pop esi and esi,0fffff000h @@: mov ax,word[esi] cmp ax,'ZM' jz @f cmp ax,'MZ' jz @f sub esi,1000h jmp @b @@: pusha cinvoke DbgPrint,szOur,esi popa push esi add esi,[esi+3ch] mov eax,[esi+80h] pop esi add eax,esi mov eax,[eax] add eax,esi mov eax,[eax] pusha cinvoke DbgPrint,szProc,eax popa and eax,0fffff000h mov esi,eax @@: mov ax,word[esi] cmp ax,'ZM' jz @f cmp ax,'MZ' jz @f sub esi,1000h jmp @b @@: pusha cinvoke DbgPrint,szKer,esi popa retn endp
Код (Text): cld mov esi, dword [0FFDFF038h] ; вместо этого лучше юзать sidt lodsd ; можно add esi, 4, но это длинее lodsd ; в eax - адрес в ntoskrnl.exe @@: dec eax cmp dword [eax], 00905A4Dh ; ищем начало MZ-заголовка jnz @b dec/cmp/jnz занимают меньшее количество байт, но если тебе важнее скорость то лучше идти по границам страниц.
может не сработать, т.к. после 'MZ' может быть что угодно, вплоть до нулей! лучше and word[eax],0x5A4D
Код (Text): @@: dec eax cmp dword [eax], 00905A4Dh ; ищем начало MZ-заголовка jnz @b грузится то все равно с выравниванием Код (Text): and eax,0fffff000h @@: cmp word [eax], 'MZ' ; ищем начало MZ-заголовка jz @f sub eax,1000h jmp @b @@:
хмм, а почитать статью не дано? Windows Kernel-mode Payload Fundamentals. http://www.uninformed.org/?v=3