|
|
| Посл.отвђт | Сообщен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 |