Сейчас на форуме: ManHunter, Magister Yoda, rtsgreg1989 (+10 невидимых) |
eXeL@B —› Основной форум —› Исследование защиты Anti-Eyesstrain 2.72 |
Посл.ответ | Сообщение |
|
Создано: 11 июня 2005 15:52 · Личное сообщение · #1 Прога для снятия зрительного напряжения. Весит 1 метр. Статья по проведенному исследованию доступна по адресу: webfile.ru/348651 в течение 14 дней до 15:39 25.06.2005. (78 r,) Кто что-нибудь может посоветовать в каком направлении двигаться дальше прошу высказываться и присоединяться к взлому. По-моему защита интересная. |
|
Создано: 11 июня 2005 15:58 · Личное сообщение · #2 |
|
Создано: 12 июня 2005 18:12 · Личное сообщение · #3 Введенные номерки пишутся в два поля реестра HKEY_CURRENT_USER\Software\Opti-Ergo Group\Anti-EyeStrain\USER_0\Code HKEY_CURRENT_USER\Software\Opti-Ergo Group\Anti-EyeStrain\USER_0\Name Я решил идти не от диалога ввода ключа, а от момента его чтения из реестра. Для этого в IDA дизасмим eyesaver.exe и ищем строчку Code На неё приходится один XREF. По нему попадаем в функцию .text:00403E90 sub_403E90 proc near там видны ссылки на строчки Code и Name. Значит именно здесь происходит чтение этих ключей. В этой функции вызывается десяток других функций, которые с виду ничего интересного не представляют... кроме функции sub_403C20. В этой функции есть вызов _tolower, регистры сравниваются с константами 30h, 39h, 61h, 7ah, у функции два типа возвращаемых параметров: eax=0 и eax=1. Долгие практики дзен-крекинга подсказываютмне, что эта крайне интересная функция и её бы нужно поизучать. Рег код должен быть 20 символов длиной. В первом цикле колбасятся нехитрым образом первые 17 символов этого кода. Далее идет цикл, в котором еще проще обрабатываеися имя. Далее, на основе полученых чисел вычисляются значения трех переменных, значения которых сравниваются с последними тремя символами рег кода. Если все три цифры правильные и первый символ кода не 'x' (???), то проверка продолжается дальше. Для того, чтобы миновать описаный этап проверки можно поступить следующим образом: 1. Записать в реестр имя и левый код(20 символов) 2. В отладчике пройти все эти циклы, дойти до проверок, и записать значения последних 3 символов кода. 3. Поправить код в реестре. Все. Теперь первый этап проверки прокатывает. Остается второй. Там происходят махинации со временем. Т.е. 2,3,4 цифры кода рассматриваются как день месяц и год от первого января 2000 года. Затем получается текуая метка времени и из нее вычитается время полученое из ключа... Смысл всего этого: в ключе есть указание дня его генерации, если на дворе такая дата еще не наступила, то считается, что ключи из будущего не действительны Вот вкратце и все. Name: Sax0n Code: AC65EFGHIJKLMNOPQD0Q |
|
Создано: 12 июня 2005 22:37 · Личное сообщение · #4 Действительно все так. Оказывается в eyesaver.exe есть такая же процедура проверки кода, как и в eyes.exe. Но почему-то мне казалось верхом идиотизма, чтобы разработчик вставил в два файла одинаковую процедуру проверки. А ведь ее можно было найти путем простого поиска. Вместо этого я искал через RegQueryValueExA, видел, что код читается, но куда не смог отследить. Еще конечно рассматривал, что 20 символов генерятся в промежуточные значения, а не семнадцать. [b]Особенно меня в недоумение поверг нижеприведенный код [b/] 0041048F |> 8B4424 10 MOV EAX,DWORD PTR SS:[ESP+10] закладывается значение 00410493 B9 24000000 MOV ECX,24 и делитель 00410498 |. 99 CDQ Преобразование двойного слова (EAX) в учетверенное слово (EDX:EAX). 00410499 |. F7F9 IDIV ECX собственно деление Результат в EDX (по-моему остаток деления) число 20 0041049B |. 8B4424 14 MOV EAX,DWORD PTR SS:[ESP+14] 0041049F |. BE 24000000 MOV ESI,24 004104A4 |. BF 24000000 MOV EDI,24 004104A9 |. 8BCA MOV ECX,EDX 004104AB |. 99 CDQ 004104AC |. F7FE IDIV ESI Остаток 0 004104AE |. 8B4424 18 MOV EAX,DWORD PTR SS:[ESP+18] 004104B2 |. 8BF2 MOV ESI,EDX 004104B4 |. 99 CDQ 004104B5 |. F7FF IDIV EDI Я так и не понял как получаются результаты деления в EAX ясно целое число, а в EDX остаток какой-то. Не мог бы ты объянить, что это такое. Самое главное, что этот остаток и есть значения одного из трех последних символов. И по второму этапу проверки, как я понял там не должно получиться отрицательное чило в результате вычитания дат, тогда проверка прокатывает. И еще как перевести шестнадцатитеричное время типа (79A21C40) в понятный вид (день, месяц, год)? Разработчики на сайте грозились, что генерировать ключ бесполезно так как он для всех разрабатывается индивидуально. Интересно может ли ключ повлиять на разный ход упраднений? И почему- в зарегенной версии исчезла озвучка, хотя в Демо была. Странно. Нет ли там еще подводных камней? |
|
Создано: 13 июня 2005 00:34 · Личное сообщение · #5 IDIV - деление со знаком EDX:EAX - делимое аргумент (в данном случае ECX) - делитель Результат: EAX - частное EDX - остаток Часто применяется для реализации модулярной арифметики, чтобы результат лежал в определенных границах (учи мат. часть) x = a + b (mod m) На счет формата времени. Число - это количество секунд, прошедшее с начала эпохи UNIX 00:00:00, 1 янфаря 1970г. Для манипулирования таким форматом времени смотри функции time(), mktime(), asctime() (пишу по-памяти) К специфическому юмору разработчиков ты скоро привыкнешь. По их словам любая защита неломаемая Ключеген писать здесь - 10-15 минут. А с озвучкой. Посмотри папочку Wave\ru. Скока там звуков ЗЫЖ [solme] - это ниточка обсуждения, временно вынесенная из CTalk в отдельную рассылку, для тех кто хочет приложить усилия и помочь себе сам, но просто не знает с чего начать. Подписка: solme-subscribe<at>yahoogroups<point>com Отписка: solme-unsubscribe<at>yahoogroups<point>com Отсылка сообщений: solme<at>yahoogroups<point>com Подпишись, и можешь задавать туда вопросы. Мне удобней через почту... |
|
Создано: 13 июня 2005 08:46 · Личное сообщение · #6 |
|
Создано: 13 июня 2005 19:16 · Личное сообщение · #7 |
|
Создано: 13 июня 2005 19:29 · Личное сообщение · #8 |
|
Создано: 13 июня 2005 20:44 · Личное сообщение · #9 Astrolog пишет: Что говорить программеры молодцы, только бы накрыть юзеров. В демо версии тебе и озвучка и графические упражнения (удаляющаяся и приближающаяся картинка), в в зарегеной ни шиша, а еще хотят 500р. С графикой это тоже юмор? Со звуками - проблема твоя. Качат с сайта разработчика не хочешь, а на защиту грешишь... зелено... Про упражнения - ищи как выбираются на основе серийника выдаваемые упражнения (вспомни, что говорили разработчики по поводу индивидуальных серийников) Разберись, что будет если первая буква серийника 'z' Тока теперь сам |
|
Создано: 14 июня 2005 09:10 · Личное сообщение · #10 |
|
Создано: 14 июня 2005 12:19 · Личное сообщение · #11 Я еще раз решил объяснить о генерации кода, если кто не понял (таким же чайникам как я) Ставим бряки на следующие строчки: 0041048F |> 8B4424 10 MOV EAX,DWORD PTR SS:[ESP+10]код сгенеренный по возрастающей значение (символа - 57h) * номер символа 0041049B |. 8B4424 14 MOV EAX,DWORD PTR SS:[ESP+14]код сгенеренный по убывающей значение (символа - 57h) * (11h (17) - номер символа) 004104AE |. 8B4424 18 MOV EAX,DWORD PTR SS:[ESP+18]имя Вводим имя и ключ, например Anatol ZC65EFGHIJKLMNOPQDTV Записываем значения, которые перемещаются в регистр, например B05, A19 берем калькулятор (встроенный Windows) и вычитаем в HEX режиме из этих чисед 24h до тех пор пока не получим число меньше 24h, это и будет остаток. Прибавляем 57 и получаем код буквы. Вводим вместо последних трех символов в порядке проверки. Делить при помощи калькулятора у меня не полшучилось, остаток в Hex режиме он не показывает (ну у кого получится делите, у кого нет - вычитайте) Почему делится на 24h? потому что 9 цифр и 26 букв (a-z)остаток должен остатья в этих пределах, чтобы являть собой нужный символ. |
|
Создано: 14 июня 2005 16:15 · Личное сообщение · #12 |
|
Создано: 14 июня 2005 16:58 · Личное сообщение · #13 |
eXeL@B —› Основной форум —› Исследование защиты Anti-Eyesstrain 2.72 |