;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
;
;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