Взлом программы: Sweet Sixteen 32
Сайт программы: www.ronimusic.com
Программа написана на: Microsoft Visual C++ 7.0
Автор: out1aw
Инструменты: ollydbg
На предмет: нахождения правильного кода
Взлом этой программы не составил мне особого труда, я не стал заменять инструкции, а просто нашел правильный код для регистрации.О том как я его нашел я вам и расскажу. Запустив программу, я ввел в панели пароля 1234 и нажал ок, сообщение о неправельном коде тут как тут, открыв отладчик я решил найти это сообщение и код проверки пароля. Найдя сообщение о неправильном, я поставил брекпоинт на GetDlgitemTextа и нажал enter,после нажал F9 что-бы запустить программу из отладчика,но тут программа остановилась, адрес на котором произошла остановка я занопил (binary->Fill with NOPs),после этого я модифицировал файл, потом открыв измененный файл, я опять поставил брэкпоинт на GetDlgitemTextа, потом F9, в панели пароля я ввел что попало и нажал OК,после этого сработал брэкпоинт, и я оказался на адрессе вызова сообщения:
004307C3 . FF15 18544500 CALL DWORD PTR DS:[<&USER32.GetDlgItemTe>; \\GetDlgItemTextA - где сработал брэкпоинт 004307C9 . E8 E2FEFFFF CALL Sweet_32.004306B0 - это вызов провеки кода
Обратив внимание на CALL Sweet_32.004306B0, на начал трассировать программу F8(Трассировка без захода в процедуру) оказавшись на CALL Sweet_32.004306B0 я нажал F7(Трассировка с заходом в процедуру) и оказался тут:
004306B0 /$ 83EC 50 SUB ESP,50 - Где я нахожусь 004306B3 |. 33C0 XOR EAX,EAX 004306B5 |> 8A88 70034600 /MOV CL,BYTE PTR DS:[EAX+460370] 004306BB |. 884C04 30 |MOV BYTE PTR SS:[ESP+EAX+30],CL 004306BF |. 40 |INC EAX 004306C0 |. 84C9 |TEST CL,CL 004306C2 |.^75 F1 \JNZ SHORT Sweet_32.004306B5 004306C4 |. 8D4C24 30 LEA ECX,DWORD PTR SS:[ESP+30] 004306C8 |. E8 A3FFFFFF CALL Sweet_32.00430670 004306CD |. 8D4424 18 LEA EAX,DWORD PTR SS:[ESP+18] 004306D1 |. 50 PUSH EAX 004306D2 |. B9 008D4600 MOV ECX,Sweet_32.00468D00 004306D7 |. E8 C4EB0000 CALL Sweet_32.0043F2A0 004306DC |. 50 PUSH EAX 004306DD |. B9 008D4600 MOV ECX,Sweet_32.00468D00 004306E2 |. E8 A9ED0000 CALL Sweet_32.0043F490 004306E7 |. 6A 10 PUSH 10 004306E9 |. 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4] 004306ED |. 51 PUSH ECX 004306EE |. 50 PUSH EAX 004306EF |. E8 79C70100 CALL Sweet_32.0044CE6D 004306F4 |. 83C4 0C ADD ESP,0C 004306F7 |. 8D5424 00 LEA EDX,DWORD PTR SS:[ESP] 004306FB |. 52 PUSH EDX ; /StringOrChar 004306FC |. FF15 2C544500 CALL DWORD PTR DS:[<&USER32.CharUpperA>] ; \CharUpperA 00430702 |. 8D4424 30 LEA EAX,DWORD PTR SS:[ESP+30] 00430706 |. 50 PUSH EAX - Тут лежит код для регистрации 00430707 |. 68 686D4600 PUSH Sweet_32.00466D68 ; ASCII "123123123" 0043070C |. B9 008D4600 MOV ECX,Sweet_32.00468D00 00430711 |. E8 7AE90000 CALL Sweet_32.0043F090 00430716 |. 85C0 TEST EAX,EAX 00430718 |. 74 1E JE SHORT Sweet_32.00430738 0043071A |. 68 686D4600 PUSH Sweet_32.00466D68 ; ASCII "123123123" 0043071F |. 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4] 00430723 |. 51 PUSH ECX 00430724 |. B9 008D4600 MOV ECX,Sweet_32.00468D00 00430729 |. E8 62E90000 CALL Sweet_32.0043F090 0043072E |. 85C0 TEST EAX,EAX 00430730 |. 74 06 JE SHORT Sweet_32.00430738 00430732 |. 33C0 XOR EAX,EAX 00430734 |. 83C4 50 ADD ESP,50
Это код проверки пароля, трассировать программу я закончил, когда оказался на адрессе 00430706 |. 50 PUSH EAX, обратив внимание на код в правом верхнем углу в окне (Registers FPU) Pul-az74-9xf, это и есть правильный регистрационный код. В панели пароля я ввел этот код и как стоило ожидать он был правильный. Значит правильным кодом для программы Sweet Sixteen 32 будет Pul-az74-9xf.
Удачи, пакеда.
© outlaw 08.12.2007

linux не говно,при правильном обращении все будет гладко. 1) Для нее не...
Linux vs Windows