Недавно я изучал материалы, связанные с DotNet, и sscli — действительно хорошая вещь: P.
Во время учебы я обобщил полученные знания и сделал этот небольшой инструмент.
Принцип защиты аналогичен китайским Remotesoft и Maxtocode. Зашифрованная программа также должна сопровождаться библиотекой времени выполнения при ее выпуске.
Однако, в отличие от этих двух, включенная библиотека времени выполнения является не чистой собственной dll, а гибридной сборкой C++/CLI.
Инструмент приобрел форму, и общая структура ядра завершена. Используется для шифрования образца и работает нормально.
Некоторые аспекты даже превосходят maxtocode.
1. Не полагается на программы ildasm и ilasm от Microsoft.
Как дизассемблирование IL, так и сборка IL реализуются программно.
Сборки, содержащие собственный код, могут быть зашифрованы.
2. Инструмент антидекомпиляции, зашифрованную сборку maxtocode нельзя просмотреть напрямую с помощью рефлектора, но после запуска программы используйте pedumper, а после дампа вы можете использовать Reflectotr для просмотра структуры. Конечно, вы все равно не сможете увидеть код.
Сборка, зашифрованная с помощью dnguard, оказалась лучше, чем я ожидал. Зашифрованную сборку невозможно просмотреть с помощью отражателя, а дамп сборки невозможно просмотреть с помощью подключаемого модуля отражателя.
Я считаю, что отражатель все еще немного слабый. Подобное программное обеспечение, Disa # и Xenocode fox, может напрямую открывать и просматривать зашифрованные сборки maxtocode и dnguard.
С этой целью я попробовал добавить структурную обфускацию в зашифрованную сборку dnguard. Это дало эффект, то есть при просмотре структуры в Disa# и fox будет некоторая путаница, то есть могут отображаться функции класса A. в классе Б. Эффект не очень хороший, в каждом классе всего несколько функций, которые вызовут проблемы.
3. Новые возможности Anti .Net 2.0 не очень сильны. По мощности они аналогичны maxtocode 3.13 (внутренняя версия). Я слышал, что maxtocode выпустил 3.14. в ответе в блоге Джейсона вроде то же самое, что и 3.13). Макс 3.12 можно использовать, пропатчив всего несколько байт, а рефлексию можно использовать. 3.13 мало чем отличается, а количество байтов, необходимых для пропатчивания, даже меньше, чем у 3.12.
Теперь в этом отношении существует лучшее решение, которое может значительно повысить интенсивность без ущерба для эффективности. Но это не может полностью предотвратить свалки.
Существует также относительно совершенное антидемпинговое решение, которое необходимо реализовать в сочетании с другой технологией защиты.
Мы не планируем подробно обсуждать этот аспект. После завершения работы над шифровальной оболочкой DNGuard мы запустим другую технологию защиты и, наконец, объединим две защиты.
4. Используйте ildasm и ilasm для восстановления сборки после Анти дампа. В дополнение к новым функциям защиты от дампа в anti .net 2.0, DNGuard также добавляет anti, дампер, который я сделал в самом начале. Кроме того, функция гибридной сборки C++/CLI также используется для предотвращения ildasm после дампа. Однако это не очень сильно, и небольшую сборку можно легко отремонтировать, чтобы реализовать сборку IL.
Предстоит еще много работы. Алгоритм шифрования еще не отработан, а защита самой библиотеки времени выполнения еще не сделана. Я обнаружил, что можно найти готовые инструменты защиты для чисто нативных DLL, например thmida, что очень хорошо. Библиотека времени выполнения maxtocode использует эту оболочку, но мне так и не удалось найти хороший метод для C++/CLI DLL. . Кажется, добавить уровень защиты мы можем только вручную, и мы уже начали его тестировать. Теперь мы добавим простую оболочку шифрования. После этого мы поместим на нее демо-версию DNGuard.
После того, как DNGuard зашифрует сборку, используйте отражатель для просмотра:
Используйте отражатель для просмотра дампа зашифрованной сборки DNGuard:
Сборка, зашифрованная Maxtocode, просматривается с помощью Reflector:
После дампа зашифрованной сборки Maxtocode просмотрите ее с помощью Reflector: