Сейчас на форуме: vsv1, johnniewalker, NIKOLA (+6 невидимых) |
eXeL@B —› Крэки, обсуждения —› Софт Шмелёва (автор скончался в конце 2013 года) |
Посл.ответ | Сообщение |
|
Создано: 09 июля 2016 11:44 · Поправил: Kindly · Личное сообщение · #1 Софт в узких кругах остается восстребованным, но уже никто не может его купить, т.к. автор скончался в конце 2013 года. Рассмотрим на предмет реверса образец Sound Frequency Generator, скачать здесь: http://rgho.st/6qzspPgVK Программа упакована UPX, но имеет проверки на распакованность. Это нам не важно, мы будем отлаживать ее под UPX. Основное ограничение: 15 секунд работы после нажатия кнопки "Старт", генерация звука потом пропадает. Перед тем как нажать на "Старт" ставим бряк на CreateFileA, видим проверку наличия "SoundGen.key" (далее key). Данные из key файла считываются по офсету $31: 0012F4A8 00000031 |OffsetLo = 31 (49.) 0012F4AC 00000000 |pOffsetHi = NULL 0012F4B0 00000000 \Origin = FILE_BEGIN Читается содержимое размером $198A байт: 0012F490 00000220 |hFile = 00000220 (window) 0012F494 0019A830 |Buffer = 0019A830 0012F498 0000198A |BytesToRead = 198A (6538.) 0012F49C 0012F4A4 |pBytesRead = 0012F4A4 0012F4A0 00000000 \pOverlapped = NULL Machine ID в About, например, мой: G5413989547400 Затем mid модифируется в теле программы - отрезаются первые четыре символа, а внутрь полученного mid поочередно вставляются инвертированные символы: было 3989547400, стало 30908497544579480903 Цикл модификации Machine ID и расшифровка данных из Key файла (этот код расшифровывается в память из ресурса RT_RCDATA => Resource4): Code:
Далее выходим из процедуры и ищем данную сигнатуру (для нахождения использовал бряк памяти на доступ на начало расшифрованного кода): 8B 03 50 FF 15 F8 C9 4C 00 81 C4 A4 0F 00 00 47 83 C3 04 00405386 FF15 F8C94C00 CALL DWORD PTR DS:[4CC9F8] <======= здесь вход в расшифрованный код Итак, подытожим: автор шифрует обычным ксором (по mod_machine_id) файл лицензии (данные лицензии являются asm вставкой кода) с офсета $31 длиной $197F байт. Начало key файла до указанного офсета может быть произвольным. При дешифровке должен выполняться дополнительный код, снимающий DEMO ограничения. Прав ли я, что без наличия валидных machine id и файла лицензии под него, софт не закейгенить никак? Я думаю, что так - прошу знатоков подтвердить или опровергнуть мой вывод. ----- Array[Login..Logout] of Life | Сообщение посчитали полезным: script_kidis |
|
Создано: 09 июля 2016 13:10 · Поправил: dosprog · Личное сообщение · #2 Kindly пишет: Софт в узких кругах остается восстребованным, но уже никто не может его купить, т.к. автор скончался в конце 2013 года. В "узких кругах" сказали, что подобным функционалом удобней пользоваться в аудиоредакторе и что заморачиваться с отдельной софтиной желания нет.. Kindly пишет: При дешифровке должен выполняться дополнительный код, снимающий DEMO ограничения Похоже, что там ограничение на редактирование формы заказанного саунда, в частности, нельзя поменять его длительность (15 сек. или 1 сек. для новой схемы). Kindly пишет: Написана на асме, что в дальнейшем намекает. Borland C++ Builder Это так, в порядке уточнения. |
|
Создано: 09 июля 2016 13:19 · Личное сообщение · #3 dosprog пишет: В "узких кругах" сказали, что подобным функционалом удобней пользоваться в аудиоредакторе и что заморачиваться с отдельной софтиной желания нет.. каждому свое. dosprog пишет: Borland C++ Builder а вот это я лоханулся, инсталлятор случайно просканил уточнили. ----- Array[Login..Logout] of Life |
|
Создано: 09 июля 2016 14:31 · Личное сообщение · #4 |
|
Создано: 09 июля 2016 14:41 · Поправил: Kindly · Личное сообщение · #5 Hellspawn пишет: ведь начало функции будет с прологом скорее всего. Да, там статичный пролог 5 байтов (которые тоже неизвестны), потом расшифрованный код должен выполняться. Hellspawn пишет: пробрутить попробовать а так из чего брутить? ничего не известно. лиц файла никакого нет, код размером $197F, ксориться поочередно на 20 символов machine id. asm вставка не сверяется, а выполняется сразу. что там да как, ну точно не mov eax,1 > retn. ----- Array[Login..Logout] of Life |
|
Создано: 09 июля 2016 14:43 · Личное сообщение · #6 |
|
Создано: 09 июля 2016 14:46 · Поправил: dosprog · Личное сообщение · #7 |
|
Создано: 10 июля 2016 12:56 · Личное сообщение · #8 Я вот смотрел OscilloMeter (не глубоко), и пришел к выводу, что при триале, т.е. при отсутствии файла-ключа вызываются функции из ресурсов. Определяется это все в sub_423134. Теоретически, в файл-ключ не стоит засовывать часть функционала системы. По этому пришел к выводу, что можно пропатчить ресурсы на предмет ограничений ("Resource1", "Resource2", "Resource3"). Пробовали в эту сторону смотреть? |
|
Создано: 10 июля 2016 14:10 · Личное сообщение · #9 freudz в OscilloMeter идентично, только ключевых файлов (недостающего кода) аж три штуки - это если рассматривать на предмет кейгенинга. freudz пишет: Теоретически, в файл-ключ не стоит засовывать часть функционала системы. автор так и делал: встраивал в .key файл огромную asm вставку и ксорил все это дело по machine_id для каждого компа (Volume ID) индивидуально. по сути разблокировочный код для всех одинаковый, разный только ксор. freudz пишет: Пробовали в эту сторону смотреть? придется ----- Array[Login..Logout] of Life |
|
Создано: 10 июля 2016 15:46 · Личное сообщение · #10 |
|
Создано: 10 июля 2016 16:21 · Личное сообщение · #11 |
|
Создано: 10 июля 2016 20:36 · Личное сообщение · #12 |
|
Создано: 10 июля 2016 21:13 · Поправил: Kindly · Личное сообщение · #13 evggrig ан нет, вот что Prober по этому поводу писал: Защита там навороченная, несколько уровней, самый глубокий на математику завязан. Пару лет назад много времени потратил на нее. ИМХО, программы этого автора любой крякерский конкурс могли бы украсить, разбираться с ними сложно, но интересно. Снимаю шляпу перед разработчиком за его творческий подход к защите, и еще потому, что его уже нет Удалось. Там в ресурсах лежит пошифрованный исполняемый код, долго пришлось разбираться, как в нем срабатывает таймер. Когда разобрался, то из этого же кода, только немного исправленного и перешифрованного другим ключом, сделал KEY-файлы. Патчить в итоге не потребовалось, хотя пропатченный вариант тоже был. Вот и я заметил, что если key файла рядом нет, то расшифровывается приличный кусок кода из ресурса, который то и нужно разобрать на 15 секундное ограничение - а сделать кейген уже дело техники. ----- Array[Login..Logout] of Life |
|
Создано: 10 июля 2016 22:50 · Личное сообщение · #14 мне тоже понравилась защита, по началу подумал сейчас распакуем найдём место где происходит поиск (на тот момент я предположил что там сверяется дат файл или длл в котором будет хранится вырезанный код для фулвершион) кейфайла ,а если обломаюсь то поищу где этот таймер на 15 секунд,после распаковки понял что это уже интереснее так как уже ничего не работало,не стал вдаваться в детали понял что автор продумал этот вариант,так же решил изучать под упэикс нашел место где формируется id и тут пошло вычисления подумав понял что мне видать не вскрыть,и проскользнула такая мыслишка а может тему создам с вопросом,поразкинув немного пришел к выводу что Ветераны форума мне скажут : Ну чего ты там не можешь,это же бубль-гум,там всё как у фантома) А н нет о как оказалось, как раз интуиция меня не подвела,Я вот уже заметил у Киндли что не программа то какой нибудь пакет специфический и узконаправленный и как обычно "Это вам не петушки сосать,там думать надо" Много раз ковырял те же билды что и он думал долго потом уже искал готовый кряк чтобы понять как же также а тут Kindly показывает как это надо делать,было интересно Особенно тот пакет что под ICE License)) Молодец Kindly хорошо всё расписал. |
|
Создано: 11 июля 2016 00:10 · Поправил: dosprog · Личное сообщение · #15 Ладно, а что там с проверкой цельности? - Проверок две. Одна тупо чтение файла и если не выходит нужная сумма, тогда не включается саунд, а вторая это проверка кода в памяти, на неё завязано вычисление числа PI - если она не пройдена, то звук включается, но выходит искажённым. И всё это с плавающей точкой, как у школьников. Kindly пишет: Отключил чудом ограничение (Вангу еще никто не отменял ) ) И что - заработали контролы "кликнуть для изменить" в плейлисте? Софт своеобразный, любительский - не понятно, что должно там срабатывать, а что просто глючит.. |
|
Создано: 11 июля 2016 00:42 · Поправил: Kindly · Личное сообщение · #16 Отключил чудом ограничение (Вангу еще никто не отменял ) Решение после проверки софта знающими. dosprog пишет: И что - заработали контролы "кликнуть для изменить" в плейлисте? не заработали ) зато не хрипит, не шипит и не прерывается. это ж не настоящая лицензия. при запуске читаются первые два байта из .key файла, по идее они должны влиять на включение редактирования. но кастомные наборы редактируются по количеству секунд, дефолтные - нет. тут еще вопрос - а должны ли? добавлено ну что же, OscilloMeter туда же. защита повержена. по заключениям специалистов, софт работает так, как им нужно. чтобы снять 15 секундное ограничение, не нужно отлаживать таймеры - они там по факту не участвуют. соль защиты в ресурcах, данные расшифровываются по ксору и выполняют увесистую процедуру. до конца понять, что она считает, не смог, но есть предположение, что для проигрывания звука и для построения графика выделяется буфер в памяти всего на 15 секунд. возможно, можно как вариант сломать, увеличив буфер для api, которые юзаются для проигрывания звука, например. тут нужно смотреть в эту сторону, зная ньюансы построения вывода звукового сигнала через winnm.dll. к сожалению, кейген основан на самопальных лицензионных файлах с пропатченным кодом внутри них. если у кого-то сохранились оригинальные key файлы с Serial Number, то пишите в личку - кейген будет оригинальным. тему закрою через недельку, если не будет ответов. ----- Array[Login..Logout] of Life | Сообщение посчитали полезным: freudz, viktor1950 |
eXeL@B —› Крэки, обсуждения —› Софт Шмелёва (автор скончался в конце 2013 года) |
Эта тема закрыта. Ответы больше не принимаются. |