Что Ваш фаворит антиотлаживает прием?

У меня тоже было такое же исключение. Я сделал следующие изменения в файле web.xml

<init-param>
            <param-name>jersey.config.server.provider.classnames</param-name>
            <param-value>org.glassfish.jersey.filter.LoggingFilter;org.glassfish.jersey.moxy.json.MoxyFeature;org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
        </init-param>

и изменил трикотаж с 2,7 до 2,9. Я не знаю, какое изменение этого 2 решило проблему.

25
задан Jonas Gulle 21 February 2009 в 16:59
поделиться

8 ответов

Мой любимый трюк - написать простой эмулятор инструкций для малоизвестного микропроцессора.

Защита от копирования и некоторые основные функции будут скомпилированы для микропроцессора (здесь очень полезна GCC) и включены в программу как двоичный двоичный объект.

Идея заключается в том, что защита от копирования не существует в обычном коде x86 и, как таковая, не может быть разобрана. Вы также не можете удалить весь эмулятор, поскольку это приведет к удалению основных функций из программы.

Единственный шанс взломать программу - перепроектировать то, что делает эмулятор микропроцессора.

Я использовал MIPS32 для эмуляции, потому что его было так легко эмулировать (потребовалось всего 500 строк простого C-кода). Чтобы сделать вещи еще более неясными, я не использовал необработанные коды операций MIPS32. Вместо этого каждый код операции был xor'ed со своим собственным адресом.

Двоичный файл защиты от копирования был похож на мусорные данные.

Настоятельно рекомендуется! Прошло более 6 месяцев, прежде чем появилась трещина (это было для игрового проекта).

27
ответ дан Nils Pipenbrinck 15 October 2019 в 15:49
поделиться

Я был членом многих сообществ RCE и имел мою справедливую долю взламывания & взламывание. С моего времени я понял, что такие неосновательные приемы обычно энергозависимы и довольно бесполезны. Большинством универсальных приемов антиотладки является конкретная ОС и не 'портативное' вообще.

В вышеупомянутом примере, Вы, по-видимому, используете встроенный ассемблерный код и naked функция __declspec, оба, которые не поддерживаются MSVC при компиляции на x64 архитектуре. Существуют, конечно, все еще способы реализовать вышеупомянутый прием, но кто-либо, кто инвертировал довольно долго, сможет определить и победить тот прием в течение минут.

Так обычно я предлагал бы против использования антиотладки приемов за пределами использования IsDebuggerPresent API для обнаружения. Вместо этого я предложил бы, чтобы Вы кодировали тупик и/или виртуальную машину. Я кодировал свою собственную виртуальную машину и изменял к лучшему ее много лет теперь, и я могу честно сказать, что это было безусловно лучшее решение, которое я принял в отношении защиты моего кода до сих пор.

6
ответ дан Irwin 15 October 2019 в 15:49
поделиться

Выделить дочерний процесс, который присоединяется к родительскому процессу как отладчик & amp; изменяет ключевые переменные Бонусные баллы за сохранение резидентного дочернего процесса и использование операций памяти отладчика как своего рода IPC для определенных ключевых операций.

В моей системе нельзя подключить два отладчика к одному и тому же процессу.

Хорошая вещь об этом в том, что если они не попытаются подделать / ничего не сломается.

6
ответ дан Joshua 15 October 2019 в 15:49
поделиться

Самый современный метод путаницы, кажется, виртуальная машина.

Вы в основном принимаете некоторое участие своего объектного кода и преобразовываете его в Ваш собственный формат байт-кода. Затем Вы добавляете маленькую виртуальную машину для выполнения этого кода. Только способ правильно отладить этот код будет состоять в том, чтобы кодировать эмулятор или дизассемблер для формата инструкции Вашего VM. Конечно, необходимо думать о производительности также. Слишком много байт-кода сделает Ваш прогон программы медленнее, чем собственный код.

самые старые приемы бесполезны теперь:

  • Isdebuggerpresent: очень хромой и легкий исправить
  • Другие обнаружения отладчика/точки останова
  • материал Ring0: пользователям не нравится устанавливать драйверы, Вы могли бы на самом деле повредить что-то в их системе и т.д.
  • Другой тривиальный материал, который все знают, или это делает Ваше программное обеспечение нестабильным. помните, что, даже если трещина делает Вашу программу нестабильной, но она все еще работает, за эту неустойчивость возложат ответственность на Вас.

, Если Вы действительно хотите кодировать решение VM сами (существуют хорошие программы для продажи), не используйте всего один формат инструкции. Сделайте это полиморфным, так, чтобы у Вас могли быть различные части кода, имеют другой формат. Таким образом, весь Ваш код не может быть взломан путем записи всего одного эмулятора/дизассемблера. Например, решение MIPS, которое предложили некоторые люди, кажется, легко повреждается, потому что формат инструкции MIPS хорошо документируется, и аналитические инструменты как IDA могут уже демонтировать код.

Список форматов инструкции, поддерживаемых IDA про дизассемблер

3
ответ дан John Smith 15 October 2019 в 15:49
поделиться

Я предпочел бы, чтобы люди записали программное обеспечение, которое является основательным, надежным и делает то, что оно рекламируется, чтобы сделать. То, что они также продают его за разумную цену с разумной лицензией.

я знаю, что потратил впустую слишком много времени, имея дело с поставщиками, которые усложнили лицензирование схем, которые только вызывают проблемы для клиентов и поставщиков. Это всегда - моя рекомендация избежать тех поставщиков. Работа в атомной электростанции, мы вынуждены использовать определенные продукты поставщиков и таким образом вынуждены должными быть иметь дело с их лицензированием схем. Мне жаль, что не было способа возвратить время, когда я лично потратил впустую контакт с их неудачными попытками дать нам, работа лицензировала продукт. На мелочь походит спрашивать, но это, кажется, трудная вещь для людей, которые становятся слишком коварными для их собственной пользы.

3
ответ дан bruceatk 15 October 2019 в 15:49
поделиться

Я второй предложение виртуальной машины. Я реализовал симулятор MIPS I, который (теперь) может выполнять двоичные файлы, сгенерированные с помощью mipsel-elf-gcc. Добавьте к этому возможности шифрования кода / данных (AES или с любым другим алгоритмом по вашему выбору), возможность имитации (так что вы можете иметь вложенные симуляторы), и у вас будет довольно хороший обфускатор кода.

Приятной особенностью выбора MIPS I является то, что 1) его легко реализовать, 2) я могу писать код на C, отлаживать его на своем рабочем столе и просто кросс-компилировать его для MIPS, когда это будет сделано. Нет необходимости отлаживать пользовательские коды операций или вручную писать код для пользовательской виртуальной машины.

2
ответ дан zvrba 15 October 2019 в 15:49
поделиться

Расчетные прыжки в середине легитимного вида, но на самом деле скрывающие настоящие инструкции - мои любимые. В любом случае, их довольно легко обнаружить людям, но автоматизированные инструменты часто портят это.

Кроме того, замена обратного адреса в стеке - хорошая трата времени.

1
ответ дан artificialidiot 15 October 2019 в 15:49
поделиться

Используя nop для удаления блока через отладчик является полезным приемом. Конечно, откладывание кода намного более трудно!!!

0
ответ дан Sean 15 October 2019 в 15:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: