:: Игры Разума
Re: Как обмануть Рефокс
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Игорь, вот сделал вариант со спрятанным ключом. Старался сделать достаточно надежно, но покороче. В результате каждая расшифровка ключа занимает около 0.00002 сек. Фокс маленькие команды выполняет значительно быстрее, поэтому на больших циклах задержка очень заметна. С другой стороны, защитил нормальное и достаточно большое приложение, и визуально никаких задержек не вижу. Немного подумав, решил, что будет нормально, если сделать возможность включать/выключать режим этого дополнительного кодирования (чтобы можно было циклы, в которых нет ничего секретного, исключать из подобной кодировки). Оказалось сделать это не очень трудно. Теперь, чтобы отключить режим кодировки, нужно в код вставить команду
="DEFOX OFF"
Она будет действовать до конца процедуры, или пока не встретится команда
="DEFOX ON"

Igor Korolyov
Вот только что-то мне подсказывает, что за написание фоксового КОМПИЛЯТОРА (да да, в рефоксе теперь есть свой компилятор - exe он, правда, не делает, но app вполне) недобрые юридические дяденьки из Редмонда могут лишить его всего непосильно нажитого на рефоксе состояния
Думаю, ничего тут Рефоксу не грозит. По-моему он значительно грубее нарушал фоксовскую лицензию, когда при защите по level II изменял фоксовский рантайм. Это лицензией напрямую запрещено. А раз за это ему ничего не было, то либо у него с Майкрософт есть какой-то договор, либо просто Майкрософт на это наплевать.

ry
А 4-я версия DeFox уже есть или пока в разработке?
В разработке. Прилагаемый файл как раз защищен альфа-версией DefoxIV. Если все пойдет нормально, постараюсь в течении месяца бету выложить.

Цитата:
Будет ли она корректно работать на машинах с несколькими дисками, объединенными в RAID?
Поживем, увидим.
Ratings: 0 negative/0 positive
Re: Как обмануть Рефокс
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Да, про этот уровень защиты я сразу хотел предложить сделать некий выбор чего шифровать - ну по аналогии с разделением шифрования на демо_открытый/полный_по_ключу в 3-й версии, но вот так, через указание прямо в коде будет даже гибче

Про изменение рантайма я как-то не подумал... Хотя с точки зрения возможного ущерба, то конкретное изменение не имело большого эффекта, а вот самостоятельная компиляция - думаю что только подход к концу жизненного цикла фокса позволяет такое творить - и неткомпайлер появился, и вот уже рефокс умеет... По большому счёту МС сама сделала лазейку через доступный в рантайме COMPILE - но он не умел формы/классы собирать (хотя если доработать напильником то модно извернуться). Ибо сам рантайм то общедоступен - а это прямой путь к "бесплатным" фоксовым системам

Защиту бум посмотреть...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как обмануть Рефокс
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Ну что-ж, посмотрел - да, в принципе этого должно быть достаточно - IMHO код трассировать чуть погеморройнее чем основной код от 3-й версии. Вряд-ли можно сделать лучше. Хотя в принципе достать ключ не сверхсложно. Для этого теста XOR ключ 050B88E9057F. Несколько упрощает жизнь то, что в рамках блока положение процедуры неизменно (от запуска к запуску) - впрочем, т.к. "базовый адрес" в любом случае не составляет труда получить, вряд-ли имеет смысл что-то "двигать" левыми HeapAlloc... Надеюсь что второй XOR ключ генерируется так-же динамически и для разных exe он будет разным - чтобы не возникало соблазна без трассировки "извлечь" основной ключ.
P.S. Использовал Olly 2.0.1


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как обмануть Рефокс
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Igor Korolyov
Для этого теста XOR ключ 050B88E9057F.
Ну, проверять я не буду. Мне его вытащить не шибко проще, чем тебе.

Цитата:
Надеюсь что второй XOR ключ генерируется так-же динамически и для разных exe он будет разным - чтобы не возникало соблазна без трассировки "извлечь" основной ключ.
Игорь, тут есть одна проблема. Нужно сделать, чтобы модули, защищенные независимо друг от друга, могли работать вместе. Это накладывает сильные ограничения. Конкретно в этом случае я что-то уже точно не помню, но стараюсь всюду, где можно всякие сиды и ключи рандомизировать, а где не получается, там уж оставляю так.

Цитата:
Использовал Olly 2.0.1
Если я правильно понял, это от июня этого года. Но я на второй так и не перехожу. При том, что у него есть определенные достоинства, есть один очень большой недостаток - нет поддержки плугинов. А как можно жить без ODbgScript?
Ratings: 0 negative/0 positive
Re: Как обмануть Рефокс
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
leonid
Ну, проверять я не буду. Мне его вытащить не шибко проще, чем тебе.
Так для проверки достаточно вынуть тот же test.sct, взять таблицу и прогнать простенькую процедуру дешифрации Хотя-бы вручную для 5-6 команд...
leonid
Игорь, тут есть одна проблема. Нужно сделать, чтобы модули, защищенные независимо друг от друга, могли работать вместе. Это накладывает сильные ограничения.
Это понятно, но тут точно оба ключа завязаны вместе с собственно процедурой декодирования
Впрочем, я сейчас полагаю что в отсутствие полиморфизма этой самой функции, ключ может быть получен чисто математически, из 10 (если вторые 4 байта изменняются от программы к программе, иначе из 6 байт собственно зашифрованного ключа) неизвестных, и сколько-то там "известных" байт (используемых для самошифрации кода).
leonid
Если я правильно понял, это от июня этого года.
Да, впрочем у меня они оба стоят - действительно, пока ещё во втором не все фишки реализованы


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как обмануть Рефокс
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Леонид, а ты не анализировал поглубже стек в моменты вызова процедур чтения файлов "изнутри" exe? Если попробовать пройтись по фреймам, то может удастся определить читает файл "исполняющий" механизм, или же это результат запроса от FILETOSTR/FOPEN/USE? Если это возможно определить, то можно добавить код препятствующий дампу (ну а в идеале ввести whitelist - файлы которые разрешено читать изнутри exe).
Я так полагаю, что на сегодня дампирование средствами самого фокса есть наиболее "злобный" враг защиты


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как обмануть Рефокс
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Igor Korolyov
Леонид, а ты не анализировал поглубже стек в моменты вызова процедур чтения файлов "изнутри" exe? Если попробовать пройтись по фреймам, то может удастся определить читает файл "исполняющий" механизм, или же это результат запроса от FILETOSTR/FOPEN/USE? Если это возможно определить, то можно добавить код препятствующий дампу (ну а в идеале ввести whitelist - файлы которые разрешено читать изнутри exe).
Я так полагаю, что на сегодня дампирование средствами самого фокса есть наиболее "злобный" враг защиты

Игорь, я раньше не пробовал, а сейчас глянул немного на стек при вызове ReadFile из filetostr, поблизости ничего интересного не увидел, а вдали - там мгого всякого, а что от чего, не разобрать. По-моему - дохлый номер. Тем более, что скорее всего это все сильно отличается в разных версиях фокса.
Ratings: 0 negative/0 positive
Re: Как обмануть Рефокс
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Леонид, а если пойти "от противного", и поставить хуки на процедуры связанные с соответствующими командами/функциями - входим в FILETOSTR - блокируем чтение критических внутренних файлов, выходим - снова разрешаем... Конечно, это потенциально "сломает" выражение типа
FILETOSTR(MyProcInOtherModule()) - но это IMHO всяко лучше чем поступает рефокс
И ещё мне реально интересно в каком месте рантайма производится разделение на "своих/чужих", и по какому критерию - т.к. напярмую из "внешнего" fxp невозможно прочитать вкомпилированный файл - кажись даже если этот fxp вызван напрямую кодом из exe. Возможно что тут то и скрывается "крантик", которым можно перекрыть кислород дамперам...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как обмануть Рефокс
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Igor Korolyov
Леонид, а если пойти "от противного", и поставить хуки на процедуры связанные с соответствующими командами/функциями - входим в FILETOSTR - блокируем чтение критических внутренних файлов, выходим - снова разрешаем...
Игорь, FILETOSTR - это не первый байт оператора. Первым там в лучшем случае будет "вызов функции". В худшем это все будет вообще в середине оператора. Где это обрабатывается - понятия не имею. А еще труднее, наверное, найти, где нужно ставить окончание блокировки.

Цитата:
И ещё мне реально интересно в каком месте рантайма производится разделение на "своих/чужих", и по какому критерию - т.к. напярмую из "внешнего" fxp невозможно прочитать вкомпилированный файл - кажись даже если этот fxp вызван напрямую кодом из exe. Возможно что тут то и скрывается "крантик", которым можно перекрыть кислород дамперам...

Думаю, без исходников это найти дико трудно.
Ratings: 0 negative/0 positive
Re: Как обмануть Рефокс
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Леонид, я знаю что это не 1-й байт т.к. это и не "команда" - но AFAIK функции реализованы таким-же макаром как и команды - через таблицу адресов, и по идее на FILETOSTR есть своя процедура... Хотя может быть это всё динамически выстраивается через какой-нить NameTable. Надо покопать.


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 3 (Гостей: 3)

© 2000-2024 Fox Club 
Яндекс.Метрика