;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
;
;Kernel32 Search Routine - TiPiaX/2001
;HTTP://www.multimania.com/hccc
;
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
.386
.model flat, stdcall
option casemap :none   ; case sensitive
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
.data
kernel   db "Kernel adress:",0
kernel32 dd 0
buffer   db 50 dup (0)
print    db "%lX",0
.code
start:
;*********************************************************
;  Kernel Search Proc
;*********************************************************
mov	edx, [esp]
mov	eax,edx
AND	edx,0FFFF0000h
inc edx
boucle:
	dec	edx
	cmp	word ptr [edx],"ZM"
	jnz	boucle
MZ_found:
	mov	ecx,edx
	mov	ecx,[ecx+03ch] 
	add	ecx,edx 
	cmp	ecx,eax
	jg	boucle            ;vérifie que c'est une adresse valide
	cmp	word ptr [ecx] ,"EP"
	jnz	boucle
	mov	kernel32,edx
pushad
   invoke wsprintf,offset buffer,offset print,edx
   invoke MessageBox,NULL,offset buffer,offset kernel,NULL
popad
invoke ExitProcess,0
end start
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
Bon bah voila je pense que là c'est assez simple à comprendre. Cette méthode de la
pile est à mon avis la meilleure, mais après c'est à vous de voir.
ps: l'exe compilé est