Программа: Audio Companion
Сайт программы:
Программа написана на: Microsoft Visual C++ 7.0
Автор: out1aw
Инструменты: ollydbg
На предмет: нахождения кода и обход кода
Привет всем.И так я начинающий в крэкинге поэтому прошу прощения за некоторые ошибки которые я могу допустить в ходе исследования. Программа Audio Companion требует за регистрацию $29.95 US, для регистрации надо ввести код, серийник, но вот проблема не пароля и не серийника нету, остается гадать? или получить за 29.95 баксов код. Но я вам расскажу, как я сломал программу, двумя сособами. Первый способ это замена интсрукции JE на NOP. (NOP - озночает нет операции.). Первом делом я запустил программу, и открыл опцию пароля ввел 12324 и нажал ок, тут как тут сообщение о неправильном коде (пароле). Запустив ollydbg я решил найти это сообщение, за одно и код проверки пароля. Но как оказалось, я его не нашел, оставалось у меня только одно, это поставить Breakpoints(точка останова программы).В Commandbar я написал BPX messageboxa, и нажал Enter и затем F9 тем самым запустив программу из отладчика. Сразу же я оказался в отладчике потому что сработал брэкпоинт, как оказалось это лишний и я его удолил.Перезагрузив отладчик (Ctrl+F2), я опять нажал F9, после того как программа загрузилась, я открыл опцию пароля и ввел 123 и нажал ок, и тут я попал на строку вызова сообщения о неправильном пароле:
00404C64 . FF15 3CE44300 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \\ MessageBoxA - место где вызывается сообщение о неправильном пароле, \\ вызов осуществляется спомощью CALL.
После этого я решил найти где происходит проверка, пролистав чуть чуть код на верх я сразу обратил внимание на test eax, eax ( Команда test используется для сравнения значения регистра с 0. Пишится так - test eax, eax. Иногда может быть не eax, а другой регистр, но чаще всего eax. Если eax равен 0, то устанавливается флаг нуля, становится равным 1) Вот такой код:
00404BE5 . 85C0 TEST EAX,EAX 00404BE7 . B9 180B4600 MOV ECX,Audiocom.00460B18 00404BEC . 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4] 00404BF0 . 74 4D JE SHORT Audiocom.00404C3F - заменить на NOP или JNZ 00404BF2 . 68 7CED4300 PUSH Audiocom.0043ED7C 00404BF7 . 50 PUSH EAX 00404BF8 . E8 43020000 CALL Audiocom.00404E40 00404BFD . 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4] 00404C01 . 51 PUSH ECX 00404C02 . E8 09C60000 CALL Audiocom.00411210 00404C07 . 83C4 04 ADD ESP,4
Я решил попробовать заменить JE на NOP и посмотреть, что будет. После того как я модифицировал файл, любой код который я вводил в панели пароля подходил.( Так же можно изменить JE на JNZ, эффект будет тодже. ) Но иногда такой способ дает осечки.
[Способ №2]Поиск пароля, если подумать логически то в программе есть правильный код, иначе как программа распазнает код. То есть в програме есть правильный код который сравнивается с тем что я ввел, вот я и решил найти его. Для этого я переустоновил программу, и запустил опять свою верную помощницу Олю (ollydbg), но на этот раз я искал код проверки пароля, то есть место где проверяется правильный код с тем кодом который ввел я. Из этого примера вы поймете почему в первом способе надо изменить JE на NOP. И так первом делом я поставил брэкпоинт на GetDlgItemTexta и нажал F9, после открыв панель пароля ввел что попало и нажал окей и попал на такой код:
00404BDA . FF15 60E44300 CALL DWORD PTR DS:[<&USER32.GetDlgItemTe>; \\GetDlgItemTextA 00404BE0 . E8 EBFDFFFF CALL Audiocom.004049D0
Сразу обратите внимание на CALL Audiocom.004049D0, это вызов проверки пароля, почему я так решил?Вот почему, я нажал F8(Трассировка без захода в процедуру), оказавшись на CALL Audiocom.004049D0, я нажал F7(Трассировка с заходом в процедуру) Я попал вот сюда:
004049D0 /$ 83EC 50 SUB ESP,50 - где я нахожусь. 004049D3 |. E8 C8FEFFFF CALL Audiocom.004048A0 004049D8 |. 50 PUSH EAX 004049D9 |. 8D4424 34 LEA EAX,DWORD PTR SS:[ESP+34] 004049DD |. 50 PUSH EAX 004049DE |. B9 180B4600 MOV ECX,Audiocom.00460B18 004049E3 |. E8 58040000 CALL Audiocom.00404E40 004049E8 |. 8D4C24 30 LEA ECX,DWORD PTR SS:[ESP+30] 004049EC |. 51 PUSH ECX 004049ED |. E8 5EC80000 CALL Audiocom.00411250 004049F2 |. 83C4 04 ADD ESP,4 004049F5 |. 8D5424 18 LEA EDX,DWORD PTR SS:[ESP+18] 004049F9 |. 52 PUSH EDX 004049FA |. B9 180B4600 MOV ECX,Audiocom.00460B18 004049FF |. E8 5C060000 CALL Audiocom.00405060 00404A04 |. 50 PUSH EAX 00404A05 |. B9 180B4600 MOV ECX,Audiocom.00460B18 00404A0A |. E8 01090000 CALL Audiocom.00405310 00404A0F |. 6A 10 PUSH 10 00404A11 |. 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4] 00404A15 |. 51 PUSH ECX 00404A16 |. 50 PUSH EAX 00404A17 |. E8 C9950200 CALL Audiocom.0042DFE5 00404A1C |. 83C4 0C ADD ESP,0C 00404A1F |. 8D5424 00 LEA EDX,DWORD PTR SS:[ESP] 00404A23 |. 52 PUSH EDX 00404A24 |. B9 180B4600 MOV ECX,Audiocom.00460B18 00404A29 |. E8 F2050000 CALL Audiocom.00405020 00404A2E |. 68 E8144600 PUSH Audiocom.004614E8 00404A33 |. 8D4424 34 LEA EAX,DWORD PTR SS:[ESP+34] 00404A37 |. 50 PUSH EAX - Тут лежит правельный код. 00404A38 |. B9 180B4600 MOV ECX,Audiocom.00460B18 00404A3D |. E8 BE030000 CALL Audiocom.00404E00 00404A42 |. 85C0 TEST EAX,EAX 00404A44 |. 74 1E JE SHORT Audiocom.00404A64 00404A46 |. 68 E8144600 PUSH Audiocom.004614E8 00404A4B |. 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4] 00404A4F |. 51 PUSH ECX 00404A50 |. B9 180B4600 MOV ECX,Audiocom.00460B18 00404A55 |. E8 A6030000 CALL Audiocom.00404E00 00404A5A |. 85C0 TEST EAX,EAX 00404A5C |. 74 06 JE SHORT Audiocom.00404A64 00404A5E |> 33C0 XOR EAX,EAX 00404A60 |. 83C4 50 ADD ESP,50 00404A63 |. C3 RETN 00404A64 |> 830D E4144600 >OR DWORD PTR DS:[4614E4],1 00404A6B |. 68 E8144600 PUSH Audiocom.004614E8 00404A70 |. 8D5424 34 LEA EDX,DWORD PTR SS:[ESP+34] 00404A74 |. 52 PUSH EDX 00404A75 |. B9 180B4600 MOV ECX,Audiocom.00460B18 00404A7A |. E8 81030000 CALL Audiocom.00404E00
Это код проверки пароля, тут я начал трассировку F8, трассировал программу до:
00404A37 |. 50 PUSH EAX
Я обратил внимание на код в верхним правом углу в окне(Registers FPU) U6c-7M-zDy-45, это и есть правильный код, он лежал в регистре EAX. После я переписал код в блокнот и зыкрыл отладчик. Запустив программу я ввел этот код и как стоило ожидать он был правильный. Значит правильный регистрационый код к программе Audio Companion (full version) это U6c-7M-zDy-45.
Досвидания и спасибо за внимание.
© outlaw 08.12.2007
Hello. And Bye.
Пишем guestbook