Сейчас на форуме: Rio (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Взлом жирной программы на Delphi. Нужна помощь
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 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
Но похоже, что именно здесь и начинается верификация, т.к. в коде много работы с байтами, операторы, неиспользуемые в обычном коде. Но вот только сам заветный джамп я так и не нашел




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 07 августа 2008 21:47
· Личное сообщение · #2

GreatDeal
Перелей на filefactory какой-нить, а то у меня с депозитом и рапидой траблы.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 августа 2008 22:17 · Поправил: GreatDeal
· Личное сообщение · #3

Тот-же архив на FileFactory:
www.filefactory.com/file/64dd31/n/Kadrs_rar




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 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




Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 07 августа 2008 22:57 · Поправил: tihiy_grom
· Личное сообщение · #5

GreatDeal пишет:
а DeDe после почти получасовой декомпиляции не показал модуля TREG_F

Зверско получасовая декомпиляция. У меня на AM2 5200 ГГц всё заняло около 5-6 минут.

Flint
Хоть их и два, но при их вводе прога вываливается с ошибкой - и это не из-за отсутствия файлов

GreatDeal
В общем твой переход вот тут
007C1EBA |. /0F83 17030000 JNB Kadrs.007C21D7




Ранг: 247.7 (наставник), 3thx
Активность: 0.160
Статус: Участник
Халявщик

Создано: 08 августа 2008 00:05 · Поправил: depler
· Личное сообщение · #6

tihiy_grom
Не похож он на заветный переход, у меня прога падает. Хотя пишет что библиотек нет и чето еще. Мож точно файлов не хватает?

-----
Лень - это подсознательная мудрость




Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 08 августа 2008 00:18 · Поправил: tihiy_grom
· Личное сообщение · #7

Depler
А у меня всё ок с запуском, только пишет что база не обнаружена






Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 08 августа 2008 01:13 · Поправил: 4kusNick
· Личное сообщение · #8

Опоздал блин

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 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 дельфийская). Надо смотреть выше. Вообщем, я очень доволен ключами

Кстати, я так и не понял, для чего она проверяет наличие отладчика. Даже без отключения под отладчиком отлично работает.

Большое спасибо за участие!



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 августа 2008 09:56
· Личное сообщение · #10

tihiy_grom пишет:
А у меня всё ок с запуском

А в статусе Olly у тебя Exception 0FEDFADE. Это ведь не из-за отсутсвия бд?




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 08 августа 2008 10:06
· Личное сообщение · #11

GreatDeal пишет:
Я в шоке . А можно поинтересоваться, как ты нашел (да еще и так быстро) этот код?


Даже в дизассемблер не загружал ее Программа ведь завершается при вводе неверного серийника. Значит нужно поставить бряк на ExitProcess, потом посмотреть в стеке адреса возврата из кэллов и в итоге поднимаешься к процедуре проверки кода.

-----
Nulla aetas ad discendum sera




Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 августа 2008 10:32
· Личное сообщение · #12

Flint пишет:
Значит нужно поставить бряк на ExitProcess


Спасибо за переданный опыт. Впредь буду думать шире



Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 14 августа 2008 09:27
· Личное сообщение · #13

Народ, так объясните как обошли пароль? У меня либо вообще программа не запускается (Flint) или запускается, но не подлючается к базе(возможно из-за ввода логина и пароля).....


 eXeL@B —› Вопросы новичков —› Взлом жирной программы на Delphi. Нужна помощь
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати