27.11.2014 Views

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

взлом<br />

ДАМП ПАМЯТИ УЖЕ РАСШИФРОВАННОЙ СБОРКИ<br />

а также шифрования строк. Она так и делает, но анализ кода<br />

от этого не усложняется. Ну да, теперь методы называются<br />

типа a, b… Тот же обработчик мы легко идентифицируем по<br />

определению делегата, а шифрованные строки все равно будут<br />

расшифрованы. Так что, ни хрена это не защита.<br />

Второй метод связан со статическим шифрованием всей сборки.<br />

В бинарник вставляется нативный код, который расшифровывает<br />

сборку при загрузке приложения и защищает ее от<br />

статического анализа. Решений таких — ну просто очень много.<br />

Одно из самых известных — CodeVeil от XHEO. Реально крутая<br />

тулза! Попробуем зашифровать сборку и открыть ее в Reflector.<br />

Оба-на, ошибка: «Module … does not contain CLI header».<br />

Reflector, ILDASM и другие утилы даже не идентифицируют ее<br />

как .NET-сборку. Между прочим, в Professional-версии утила<br />

стоит 1200 зеленых рублей, а лозунг ее — «Don’t just confuse<br />

hackers. Stop them». Впечатляет и вдохновляет!<br />

Ломается такая защита в два счета. Давай подумаем. Если<br />

сборка расшифровывается в памяти перед передачей управления<br />

CLR, значит, нужно просто снять дамп памяти. Загружаем<br />

«защищенную» по самые никуда сборку в память и цепляемся<br />

к ней WinHex’ом (Tools Open Ram; далее выбираем<br />

процесс и модуль в нем). Копируем в файл содержимое памяти:<br />

CTRL+A, затем Edit Copy All Into New File и сохраняем<br />

под именем app14_unveiled.exe. Пытаемся запустить и ловим<br />

ошибку инициализации. Видимо, где-то поползли секции.<br />

Открываем в Reflector и, о чудо, код как на ладони; правда, не<br />

работает Reflexil, вылетая с исключением. Запускаем ILDASM,<br />

XÀÊÅÐ 07 /127/ 09<br />

делаем дамп IL и компилируем… — получаем новую полностью<br />

работоспособную сборку со снятой защитой. Во как!<br />

Справедливости ради стоит отметить, что в текущей версии<br />

CodeVeil 3.2, по заявлению разработчиков, реализована динамическая<br />

защита во время исполнения, что сильно затрудняет<br />

задачу. Необходимо детально исследовать нативный код<br />

шифровщика. Мне кажется, что создание unpacker’а — лишь<br />

вопрос времени. Пока никто эту задачу не решил, так что<br />

дерзай, возможно, получится у тебя.<br />

Таким образом, программисту приходится полагаться только<br />

на самого себя. Можно шифровать сборки, динамически<br />

расшифровывать их во время исполнения и подгружать с<br />

помощью Application.Load. В общем, все как в старом добром<br />

Assembler’е. А можно воспользоваться виртуальными контейнерами<br />

типа ThinApp или Xenocode. Ну а лучше всего и вовсе<br />

реализовывать критические участки с помощью неуправляемого<br />

кода.<br />

ИЗ РОССИИ С ЛЮБОВЬЮ<br />

Помни, что только практика способствует твоему развитию. Как<br />

видишь, все не так уж сложно, но, заходя на сайт глобального<br />

рейтинга www.wechall.net, я с грустью обнаруживаю Россию на<br />

25-м месте. В рейтинге зарегистрировано всего 5 российских<br />

хакеров-участников! Давай поддержим нашу страну: регистрируйся<br />

на сайтах-челленджах и бросай баллы в копилку Родины.<br />

Все описанные действия совершены под музыку Джо Кокера.<br />

Слушай блюз и будь счастлив!z<br />

DVD<br />

dvd<br />

На диске ты найдешь<br />

все упомянутые в<br />

статье тулзы, официальное<br />

описание CIL<br />

от Microsoft, а также<br />

препарируемый<br />

CrackMe и его пропатченную<br />

версию.<br />

059

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!