Jedná se o hojně využívaný trik například při psaní přenositelných shellkódů nebo virů.

Teorie:
Po spuštění programu je na vrcholu zásobníku návratová hodnota do kernel32.dll a to konkretně poblíž funkce ExitThread, která má za úkol ukončit regulérně program. Při standardní velikosti stránkování paměti (tzv. Memory Paging) 1000h stačí vynulovat dolní polovinu registru eax (tedy ax) a následně tuto konstantu odečítat a kontrolovat, zda se na dané adrese nachází DOS signatura (IMAGE_DOS_HEADER.e_magic).

_in: návratová adresa do kernel32.dll -> [esp]
_out: adresa PE signatury (začátku IMAGE_NT_HEADERS) kernel32.dll v paměti -> eax

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
GetKernel32 PROC rtn :DWORD
	mov ebx, rtn
	and ebx, 0FFFF0000h		; vynuluje bx
 
     _FindKernel32:
	cmp word ptr [ebx], "ZM"	; byla nalezena signatura
                                        ; DOS hlavičky?
	jz _GetPE
	sub ebx, 01000h
	jmp _FindKernel32
 
     _GetPE:
	mov eax, [ebx + 03Ch]		; eax == Offset PE signatury
	add eax, ebx
	cmp dword ptr [eax], "EP"	; jedná se o regulérní
                                        ;PE soubor?
	jz _Right
	xor eax, eax
     _Right:
	ret
 
GetKernel32 ENDP