Re: Как обмануть Рефокс | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Игорь, вот сделал вариант со спрятанным ключом. Старался сделать достаточно надежно, но покороче. В результате каждая расшифровка ключа занимает около 0.00002 сек. Фокс маленькие команды выполняет значительно быстрее, поэтому на больших циклах задержка очень заметна. С другой стороны, защитил нормальное и достаточно большое приложение, и визуально никаких задержек не вижу. Немного подумав, решил, что будет нормально, если сделать возможность включать/выключать режим этого дополнительного кодирования (чтобы можно было циклы, в которых нет ничего секретного, исключать из подобной кодировки). Оказалось сделать это не очень трудно. Теперь, чтобы отключить режим кодировки, нужно в код вставить команду
Думаю, ничего тут Рефоксу не грозит. По-моему он значительно грубее нарушал фоксовскую лицензию, когда при защите по level II изменял фоксовский рантайм. Это лицензией напрямую запрещено. А раз за это ему ничего не было, то либо у него с Майкрософт есть какой-то договор, либо просто Майкрософт на это наплевать. В разработке. Прилагаемый файл как раз защищен альфа-версией DefoxIV. Если все пойдет нормально, постараюсь в течении месяца бету выложить. Цитата:Поживем, увидим. |
Re: Как обмануть Рефокс | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Да, про этот уровень защиты я сразу хотел предложить сделать некий выбор чего шифровать - ну по аналогии с разделением шифрования на демо_открытый/полный_по_ключу в 3-й версии, но вот так, через указание прямо в коде будет даже гибче
Про изменение рантайма я как-то не подумал... Хотя с точки зрения возможного ущерба, то конкретное изменение не имело большого эффекта, а вот самостоятельная компиляция - думаю что только подход к концу жизненного цикла фокса позволяет такое творить - и неткомпайлер появился, и вот уже рефокс умеет... По большому счёту МС сама сделала лазейку через доступный в рантайме COMPILE - но он не умел формы/классы собирать (хотя если доработать напильником то модно извернуться). Ибо сам рантайм то общедоступен - а это прямой путь к "бесплатным" фоксовым системам Защиту бум посмотреть... ------------------ WBR, Igor |
Re: Как обмануть Рефокс | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну что-ж, посмотрел - да, в принципе этого должно быть достаточно - IMHO код трассировать чуть погеморройнее чем основной код от 3-й версии. Вряд-ли можно сделать лучше. Хотя в принципе достать ключ не сверхсложно. Для этого теста XOR ключ 050B88E9057F. Несколько упрощает жизнь то, что в рамках блока положение процедуры неизменно (от запуска к запуску) - впрочем, т.к. "базовый адрес" в любом случае не составляет труда получить, вряд-ли имеет смысл что-то "двигать" левыми HeapAlloc... Надеюсь что второй XOR ключ генерируется так-же динамически и для разных exe он будет разным - чтобы не возникало соблазна без трассировки "извлечь" основной ключ.
P.S. Использовал Olly 2.0.1 ------------------ WBR, Igor |
Re: Как обмануть Рефокс | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Ну, проверять я не буду. Мне его вытащить не шибко проще, чем тебе. Цитата:Игорь, тут есть одна проблема. Нужно сделать, чтобы модули, защищенные независимо друг от друга, могли работать вместе. Это накладывает сильные ограничения. Конкретно в этом случае я что-то уже точно не помню, но стараюсь всюду, где можно всякие сиды и ключи рандомизировать, а где не получается, там уж оставляю так. Цитата:Если я правильно понял, это от июня этого года. Но я на второй так и не перехожу. При том, что у него есть определенные достоинства, есть один очень большой недостаток - нет поддержки плугинов. А как можно жить без ODbgScript? |
Re: Как обмануть Рефокс | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Так для проверки достаточно вынуть тот же test.sct, взять таблицу и прогнать простенькую процедуру дешифрации Хотя-бы вручную для 5-6 команд... Это понятно, но тут точно оба ключа завязаны вместе с собственно процедурой декодирования Впрочем, я сейчас полагаю что в отсутствие полиморфизма этой самой функции, ключ может быть получен чисто математически, из 10 (если вторые 4 байта изменняются от программы к программе, иначе из 6 байт собственно зашифрованного ключа) неизвестных, и сколько-то там "известных" байт (используемых для самошифрации кода). Да, впрочем у меня они оба стоят - действительно, пока ещё во втором не все фишки реализованы ------------------ WBR, Igor |
Re: Как обмануть Рефокс | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Леонид, а ты не анализировал поглубже стек в моменты вызова процедур чтения файлов "изнутри" exe? Если попробовать пройтись по фреймам, то может удастся определить читает файл "исполняющий" механизм, или же это результат запроса от FILETOSTR/FOPEN/USE? Если это возможно определить, то можно добавить код препятствующий дампу (ну а в идеале ввести whitelist - файлы которые разрешено читать изнутри exe).
Я так полагаю, что на сегодня дампирование средствами самого фокса есть наиболее "злобный" враг защиты ------------------ WBR, Igor |
Re: Как обмануть Рефокс | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Игорь, я раньше не пробовал, а сейчас глянул немного на стек при вызове ReadFile из filetostr, поблизости ничего интересного не увидел, а вдали - там мгого всякого, а что от чего, не разобрать. По-моему - дохлый номер. Тем более, что скорее всего это все сильно отличается в разных версиях фокса. |
Re: Как обмануть Рефокс | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Леонид, а если пойти "от противного", и поставить хуки на процедуры связанные с соответствующими командами/функциями - входим в FILETOSTR - блокируем чтение критических внутренних файлов, выходим - снова разрешаем... Конечно, это потенциально "сломает" выражение типа
FILETOSTR(MyProcInOtherModule()) - но это IMHO всяко лучше чем поступает рефокс И ещё мне реально интересно в каком месте рантайма производится разделение на "своих/чужих", и по какому критерию - т.к. напярмую из "внешнего" fxp невозможно прочитать вкомпилированный файл - кажись даже если этот fxp вызван напрямую кодом из exe. Возможно что тут то и скрывается "крантик", которым можно перекрыть кислород дамперам... ------------------ WBR, Igor |
Re: Как обмануть Рефокс | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Игорь, FILETOSTR - это не первый байт оператора. Первым там в лучшем случае будет "вызов функции". В худшем это все будет вообще в середине оператора. Где это обрабатывается - понятия не имею. А еще труднее, наверное, найти, где нужно ставить окончание блокировки. Цитата: Думаю, без исходников это найти дико трудно. |
Re: Как обмануть Рефокс | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Леонид, я знаю что это не 1-й байт т.к. это и не "команда" - но AFAIK функции реализованы таким-же макаром как и команды - через таблицу адресов, и по идее на FILETOSTR есть своя процедура... Хотя может быть это всё динамически выстраивается через какой-нить NameTable. Надо покопать.
------------------ WBR, Igor |
© 2000-2024 Fox Club  |