Сейчас на форуме: _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых) |
eXeL@B —› Основной форум —› Как брякнуться за кнопой? |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 24 августа 2005 21:22 · Личное сообщение · #1 Короче такие дела. Я сейчас ковыряю одну прогу - она требует ответный код на тот, что генерит сама. Но при первичном запуске программы, она только проверяет правильность ответного кода (его корректность , но не соответствие исходному), то есть процедуру сравнения здесь искать бессмыслено. Получив код, который не является правильным, но в то же самое время являющийся корректным, она записывает его в файл вместе с исходным кодом и говорит мол код принят, но правильный ли он - узнаете в результатах расчета. Я так понимаю, что сравнение наступает после нажатия на кнопу РАСЧЕТ - после которой прога говорит "Выход за теорию расчета" и закрывается. Как мне брякнуться после нажатия кнопки РАСЧЕТ, но перед процедурой проверки? Прога на DELPHI 6/7.. Может кто поможет? |
|
Создано: 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 какие получаются числа с рабочего ключика и где нибудь выше по коду сделать патч, принудительно запихивая эти числа в эти адреса, тогда прогу с этим ключиком можно будет запускать на любом компе и расчеты должны быть правильными... |
|
Создано: 28 августа 2005 01:39 · Личное сообщение · #3 Rush Огромное спасибо за твои труды. Насчет этой проверки: HashCode3==HashCode1+HashCode2 - эта проверка идет также при вводе ответного кода, но там это не зависит от исходного - то есть пропустят любой валидный код. Обязательно посмотрю что там пишется по этим адресам. Ты сдвинул меня с мертвой точки, теперь можно поэкспериментировать. |
|
Создано: 28 августа 2005 04:27 · Личное сообщение · #4 |
|
Создано: 28 августа 2005 10:54 · Личное сообщение · #5 |
|
Создано: 30 августа 2005 11:39 · Личное сообщение · #6 Rush сделал как ты сказал - запихнул процедуры, которые пишут данные в эти адреса, но всё равно не считает, и теперь при каждом запуске говорит, что прога не заристрирована и предлагает зарегаться, даже если у нее в файле есть ключ. по этим адресам он пишет следующие данные: 007255A0: 00 00 00 00 50 4B FA 40 007255A8: 00 00 00 E0 A5 42 6C 41 |
|
Создано: 30 августа 2005 14:37 · Личное сообщение · #7 |
<< . 1 . 2 . |
eXeL@B —› Основной форум —› Как брякнуться за кнопой? |
Эта тема закрыта. Ответы больше не принимаются. |