Сейчас на форуме: _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых)

 eXeL@B —› Основной форум —› Как брякнуться за кнопой?
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 53.1 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 24 августа 2005 21:22
· Личное сообщение · #1

Короче такие дела. Я сейчас ковыряю одну прогу - она требует ответный код на тот, что генерит сама. Но при первичном запуске программы, она только проверяет правильность ответного кода (его корректность , но не соответствие исходному), то есть процедуру сравнения здесь искать бессмыслено. Получив код, который не является правильным, но в то же самое время являющийся корректным, она записывает его в файл вместе с исходным кодом и говорит мол код принят, но правильный ли он - узнаете в результатах расчета. Я так понимаю, что сравнение наступает после нажатия на кнопу РАСЧЕТ - после которой прога говорит "Выход за теорию расчета" и закрывается. Как мне брякнуться после нажатия кнопки РАСЧЕТ, но перед процедурой проверки? Прога на DELPHI 6/7.. Может кто поможет?



Ранг: 75.0 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 27 августа 2005 19:23
· Личное сообщение · #2

Hi

Даже после кнопки "расчет" искать что-нибудь бесполезно...

Алгоритм защиты примерно такой:
1. в событии FormCreate на главную форму считывается содержимое Foundation.key и по примитивному алгоритму считается некое число от третьей части ответного кода и пишется в глобалку по адресу BSS:007255B0 (обзовем его HashCode3)
2. в событии FormShow на главную форму считывается содержимое Foundation.key и по тому же алгоритму считаются HashCode1, HashCode2, HashCode3 от соответствующих частей ответного кода
3. затем идет проверка валидности ответного кода вида - HashCode3==HashCode1+HashCode2
4. далее считывается из реестра дата биоса от которой также считается HashBIOS и заносится по адресу BSS:007255A0
5. далее идет попытка открыть драйвер SCSIDISK или \\\\.\\SMARTVSD в зависимости от операционки, получает через DeviceIoControl какую-то строку (не разбирался) и считает HashDriver и заносит по адресу BSS:007255A8
6. вполне возможно что считаются еще какие-то производные числа от вышеперечисленных...

так что проверка на "зарегенность" находится только в пункте 3

при нажатии на кнопку расчет, ну в общем во всех расчетах очень активно используются вышеперечисленные числа, так что тут два варианта напрашиваются:
первое - самое геморное - это копать алгоритмы расчета и смотреть операции в которых участвуют эти числа
второе - если есть действительно рабочий ключ - посмотреть в отладчике по адресу
CODE:004C0529 fstp ds:HZ_dbl_7255A0
и
CODE:004C054C fstp ds:HZ_dbl_7255A8
какие получаются числа с рабочего ключика и где нибудь выше по коду сделать патч, принудительно запихивая эти числа в эти адреса, тогда прогу с этим ключиком можно будет запускать на любом компе и расчеты должны быть правильными...



Ранг: 53.1 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 28 августа 2005 01:39
· Личное сообщение · #3

Rush
Огромное спасибо за твои труды.
Насчет этой проверки: HashCode3==HashCode1+HashCode2 - эта проверка идет также при вводе ответного кода, но там это не зависит от исходного - то есть пропустят любой валидный код. Обязательно посмотрю что там пишется по этим адресам. Ты сдвинул меня с мертвой точки, теперь можно поэкспериментировать.



Ранг: 75.0 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 28 августа 2005 04:27
· Личное сообщение · #4

Graviy

Если что - могу выслать файлик от IDA с комментариями, либо детально прокомментировать алгоритм получения "Хэшей"...



Ранг: 53.1 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 28 августа 2005 10:54
· Личное сообщение · #5

Rush
Буду благодарен за любую информацию.



Ранг: 53.1 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 30 августа 2005 11:39
· Личное сообщение · #6

Rush
сделал как ты сказал - запихнул процедуры, которые пишут данные в эти адреса, но всё равно не считает, и теперь при каждом запуске говорит, что прога не заристрирована и предлагает зарегаться, даже если у нее в файле есть ключ.
по этим адресам он пишет следующие данные:
007255A0: 00 00 00 00 50 4B FA 40
007255A8: 00 00 00 E0 A5 42 6C 41



Ранг: 53.1 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 30 августа 2005 14:37
· Личное сообщение · #7

Спасибо всем. Тема закрыта.
Доломал таки.


<< . 1 . 2 .
 eXeL@B —› Основной форум —› Как брякнуться за кнопой?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати