R0 CREW

Neffarion :: 0xl3 :: .Net Cracking #2 - Classes (Перевод: Prosper-H)

0xl3 :: .Net Cracking #2 - Classes

Введение

Большинство современных языков программирования поставляются с встроенными криптографическими библиотеками. Эти библиотеки основаны на публичных алгоритмах таких как: MD5, DES, BASE64, etc. Хоть такие библиотеки и предоставляют возможность программистам, которые не достаточно разбираются в криптографии, использовать некоторые из этих алгоритмов, это все же не является хорошей идеей, что бы переходить на эти функции. В этом уроке мы рассмотрим .NET программы, с проверкой серийного ключа, которые используют подобные функции.

Информация о цели

Имя… keygenme2.exe [ download ]
Разработчик… Rendari AKA
Инструменты… Reflector [ download ], Visual C# 2008 [ download ]

Adficio

Безопасная система не должна разрабатываться ни на каком .NET языке, ввиду дизайна .NET . В отличие от программ “старой школы” – исходный код .NET программ может быть восстановлен в буквальном смысле этого слова. Отличной программой, для анализа .NET приложений, является “Reflector”.

1 - a. Загрузите keygenme2.exe в Reflector b. Клацните правой кнопкой мыши на "Form1" и выберите "Disassemble"

Рисунок 1. keygenme2.exe в Reflector

Reflector - может предоставить очень детальную информацию о .NET приложении. Давайте посмотрим как далеко, в конечном итоге, мы сможем зайти :slight_smile:

Рисунок 2. Разворачивание Методов

Рисунок 3. Развернутые методы (события)

На Рис. 3 вы можете видеть “события” (так же называемые “Методами”) которые происходят в Form 1. По содержанию этого изображения ясно видно, что Button 1 это кнопка, которая проверяет введенные пользователем данные. Нам не нужно идти дальше, потому что мы уже нашли то, что искали. Дзэн-реверсер ищет только то, что имеет непосредственно отношение, к тому, что бы обойти защиту. Все остальное – не имеет значения.

Класс EncryptTripleDES берет текст из TextBox1 (передается как параметр) и возвращает результат в строку “sRight”. Немного проанализировав код программы, становится ясно, что в ней производится конвертация имени в хэш TribleDES, после чего, с помощью полученного хэша, осуществляется проверка на соответствие введено пользователем ключа. Зная это мы может начать разработку кейгена :slight_smile:

4 - a. Запустите Visual C# 2008 и создайте новый проект "Windows Form Application"

Рисунок 4. Создание кейгена

5 - a. На форме размещается: два текстовых поля и одна управляющая кнопка (дизайне не важен, размещайте их как хотите)

Рисунок 5. Дизайн кейгена

Красота реверсирования .NET приложений заключается в том, что вы можете комфортно импортировать классы, используя для этого Reflector. Так как у нас уже есть проект (кейгена), мы просто скопипастим класс EncryptTripleDES :slight_smile:

6 - a. В Reflector’e клацните мышкой на EncryptTripleDES (в методе кнопки Button1)

Рисунок 6. Вход в класс

Рисунок 7. Содержимое функции EncryptTripleDES

Прежде чем мы сможем использовать этот класс, нам в первую очередь нужно связать его с нашим обработчиком в кейгене. К счастью для .NET программ это очень просто: нажмите на TripleDESCryptoServiceProvider в классе EncryptTripleDES (Рис. 7) и вы переместитесь в соответствующий модуль. Затем посмотрите в нижнее левое окно, где вы увидите модуль, который содержит этот класс.

Рисунок 8. Модуль класса EncryptTripleDES

9 - a. Объявите этот модуль в вашем кейгене как:

Рисунок 9. Объявление модуля

10 - a. Скопируйте класс EncryptTripleDES в ваш keygen как:

Рисунок 10. Добавление класса в кейген

Класс теперь может полностью использоваться нашим кейгеном, поэтому мы можем вызвать его с помощью нашей управляющей кнопки на форме.

11 - a. Объявите класс в коде управляющей кнопки и передайте в параметр "sIN" текст первого поля, а возвращенный результат выведите во второе текстовое поле.

Рисунок 11. Использование класса

Поздравляю! Вы успешно отреверсировали программную защиту .NET приложения и написали кейген для нее :wink:

+Neffarion
http://www.0xNeff.eu

© Translated by Prosper-H from r0 Crew