Сейчас на форуме: asfa, bartolomeo (+8 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Найти место проверки CRC |
Посл.ответ | Сообщение |
|
Создано: 28 июня 2012 11:08 · Личное сообщение · #1 На любое изменение кода исполняемого файла программа реагирует переключением в демо режим, внешне это проявляется появлением надписи в главном окне SIMULATION. Проверяет прога себя на диске, т.к. пропатчивание в Olly к переключению в демо не приводит. Дополнительная зацепка: имеется кнопка SIMULATION, которая переключает этот режим вручную (в случае непатченного варианта экзешника). Как найти место проверки CRC? Или, что лучше, место переключения режимов рабочий/демо? Где копать? Программа: UltimateDefrag 4.0.96.0 www.disktrix.com ![]() |
|
Создано: 28 июня 2012 11:10 · Личное сообщение · #2 |
|
Создано: 28 июня 2012 11:20 · Личное сообщение · #3 Chris Ставь бряк на CreateFile и смотри когда прога начнет открывать себя на чтение.. далее на ReadFile ... ну а дальше смотри что происходит с содержимом буфера чтения.. ----- aLL rIGHTS rEVERSED! ![]() |
|
Создано: 28 июня 2012 11:24 · Поправил: Konstantin · Личное сообщение · #4 Chris пишет: Как найти место проверки CRC? Или, что лучше, место переключения режимов рабочий/демо? Где копать? CreatFile, ReadFile, MapViewOfFile ... ЗЫ: Пока писал, уже ответили. ![]() |
|
Создано: 28 июня 2012 14:45 · Личное сообщение · #5 Ковырял как-то предыдущий билд: Code:
Отталкивайся отсюда, полагаю, там выйдешь на то что нужно и на переключатель в отдельности. ----- Array[Login..Logout] of Life ![]() |
|
Создано: 28 июня 2012 19:48 · Личное сообщение · #6 Kindly Спасибо, но это немного не то. Этот блок отвечает за регистрацию, при его пропатчивании убирается стартовый триальный NAG, однако при нажатии на кнопку Registration information прога неожиданно падает - некрасиво как-то. У меня это сделано в другом месте и работает более изящно. К тому же всё это в демо режиме, т.е. основная задача: отключить проверку CRC и переключить с демо на основной режим всё ещё в стадии решения. ![]() |
|
Создано: 29 июня 2012 11:10 · Поправил: OnLyOnE · Личное сообщение · #7 Короче ковырнул я эту программулину, стало интересно... Собственно тутор писать нет желания. Просто поделюсь наработками, может кому в будущем и сгодиться. Думаю молодежи точно ![]() Первое что нарыл - формат серийника имеет вид ХХХХ-ХХХХ-ХХХХ-ХХХХ-ХХХХ-ХХХХ Второе серийный номер формируется из десятеричных чисел от 0 до 9, т.е. пример 1234-5678-9012-3456-7890-1234 Далее каждый сегмент серийного номера, а их 6, преобразуется в шестнадцатеричное число...т.е. 1234 = 4D2h и т.д. Далее из преобразованных сегментов формируется бинарная строка длиной в 12 байт (0Сh), пример (04 D2 16 2E 23 34 0D 80 1E D2 04 D2) Далее данная бинарная строка хешируется MD5. И получаем как пример такой хеш - b5a8a4ee1b08a9b0b9537ff6c9b14528 Для подтверждения правильности введенного серийного номера используется обычное сравнивание части MD5 хеша с данными массива расположенного по адресу 008F0A00h и имеющий размер 186A0h. Сравнение идет только первых двух dword-ов MD5 хеша бинарной строки сформированной из введенного серийного номера. К примеру [b5a8a4ee] и [1b08a9b0], если в массиве находим аналогичные dword-ы мы зарегистрированы. Далее идет процесс занесения регистрационных данных 1 - в реестр (создается ветка "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG4") и 2 - в файл win.ini (находиться в папке WINDOWS)/ В реестр в выше указанную ветку заноситься 2 параметра: 1.параметр - SdInfo, он формируется из строки серийного номера и регистрационного имени (пример - "1234-5678-9012-3456-7890-1234OnLyOnE") далее данная строка ксориться побайтово на байт 53h и заноситься в реестр в бинарном виде и unicode формате (пример "SdInfo"=hex:62,00,62,00,62,00,62,00,7e,00,61,00,61,00,61,00,61,00,7e,00,60,00,\ 60,00,60,00,60,00,7e,00,67,00,67,00,67,00,67,00,7e,00,66,00,66,00,66,00,66,\ 00,7e,00,65,00,65,00,65,00,65,00,1c,00,3d,00,1f,00,2a,00,1c,00,3d,00,16,00); 2.параметр - SdHash, он формируется из первой части хеша серийного номера [b5a8a4ee] и заноситься в реестр в виде значения DWORD (пример - "SdHash"=dword:b5a8a4ee) Вторая часть хеша MD5 [1b08a9b0] конвертируется в десятеричное знаковое число (пример - 1b08a9b0 -> 453552560) и при помощи API WriteProfileString заносится в файл win.ini в секцию [Udbdef] в параметр bootparamex4 (пример записи в файле - [Udbdef] bootparamex4=453552560) Эти параметры программа и проверяет при запуске. Собственно и все.. теперь зная, что серийные номера генерируются случайным образом и части хешей от них находятся в массиве внутри самого файла программы делаем вывод, что генерации как таковой и нет. На основе всего выше изложенного я написал не кейген а регистратор .. который вносит необходимые данные по указанным выше адресам, предварительно конечно выдрав массив с валидными кусками хеша и программы. Прилагаю свой регистратор, если кому будет интересно... могу скинуть исходник (предупреждаю, исходник написан на MASM) pass: OnLyOnE P.S. Регистратор без музыкального сопровождения ![]() ----- aLL rIGHTS rEVERSED! ![]() |
|
Создано: 29 июня 2012 11:34 · Поправил: ZaZa · Личное сообщение · #8 OnLyOnE Кстати, интересный момент: воспользовался твоим регистратором, запускаем программу и в меню HELP-Registration Information... видим: Registered to: ZaZa Serial Number: 8389-9500-0101-2728-2333-0900 То есть он его как то вычисляет из тех значений, что ты ввел в реестре и в win.ini ![]() Или это я чего то не понял? ![]() ----- One death is a tragedy, one million is a statistic. ![]() |
|
Создано: 29 июня 2012 11:45 · Поправил: OnLyOnE · Личное сообщение · #9 Serial Number генерируется случайным образом. для регистрации важен параметр SdHash в реестре и bootparamex4 в win.ini. P.S. Интересен еще один момент, массив валидных данных сформирован на основании уже проданных копий программы.. а т.к. я использую данные именно этот массива.. то вероятность бана через инет равна нулю на настоящий момент.. хотя не факт что что-то не измениться в будущих версиях программы. ----- aLL rIGHTS rEVERSED! ![]() |
|
Создано: 29 июня 2012 11:51 · Поправил: ZaZa · Личное сообщение · #10 OnLyOnE пишет: Serial Number генерируется случайным образом. Действительно! Попробовал ввести выданный мне серийный номер, ответ: серийный номер некорректен! Заново воспользовался твоим регистратором, серийник стал другим.... ![]() Update: Так может при установленной проге и при запуске твоего регистратора как то получать этот массив? Тогда универсальность обеспечена до того момента, пока не сменят алгоритм... ----- One death is a tragedy, one million is a statistic. ![]() |
|
Создано: 29 июня 2012 12:04 · Личное сообщение · #11 ZaZa пишет: Так может при установленной проге и при запуске твоего регистратора как то получать этот массив? Тогда универсальность обеспечена до того момента, пока не сменят алгоритм... Можно и доработать, ничего сложного нет.. Массив на 10000 серийных номеров, думаю скоро не поменяют ![]() ----- aLL rIGHTS rEVERSED! ![]() |
|
Создано: 29 июня 2012 12:33 · Личное сообщение · #12 |
|
Создано: 29 июня 2012 14:01 · Личное сообщение · #13 Вот обещанный исходник pass: OnLyOnE ----- aLL rIGHTS rEVERSED! ![]() |
|
Создано: 01 июля 2012 19:20 · Личное сообщение · #14 ZaZa пишет: Да тогда и тему уже можно будет прикрыть... С какой стати? Регистратор OnLyOnE - это отдельное решение, подчиняющее прогу и заставляющее её работать. Кстати, по принципу действия аналогичное этому: http://rghost.ru/38973437 Тема о другом решении. Пропатченная под отладчиком в части триала прога нормально работает, и единственное, что требуется, - перенести этот патч на диск (в экзешник). Этому мешает заложенная проверка CRC. Требуется найти это место. (Фактически я перефразировал первый пост). ![]() |
|
Создано: 01 июля 2012 19:23 · Личное сообщение · #15 |
|
Создано: 01 июля 2012 20:07 · Личное сообщение · #16 Chris пишет: Кстати, по принципу действия аналогичное этому: http://rghost.ru/38973437 Ну во первых - это не кейген, FFF с названием своего продукта здесь явно погорячились... ![]() Во вторых, я могу ошибаться... но весь прикол чтобы не вмешиваться физически в код программы.. Открою секрет - чем меньше ты модифицируешь код исходной программы, тем выше твой уровень как крэкера... Написание кейгена - это верх мастерства... Стремись именно к этому... ![]() ----- aLL rIGHTS rEVERSED! ![]() |
|
Создано: 01 июля 2012 20:54 · Личное сообщение · #17 ZaZa пишет: А зачем что то патчить в программе Это не самоцель. Регистратор решительно не устраивает по простой причине: привязка к компу. Мне надо переносить готовенькую, не требующую телодвижений для регистрации, полностью работающую программу. OnLyOnE пишет: Стремись именно к этому... Эти постулаты я прекрасно знаю. А частное решение по сабжу я объяснил. ![]() |
|
Создано: 01 июля 2012 21:07 · Личное сообщение · #18 |
|
Создано: 01 июля 2012 21:37 · Личное сообщение · #19 |
|
Создано: 01 июля 2012 21:52 · Поправил: ZaZa · Личное сообщение · #20 |
![]() |
eXeL@B —› Вопросы новичков —› Найти место проверки CRC |