R0 CREW

Крэкинг для самых маленьких или взламываем SoulEngine

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

Глава 1.

Как-то раз ко мне на “операционный стол” попала интересная на первый взгляд программа, а интересна она была тем, что при минимальном функционале она занимала ~7 Мб. дискового пространства. Я не стал сразу пихать ее в дизассемблер, а запустил Filemon и посмотрел, куда и что пишет программа. И я не ошибся - оказалось, что она распаковывает часть интерпретатора php и некий фреймворк в папку %TEMP%. Посмотрев код фреймворка и увидев его название, я полез в гугл и через пару секунд уже был на тематическом форуме. Оказывается, это проект российских энтузиастов, причем не только фреймворк, но и среда визуальной разработки, название ей - DeveStudio. Среда поддерживает два вида упаковки в .exe: в один файл пакуются все библиотеки и исходный код и куча файлов по отдельности. Мой пациент был запакован вторым способом, и в папке с программой лежал файл с расширением .dvs, в котором и содержался исходный код. Скачиваем среду, открываем .dvs файл и видим следующее: скриншот. Все готово, теперь мы можем сделать с программой все, что захотим.

Глава 2.

Все началось с недавнего поста на форуме, просьба о взломе несложной программы, вроде бы все как обычно, но(!) опять же этот ужасно огромный размер программы, в которой вроде бы нет каких-то сложных функций. Итак, снова запускаем Filemon, видим все тот же интерпретатор php, тот же фреймворк, казалось бы все просто, но на этот раз файл запакован в один .exe и при этом файл с исходниками никуда не записывается => исходные коды держатся в памяти. Немного погуглив, скачиваем DetectiveStory - редактор памяти, запускаем, настраиваем фильтр на нужное нам приложение и в пару кликов сохраняем полный дамп памяти приложения на диск. Дамп представляет собой файл вида [имя_процесса].mem с текстовым содержимым, который спокойно просматривается обычным блокнотом, но я предпочел notepad++. Вот что предстает перед нами, когда начинаем смотреть дамп. На первый взгляд ничего не понятно, но немного пролистав вниз мы находим интересную функцию. Далее нам нужно найти где же эта функция вызывается (а вызывается она при нажатии на кнопку), но проблема состоит в том, что код обработчика событий(в т.ч. нажатия кнопки) закодирован в base64 и поэтому нам придется декодировать по очереди все события, связанные с нажатия кнопки на форме программы. Но и тут можно схитрить, сравнивая длину закодированного участка(процедура проверки серийника будет немного больше => длина закодированной строки больше), также немного прошерстив дамп, находим нужный нам участок и декодируем его. Теперь дело за малым - проанализировать код, на основе его составляем кейген. Чтобы запустить его потребуется DevelStudio с установленным дополнением “osinfo”. В результате нашей работы мы видим радующее взгляд окно.

p.s. Удачи в крэкинге, и помните: это вовсе не трудно, только не стоит строго следовать инструкциям, не бойтесь импровизировать и все получится
p.s.2. Взлом ПО с целью наживы уголовно наказуем. Lets crack for fun!

dahaka © r0 Crew