.386P
Locals
jumps
include tp.inc
.Model Flat, StdCall
.Data
box_1_text db "zoomek [Seven Team]",0 ;domyslne Name
warning db "You Name must be >= 5 chars",0 ; tresc komunikatu, gdy Name < 5 chars
caption db "http://www.7team.z.pl",0 ; pasek w Greetz
greetz db 'Greetz to: R!SC & all members of CrackPl',10,0
msg MSGSTRUCT > ;struktura komunikatu(message)
wc WNDCLASS > ;struktura klasy okna (Window Class Structure)
hIce dd 0 ;uchwyt okna
my_name db 30h dup (?) ;dla Name
serial db 10 dup (0) ;dla wyliczonego seriala
format db "%lu",0 ;format pobrania seriala (dec)
;===============================================================
.Code
Start:
jmp glowny ;skok do glownego programu
getit:
push 040 ;rozmiar bufora
push offset my_name
push IDD_BOX1
push hwnd
call GetDlgItemTextA
setit:
cmp eax, 05
jl warning_box2 ;jezeli Name lt&; 5 chars
call call_00425FD8 ;procedurka wyliczajaca serial
;wypisanie seriala w EDIT BOX 2
print_serial_into_box_2:
push offset my_name
push 0
push WM_SETTEXT
push IDD_BOX2
push hwnd
call SendDlgItemMessageA
mov eax, 1
jmp WMfinish
; procedurka generujaca serial wyrippowana z W32Dasm'a (rip.txt)
call_00425FD8:
push edi
mov edi, offset my_name
test edi, edi
je j_00425FEA
push edi
call call_0042B660
pop ecx
jmp j_00425FEC
j_00425FEA:
xor eax, eax
j_00425FEC:
cmp eax, 00000005h ;sprawdzenie, czy Name >= 5 chars
jnb j_00425FF5
xor eax, eax
pop edi
ret
j_00425FF5:
push ebx
push esi
mov esi, 5DFEE4A4h
xor ebx, ebx
j_00425FFE:
test edi, edi
je j_0042600B
push edi
call call_0042B660
pop ecx
jmp j_0042600D
j_0042600B:
xor eax, eax
j_0042600D:
add eax, 00FFFFFFFCh
cmp ebx, eax
jnb j_00426020
xor esi, dword ptr [ebx+edi]
test bl, 40h
je j_0042601D
inc ebx
j_0042601D:
inc ebx
jmp j_00425FFE
j_00426020:
mov eax, esi
pop esi
pop ebx
pop edi
;pobranie zawartosci rejestru eax (w odpowiednim formacie) do my_name
push eax
push offset format
push offset my_name
call _wsprintfA
;odtworzenie zawartosci rejestru eax (sprytne!)
pop eax
pop eax
pop eax
ret
call_0042B660:
mov ecx, offset my_name
test ecx, 00000003h
je j_0042B680
j_0042B66C:
mov al, byte ptr [ecx]
inc ecx
test al, al
je j_0042B6B3
test ecx, 00000003h
jne j_0042B66C
add eax, 00000000h
j_0042B680:
mov eax, dword ptr [ecx]
mov edx, 007EFEFEFFh
add edx, eax
xor eax, 00FFFFFFFFh
xor eax, edx
add ecx, 00000004h
test eax, 81010100h
je j_0042B680
mov eax, dword ptr [ecx-04]
test al, al
je j_0042B6D1
test ah, ah
je j_0042B6C7
test eax, 00FF0000h
je j_0042B6BD
test eax, 00FF000000h
je j_0042B6B3
jmp j_0042B680
j_0042B6B3:
lea eax, dword ptr [ecx-01]
mov ecx, dword ptr [esp+04]
sub eax, ecx
ret
j_0042B6BD:
lea eax, dword ptr [ecx-02]
mov ecx, dword ptr [esp+04]
sub eax, ecx
ret
j_0042B6C7:
lea eax, dword ptr [ecx-03]
mov ecx, dword ptr [esp+04]
sub eax, ecx
ret
j_0042B6D1:
lea eax, dword ptr [ecx-04]
mov ecx, dword ptr [esp+04]
sub eax, ecx
ret
warning_box2:
push offset warning ;zabezpieczenie przed Name < 5 chars
push 0
push WM_SETTEXT
push IDD_BOX2
push hwnd
call SendDlgItemMessageA
mov eax, 1
jmp WMfinish
;===============================================================
glowny: ;glowne okno
push 0
call GetModuleHandleA
mov [hIce], eax ;pobranie uchwytu okna
;wypelnienie pol struktury okna
mov [wc.clsStyle], CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS
mov [wc.clsLpfnWndProc], offset WndProc
mov [wc.clsCbClsExtra], 0
mov [wc.clsCbWndExtra], 0
mov eax, [hIce]
mov [wc.clsHInstance], eax
push 0
push offset Main_DlgProc
push 0
push IDD_DLG
push [hIce]
call DialogBoxParamA
jmp finish
;glowna procedura
Main_DlgProc proc hwnd:DWORD, wmsg:DWORD, wparam:DWORD, lparam:DWORD
push ebx
push esi
push edi
;sprawdzenie jaka message i odpowiednia reakcja(skok)
cmp [wmsg], WM_COMMAND
jz WMcommand
cmp [wmsg], WM_INITDIALOG
jz WMinit
cmp [wmsg], WM_CLOSE
jz WMdlgdestroy
mov eax, 0
WMfinish:
pop edi
pop esi
pop ebx
ret
;petla obslugi komunikatow
msg_loop:
push 0
push 0
push 0
push offset msg
call GetMessageA
cmp eax, 0
jz end_loop
push offset msg
call TranslateMessage
push offset msg
call DispatchMessageA
jmp msg_loop
end_loop:
push [msg.msWPARAM]
call ExitProcess
Main_DlgProc endp
;procedura obslugi komunikatow
WndProc proc hwnd:DWORD, wmsg:DWORD, wparam:DWORD, lparam:DWORD
push esi
push edi
push ebx
defwndproc:
push [lparam]
push [wparam]
push [wmsg]
push [hwnd]
call DefWindowProcA
finish:
pop ebx
pop edi
pop esi
ret
WndProc endp
WMgreetz:
push 0
push offset caption
push offset greetz
push 0
call MessageBoxA
mov eax, 1
jmp WMfinish
WMinit:
push offset box_1_text
push 0
push WM_SETTEXT
push IDD_BOX1
push hwnd
call SendDlgItemMessageA
jmp getit
WMcommand:
cmp [wparam], IDD_GREETZ ; wcisnieto przycisk Greetz
jz WMgreetz
cmp word ptr [wparam],IDD_BOX1 ; zmiana textu w EDIT BOX 1
jz getit
cmp [wparam], IDD_EXIT ; wcisnieto przycisk Exit
jz WMdlgdestroy
mov eax, 0
jmp WMfinish
WMdlgdestroy:
call ExitProcess
End Start
|