Сейчас на форуме: Rio (+5 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Взлом жирной программы на Delphi. Нужна помощь |
Посл.ответ | Сообщение |
|
Создано: 07 августа 2008 21:21 · Личное сообщение · #1 Пожалста, помогите взломать программу на Delphi, я совсем запутался в его коде. Саму программу можно скачать здесь: link_deleted_by_forum_engine/files/7067496 Довольно большая. Архив весит ~1,5 МБ Программа показывает регистрационный номер (1048-576-000) и просит ввести пароль. После ввода и нажатия кнопки ОК, окно скрывается, и в случае верного ввода, программа запускается. В случае неверного она просто терминируется. Вот что я пытался сделать: Включена проверка наличия отладчика: ... 5B26A0BC FF15 C011265B CALL DWORD PTR DS:[5B2611C0] ; kernel32.IsDebuggerPresent 5B26A0C2 85C0 TEST EAX,EAX 5B26A0C4 0F85 397F0100 JNZ 5B282003 ... пропатчив один байт (85C0 - TEST EAX,EAX) в (33C0 - XOR EAX,EAX) можно продолжить. Запускается окно запроса логина/пароля TREG_F, в котором оконная процедура находится по адресу: 00 47 75 79 ... 00 47 75 B9 Так как не умею в OllyDbg ставить брейпоинты на сообщения windows, а DeDe после почти получасовой декомпиляции не показал модуля TREG_F, я не нашел обработчика нажатия на кнопку ОК. Но после нажатия на эту кнопку цикл оконной процедуры прерывается и переходит на то место, где он обычно не был (в теле оконной процедуры): 004775A9 |. E8 36FDFFFF |CALL Kadrs.004772E4 Но похоже, что именно здесь и начинается верификация, т.к. в коде много работы с байтами, операторы, неиспользуемые в обычном коде. Но вот только сам заветный джамп я так и не нашел ![]() ![]() |
|
Создано: 07 августа 2008 21:47 · Личное сообщение · #2 |
|
Создано: 07 августа 2008 22:17 · Поправил: GreatDeal · Личное сообщение · #3 |
|
Создано: 07 августа 2008 22:43 · Поправил: Flint · Личное сообщение · #4 т.к всех необходимых файлов нету программа не может корректно запустится ставь бряк (F2) тут: 007C205E |. 48 DEC EAX вводи код и жамкай на кнопку _________________________________________ а еще глянь здесь 007C1F61 |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10] 007C1F88 |. 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18] в edx, насколько я понял заносятся адреса правильных паролей (их может быть 2) ----- Nulla aetas ad discendum sera ![]() |
|
Создано: 07 августа 2008 22:57 · Поправил: tihiy_grom · Личное сообщение · #5 GreatDeal пишет: а DeDe после почти получасовой декомпиляции не показал модуля TREG_F Зверско ![]() Flint Хоть их и два, но при их вводе прога вываливается с ошибкой - и это не из-за отсутствия файлов GreatDeal В общем твой переход вот тут 007C1EBA |. /0F83 17030000 JNB Kadrs.007C21D7 ![]() |
|
Создано: 08 августа 2008 00:05 · Поправил: depler · Личное сообщение · #6 |
|
Создано: 08 августа 2008 00:18 · Поправил: tihiy_grom · Личное сообщение · #7 |
|
Создано: 08 августа 2008 01:13 · Поправил: 4kusNick · Личное сообщение · #8 |
|
Создано: 08 августа 2008 09:51 · Поправил: GreatDeal · Личное сообщение · #9 2 Flint: Я в шоке ![]() ![]() 2 tihiy_grom: У меня Celeron 1.8GHz, 1.50MB ОЗУ. На своем AMD Athlon 900GHz+384ОЗУ я бы еще дольше ждал ![]() По найденым кодам Fint'а - при наличии бибилиотек (программа действительно работает с подключаемыми библиотеками Firebird SQL Server) программа успешно регистрируется и заносит регистрационную информацию в базу. Вообщем, работает на ура. А вот при изменении на JMP [007C1EBA |. /0F83 17030000 JNB Kadrs.007C21D7] окно программы загружается, минуя регистрацию, но сразу-же возникает исключительная ситуация: Exception E06D7363 Сообщение: Access violation when writing to [00000004] ![]() Проверка регистрационного кода здесь: 00404F5D |> 8B0E /MOV ECX,DWORD PTR DS:[ESI] ; введеный пользователем код 00404F5F |. 8B1F |MOV EBX,DWORD PTR DS:[EDI] ; чему он должен соответствовать 00404F61 |. 39D9 |CMP ECX,EBX 00404F63 |. 75 58 |JNZ SHORT Kadrs.00404FBD ; занопить ... 00404F89 |. 8B0E MOV ECX,DWORD PTR DS:[ESI] 00404F8B |. 8B1F MOV EBX,DWORD PTR DS:[EDI] 00404F8D |. 38D9 CMP CL,BL 00404F8F |. 75 41 JNZ SHORT Kadrs.00404FD2 ; занопить 00404F91 |. 4A DEC EDX 00404F92 |. 74 17 JE SHORT Kadrs.00404FAB 00404F94 |. 38FD CMP CH,BH 00404F96 |. 75 3A JNZ SHORT Kadrs.00404FD2 ; занопить [/c] Программа запускается, но в этом коде проверяются не только ключи, но и другие строки (lstrcmp дельфийская). Надо смотреть выше. Вообщем, я очень доволен ключами ![]() Кстати, я так и не понял, для чего она проверяет наличие отладчика. Даже без отключения под отладчиком отлично работает. Большое спасибо за участие! ![]() |
|
Создано: 08 августа 2008 09:56 · Личное сообщение · #10 |
|
Создано: 08 августа 2008 10:06 · Личное сообщение · #11 GreatDeal пишет: Я в шоке . А можно поинтересоваться, как ты нашел (да еще и так быстро) этот код? Даже в дизассемблер не загружал ее ![]() ----- Nulla aetas ad discendum sera ![]() |
|
Создано: 08 августа 2008 10:32 · Личное сообщение · #12 |
|
Создано: 14 августа 2008 09:27 · Личное сообщение · #13 |
![]() |
eXeL@B —› Вопросы новичков —› Взлом жирной программы на Delphi. Нужна помощь |