include \masm32\include\masm32rt.inc
.data
.code
start:
ASSUME FS:NOTHING
XOR ESI,ESI
XOR ECX,ECX ; ECX = 0
MOV ESI,FS:[ECX + 30h] ; ESI = &(PEB) ([FS:0x30])
MOV ESI,[ESI + 0Ch] ; ESI = PEB->Ldr
MOV ESI,[ESI + 1Ch] ; ESI = PEB->Ldr.InInitOrder
xor ebx,ebx
next_module1:
inc ebx
MOV EBP,[ESI + 08h] ; EBP = InInitOrder[X].base_address
MOV EDI,[ESI + 20h] ; EBP = InInitOrder[X].module_name (unicode)
MOV ESI,[ESI] ; ESI = InInitOrder[X].flink (next module)
mov ecx,3h
mov edx,ecx ; ecx = 3 kernel32 berada di urutan ke 3
CMP ebx,edx
JNE next_module1 ; No: mencoba module berikutnya.
; EBP berisi base address kernel32
call ExitProcess
end start
kita cukup mengganti ecx sesuai dengan urutan module yang akan kita gunakan... di atas saya isi ecx dengan 3 yaitu urutan dari module kernel32 kemudian base address dari kernel32 tersebut di simpan di register EBP..
Berikut beberapa urutan module di os yang saya gunakan (Windows 7)
1. ntdll.dll
2. KERNELBASE.dll
3. kernel32.dll
4. msvcrt.dll
5. USP10.dll
6. LPK.dll
7. GDI32.dll
8. user32.dll
No comments:
Post a Comment