Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Исследование Крякмиса PTDS Crack_Me_#1

Обсудить статью на форуме

Массу крэкерских инструментов, видеоуроков и статей вы сможете найти на видеокурсе от нашего сайта. Подробнее здесь.

Автор: V0ldemAr <v0ldemar@mail333.com>

Что нам понадобиться:

1)SI,TRW2k
2) MACM32 <--Его мона достать на wasm.ru
)Знание Асм.

И так, запускаем крякмис, видим что нужно ввести Имя и Пароль,
Имя: V0ldemAr
Пароль: 217198
Нажымаем Try, видим обычный MessageBox, видим "Неправильный Пароль :("
Тогда запускаем под отладчиком ставим бряк на:
bpx MessageBox
bpx MessageBoxA

Повторяем процедуру ввода Имени и Пароля, жмем Try.

Мы в отладчике в функ. MessageBoxA, выходим из функ. мы здесь:

 :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
 

Смотрим дальше:
Похоже на проверку Пароля так как джамп по адрессу :00401646 7515 jne 0040165D <-Прыгает на наш плохой месадж если неравны, если поменять jne на je то программа всегда будет думать что пароль правильной, но этого нам ненужно нам нужна генерация Пароля.

Тогда будем искать место где прога читает наше Имя и Пароль: Делаем очистку бряков bc * Наново вводим Имя и Пароль.
Ставим бряк на: bpx GetWindowText bpx GetWindowTextA bpx GetDlgItemText bpx GetDlgItemTextA bpx GetDlgItem
Пробуем, ничего. Значит прога неисп. стандартные функ. Делаем примерно так: Очищаем бряки, и ставим новый бряк на bpx hMemCpy это всегда работает так как это бряк на копирование памяти.
Выходим из системных Dll-ok, нажымая несколько раз F12. Теперь мы здесь:
 :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
Все теперь понятно:

Берем 1-й символ имени XOR на 1
Берем 2-й символ имени XOR на 2
Берем 3-й символ имени XOR на 3
Берем 4-й символ имени XOR на 4
...............................
Сумму этого всего XOR на длинну Имени и умножаем на счетчик который будет длинна Имени + 1.
И теперь это все XOR на 00430210h, интересно что это за число, но нам то все равно.
Все теперь можна слать письмо vallkor-у чтобы он вас принял в команду.
ЗЫЖ Кстати, при вводе Имени меньше 6-ти символов ничего непрыисходит, вот только я это нигде ненашол ну и ...
А вот исходник на МАСМЕ:
 ----------------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---------------------
 
 
Все вопросы на
mail: v0ldemar@mail333.com

Дата написания: 19.06.2003 или раньше.
ЗЫЖ И кстати Vallkor это уже видел.


Обсуждение статьи: Исследование Крякмиса PTDS Crack_Me_#1 >>>


Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS