Автор: V0ldemAr <v0ldemar@mail333.com>
Что нам понадобиться::0040166B E834FC0200 Call 004312A4 <-Визов плохого Мессаджа. :00401670 33C0 xor eax, eax :00401672 8945C4 mov dword ptr [ebp-3C], eax :00401675 EB0F jmp 00401686Смотри чуть выше, и видим. Этот
:00401656 E849FC0200 Call 004312A4 <- Хороший Мессажд. :0040165B EB13 jmp 00401670 :0040165D 6A40 push 00000040 :0040165F 689A264300 push 0043269A :00401664 68206B4300 push 00436B20 :00401669 6A00 push 00000000
:0040154D 66C745E01400 mov [ebp-20], 0014 :00401553 8D45F8 lea eax, dword ptr [ebp-08] :00401556 E86D020000 call 004017C8 :0040155B 8BD0 mov edx, eax :0040155D FF45EC inc [ebp-14] :00401560 8B4DCC mov ecx, dword ptr [ebp-34] :00401563 8B81CC010000 mov eax, dword ptr [ecx+000001CC] :00401569 E8AE900000 call 0040A61C :0040156E 8D45F8 lea eax, dword ptr [ebp-08] :00401571 8B55C4 mov edx, dword ptr [ebp-3C] :00401574 E87F020000 call 004017F8 <-- Занесли наше Имя :00401579 0FBE08 movsx ecx, byte ptr [eax] -- взяли 1-й символ Имени :0040157C 334DC4 xor ecx, dword ptr [ebp-3C] -- за XOR-ли на 1 и потом 2-й символ на 2 и т.д. :0040157F 014DB8 add dword ptr [ebp-48], ecx -- Сложыли к какой то переменной. :00401582 FF4DEC dec [ebp-14] :00401585 8D45F8 lea eax, dword ptr [ebp-08] :00401588 BA02000000 mov edx, 00000002 :0040158D E8E6DD0000 call 0040F378 :00401592 FF45C4 inc [ebp-3C] :00401595 66C745E00800 mov [ebp-20], 0008 :0040159B 8D45FC lea eax, dword ptr [ebp-04] :0040159E E825020000 call 004017C8 :004015A3 8BD0 mov edx, eax :004015A5 FF45EC inc [ebp-14] :004015A8 8B4DCC mov ecx, dword ptr [ebp-34] :004015AB 8B81CC010000 mov eax, dword ptr [ecx+000001CC]Все теперь понятно:
:004015B1 E866900000 call 0040A61C <-- Считали Имя :004015B6 8D45FC lea eax, dword ptr [ebp-04] :004015B9 8B55C4 mov edx, dword ptr [ebp-3C] :004015BC E837020000 call 004017F8 :004015C1 803800 cmp byte ptr [eax], 00 :004015C4 0F95C1 setne cl :004015C7 83E101 and ecx, 00000001 :004015CA 51 push ecx :004015CB FF4DEC dec [ebp-14] :004015CE 8D45FC lea eax, dword ptr [ebp-04] :004015D1 BA02000000 mov edx, 00000002 :004015D6 E89DDD0000 call 0040F378 <-- Чето делают , ага проверка конец ли Имени :004015DB 59 pop ecx :004015DC 85C9 test ecx, ecx :004015DE 0F8569FFFFFF jne 0040154D <-- Потом прыгают :004015E4 8B45CC mov eax, dword ptr [ebp-34] :004015E7 8B80CC010000 mov eax, dword ptr [eax+000001CC] :004015ED E8DA8F0000 call 0040A5CC <-- Считаем длинну Имени :004015F2 3345B8 xor eax, dword ptr [ebp-48] -- XOR-им переменную на длинну Имени :004015F5 F76DC4 imul [ebp-3C] -- и умножываем на длинна Имени + 1 вроде все! :004015F8 8945B8 mov dword ptr [ebp-48], eax :004015FB 66C745E02000 mov [ebp-20], 0020 :00401601 8D45F4 lea eax, dword ptr [ebp-0C] :00401604 E8BF010000 call 004017C8 :00401609 8BD0 mov edx, eax :0040160B FF45EC inc [ebp-14] :0040160E 8B4DCC mov ecx, dword ptr [ebp-34] :00401611 8B81D0010000 mov eax, dword ptr [ecx+000001D0] :00401617 E800900000 call 0040A61C :0040161C 8D45F4 lea eax, dword ptr [ebp-0C] :0040161F 8B00 mov eax, dword ptr [eax] :00401621 E8D6220200 call 004238FC <-- Наш Пароль :00401626 8945B4 mov dword ptr [ebp-4C], eax --Записали Пароль в переменную :00401629 FF4DEC dec [ebp-14] :0040162C 8D45F4 lea eax, dword ptr [ebp-0C] :0040162F BA02000000 mov edx, 00000002 :00401634 E83FDD0000 call 0040F378 <-- Что то темнят :00401639 8175B410024300 xor dword ptr [ebp-4C], 00430210 -- так а зачем XOR-ят наш пароль, надо бы зайти :00401640 8B4DB8 mov ecx, dword ptr [ebp-48] посмотреть, жмем F8 на этой функ. Ясно ничего там неделают, но темнят :) :00401643 3B4DB4 cmp ecx, dword ptr [ebp-4C] :00401646 7515 jne 0040165D :00401648 6A40 push 00000040 :0040164A 6899264300 push 00432699 :0040164F 681F6C4300 push 00436C1F :00401654 6A00 push 00000000
----------------start *.asm---------------------- .386 .model flat,stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib szText MACRO Name, Text:VARARG LOCAL lbl jmp lbl Name db Text,0 lbl: ENDM WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD .DATA hWnd dd 0 hEdit1 dd 0 hEdit2 dd 0 hButn1 dd 0 hButn2 dd 0 hInstance dd 0 dlgname db "DLG_0100",0 CONV db "%lu",0 ZSTRLEN db "Input 6 char or more",0 .CODE start: invoke GetModuleHandle, NULL mov hInstance, eax invoke DialogBoxParam,hInstance,100,0,ADDR WndProc,0 invoke ExitProcess,eax WndProc proc hWin :DWORD,uMsg :DWORD,wParam :DWORD,lParam:Dword LOCAL STRLEN[255] :BYTE LOCAL OUTLEN[255] :BYTE LOCAL NLEN :DWORD LOCAL SN :DWORD .if uMsg == WM_INITDIALOG mov eax, hWin mov hWnd, eax invoke GetDlgItem,hWin,101 mov hEdit1, eax invoke GetDlgItem,hWin,102 mov hEdit2, eax invoke GetDlgItem,hWin,105 mov hButn1, eax invoke GetDlgItem,hWin,106 mov hButn2, eax .elseif uMsg == WM_COMMAND .if wParam == 105 invoke GetWindowText,hEdit1,ADDR STRLEN,40 cmp eax, 06h jl @@zn mov NLEN, eax xor ebx, ebx xor edx, edx mov ecx, 1 lea eax, STRLEN @@R: mov bl, [eax] xor ebx, ecx add edx, ebx inc ecx inc eax cmp ecx, NLEN jle @@R xor edx, NLEN imul edx, ecx xor edx, 430210h invoke wsprintf,ADDR OUTLEN,ADDR CONV,edx invoke SetWindowText,hEdit2,ADDR OUTLEN jmp @@end @@zn: invoke SetWindowText,hEdit2,Addr ZSTRLEN @@end: .elseif wParam == 106 jmp @@exit .endif .elseif uMsg == WM_CLOSE @@exit: invoke EndDialog,hWin,0 .endif xor eax, eax ret WndProc endp end start ----------------------end start *.asm--------------- -----------------start *.rc-------------------------- #include "\masm32\include\resource.h" 100 DIALOGEX 127, 114, 229, 42 STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "PTDS_KGEN_CRK_ME_#1" FONT 8, "Helv" BEGIN EDITTEXT 101, 31, 7, 132, 12, ES_AUTOHSCROLL EDITTEXT 102, 31, 24, 132, 12, ES_AUTOHSCROLL LTEXT "Code:", 103, 5, 25, 20, 12 LTEXT "Name:", 104, 5, 9, 20, 12 PUSHBUTTON "Gen", 105, 172, 2, 52, 15, BS_FLAT PUSHBUTTON "Exit", 106, 172, 25, 52, 15, BS_FLAT END -----------------end start *.rc---------------------Все вопросы на
Материалы находятся на сайте http://cracklab.narod.ru/doc/