· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.VIROLOGY —› Почему ограничение 50h страниц при поиске kernel?

Посл.отвђт Сообщенiе


Дата: Дек 24, 2002 16:12:57

?
и почему поиск с шагом 10h страниц а не по каждой


Дата: Дек 25, 2002 05:20:48 · Поправил: comrade

kernel32 находится на границе с округлением 65536 (10000h) байтов. Одна страница - 4096 (1000h) байтов. Так вот, значит kernel32 должен быть на одной из каждой 10-ой (10000h / 1000h = 10h) странице.


Дата: Янв 4, 2003 16:14:01

kernel32 находится на границе с округлением 65536

Собственно не только kernel32, но и любая другая dll.


Дата: Янв 4, 2003 20:41:42

Ну причём же тут это? Разговор про kernel32 всё таки.


Дата: Фев 10, 2003 03:16:44

Получение kernel32 из импорта

GetKernel:
push edi
call $+5
pop eax
call basui
push eax
mov edi, eax
add eax, [eax+3ch]
ASSUME eax : ptr IMAGE_NT_HEADERS
add edi, [eax].OptionalHeader.DataDirectory[SIZEOF IMAGE_DATA_DIRECTORY].VirtualAddress
ASSUME eax : nothing
ASSUME edi : PTR IMAGE_IMPORT_DESCRIPTOR
.while [edi].Name1
mov eax, [edi].Name1
add eax, [esp]
.if dword ptr [eax] == 'NREK' || dword ptr [eax]== 'nrek'
mov ecx, [edi].FirstThunk
add ecx, [esp]
mov eax, dword ptr [ecx]
call basui
.break
.endif
add edi, sizeof IMAGE_IMPORT_DESCRIPTOR
.endw
pop ecx
ASSUME edi : nothing
pop edi
ret

basui:
and eax, 0ffff0000h
@@Bg:
cmp word ptr [eax], 'ZM'
jz @@Nx
sub eax, 1000h
jmp @@Bg
@@Nx:
push eax
add eax, [eax+3ch]
cmp dword ptr [eax], 'EP'
pop eax
jnz @@Bg
ret


Дата: Июл 7, 2003 21:33:08

Получение kernel32.dll при старте (считая, что AddressOfEntryPoint указывает прямо на нас):

mov eax,[esp]
call part1
part1:
pop ebx
sub ebx,8 ; ebx - OFFSET WinMain

and eax,0xFFFFF000
part2:
mov bx,[eax]
cmp bx,'ZM'
je part3
sub eax,0x1000
jmp part2
part3:
... ; EAX - Kernel32 HINSTANCE


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.049