
Shellcode_K32_Module
By: a guest on Mar 3rd, 2010 | syntax:
ASM (NASM) | size: 1.03 KB | hits: 1,192 | expires: Never
find_kernel32:
mov ecx, [esp+8]
push esi
push ebp
xor eax, eax
mov esi, [FS:eax+0x30] ;ESI = &(PEB)
mov esi, [esi+0x0C] ;ESI = PEB->Ldr
mov esi, [esi+0x1C] ;ESI = PEB->Ldr.InInitOrder (first module)
next_module:
mov ebp, [esi+0x08] ;EBP = InInitOrder[X].base_address
mov edi, [esi+0x20] ;EDI = InInitOrder[X].module_name (unicode)
mov esi, [esi] ;ESI = InInitOrder[X].flink == NextModule
cmp BYTE[edi+12*2], al ;Len(module_name) = 12?
jne next_module
cmp BYTE[edi], 0x6B ;module_name starts by 'k'?
je find_kernel32_finished
cmp BYTE[edi], 0x4B ;module_name starts by 'K'?
je find_kernel32_finished
jmp next_module
find_kernel32_finished:
mov [ecx], ebp ;[ECX] = K32 Base Address
pop ebp
pop esi
ret