; /************************************************************* ; * Ukazkovy shellcode, urceny ke clanku na soom.cz. ; * ; * MessageBox(), ExitProcess() ; * - Zobrazi zpravu Ahoj ; * ; * Delka: 106 bytes ; * ; * Zkompilovani: ; * - ml /c /coff /Cp shellcode01.asm ; * - link /subsystem:windows /section:.text,w shellcode01.obj ; * ; * babcca [at] seznam.cz ; * ; * October 2006 ; \************************************************************* .386 .model flat, stdcall option casemap :none ; case sensitive .code db "Zacatek kodu:", 0, 0 ;Informace pro nas, abychom vedeli, kde je shellcod start: ; \ Nuluj registry, ktere budem potrebovat xor eax, eax ; \ EAX - Navratove hodnoty fci xor ebx, ebx ; > EBX - Adresy volanych fci xor ecx, ecx ; / ECX - Ukazatel na retezce xor edx, edx ; / EDX - Nulovy znak a parametr fce jmp User32 ; - Ziskej ukazetel na retezec MamUser32: pop ecx ; - Uloz ukazatel mov [ecx+10], dl ; - Prepis znak 'N' na NULL mov ebx, 7c801d77h ; - Adresa fce LoadLibraryA(nazev_knihovny) push ecx ; - Uloz parametr fce (user32.dll) na zasobnik call ebx ; - Zavolej fci ; V EAX ulozena adresa nelezene knihovny jmp Fce ; - Ziskej ukazetel na retezec MamFci: pop ecx ; - Uloz ukazatel xor edx, edx ; - Nuluj EDX mov [ecx+11], dl ; - Prepis znak 'N' na NULL push ecx ; - Uloz 2. parametr fce (MessageBoxA) na zasobnik push eax ; - Uloz 1. parametr fce (handle v EAX) na zasobnik mov ebx, 7c80ac28h ; - Adresa fce GetProcAddress(handle_knihovny, nazev_fce) call ebx ; - Zavolej fci ; V EAX ulozena adresa fce jmp Zprava ; - Ziskej ukazetel na retezec MamZpravu: pop ecx ; - Uloz ukazatel xor edx, edx ; - Nuluj EDX mov [ecx+4], dl ; - Prepis znak 'N' na NULL xor edx, edx ; - Nuluj EDX push edx ; - Uloz 4. parametr na zasobnik (0 = MB_OK) push ecx ; - Uloz 3. parametr na zasobnik (Nadpis) push ecx ; - Uloz 2. parametr na zasobnik (Text zpravy) push edx ; - Uloz 1. parametr na zasobnik (0 = Handle plochy) call eax ; - Zavolej MessageBoxA(handle, text, nadpis, typ) ; V EAX ulozena navratova hodnota fce (0 - OK, 1 - Error) xor edx, edx ; - Nuluj EDX push eax ; - Uloz 1. parametr na zasobnik mov ebx, 7c81caa2h ; - Adresa fce ExitProcess(exit_code) call ebx ; - Zavolej fci a ukonci program User32: call MamUser32 ; - Trik pro ziskani ukazatele db 'user32.dllN' Fce: call MamFci db 'MessageBoxAN' Zprava: call MamZpravu db 'AhojN' db "<-Konec kodu!",0,0 ; - Zde nas kod konci end start