R0 CREW

Получение исходников с помощью .Net Reflector

Хотел сегодня записать скринкаст, но быстро остыл, так что ловите очередную статью из цикла “Easy crack”, цикла, который доказывает, что для взлома даже серьезных(на первый взгляд) программ не обязательно владеть отладчиком, как дирижер палочкой. Сегодня на повестке дня у нас получение исходных кодов “серьезной” программы. Конечно серьезной, ведь совсем недавно ее ценник находился в районе 300 мертвых енотов. Название ей - OSP(Odnoklassniki spamer). Пользуясь случаем передаю привет explo1t’y, который мало того, что не умеет поддерживать свой софт, так еще и говнокодит.

Начнем. Нам уже известен ЯП, на ктором написана программа(автор сам его нам сказал), это C#. Пораскинув мозгами, собрав их обратно предполагаем, что автор не извращенец и использовал .Net. Для начала проверим с помощью DiE не запакована ли наша программа. Нет, значит мы спокойно можем скачивать .net reflector и пробовать декомпилировать с помощью него нашу программу.

Для справки:

Скачиваем, запускаем, как обычно - File -> Open, видим следующее:

Клик правой кнопкой мыши -> disassemble:

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

Теперь остался один небольшой шаг, экспортируем проект для редактирования в удобной для нас среде. Правый клик на OSP -> Export, выбираем путь для сохранения нашего проекта и открываем его. Я использовал Microsoft Visual C# Express(распространяется бесплатно), но если вы по каким-то причинам не можете или не хотите ее скачивать, то предлагаю вам альтернативный вариант - Sharp Develop.

Все готово, теперь нам осталось подредактировать код, исправить ошибки, которые выдаст студия при запуске(а она их выдаст) и наслаждаться проделанной нами работой.

Update1: KSDR скинул интересный crackme, который идеально подходить для закрепления материала. Скачать с нашего сервера.

Всегда ваш, dahaka. И помните - все не так сложно, как вам кажется. © r0 Crew

Как сохранить изменения внесенные в программу с помощью reflexil? Что то у меня ник как не сохраняет.
Спасибо.

[KSDR], рефлектор не меняет программу, нужно экспортировать проект, например, в visual studio, в ней отредактировать, а уже потом пытаться собрать программу.

Раньше можно было. Буду по старинке через IDA+HEX редактор.

Специально регнулся, чтобы спросить, а если код в обусфакции, то что делать?

Если код обфусцирован, то скомпилировать код не получится, это точно. Тут придется работать руками через Reflector с плагином Reflexil, также можно добавить к этому списку Simple Assembly Explorer. А дальше уже стоит плясать в зависимости от обфускатора. Большинство из них создают пустые классы и методы, кодируют строки. В Simple Assembly Explorer есть функция деобфускации строк, которая часто помогает. Чтобы мы могли дать более развернутый ответ, неплохо было бы увидеть саму программую

http://adobeundress.ru/undress.exe, вот она :slight_smile:

SeNaP, надеюсь, вы в курсе, что она из себя представляет?

Конечно в курсе, вот я и хотел её поковырять :slight_smile:

Ну что я могу сказать, мельком пробежался по внутренностям программы, ибо для более детального анализа этой программы под рукой нет виртуалки, обфускатор с первого взгляда определить не удалось, но встроенный деобфускатор SAE должен помочь. Ну а дальше анализируем так же, как и любую другую программу.

Спасибо огромное :slight_smile:

Доброго времени суток. Такой вопрос есть. Пользуясь возможностями нет рефлектора получил исходный код одной небольшой программы-бота, но главная форма в студии почему-то не отображается и ее исходный код не читаем. Это из-за обфуксации, или может я что-то не так делаю? Какой совет можете дать? Заранее спасибо.[url=http://pixs.ru/showimage/1jpg_1538910_20544406.jpg]

[/url] [url=http://pixs.ru/showimage/2jpg_4540539_20544381.jpg]

[/url]

Бггг. Второй скрин доставляет.

Ты вообще с программированием хоть каким-то знаком?

А для чего было замазывать BenderSkyM ?

Это из-за обфускации, и что-то не так деланья. Деобфусцируем, благо инструменты есть, и делаем что-нибудь так. А зачем неймспейсы замазывать?

Прям анекдот про ошибку в коде вспомнил. Обфускация при помощи лени разбирающего)))

Знаком весьма слабо, потому и написал, в надежде что меня развернут носом в нужном направлении, помогут словом или делом.
А что именно не так деланья? Про обфуксацию/деобфуксацию пошел читать.
Ну а про неймспейсы можете не спрашивать, тут свои тараканы.

Ну так надо ж сначала деобфусцировать… А еще раньше посмотреть, чем обфусцировано. Потому и вышло наперекосяк. Поэтому все остальное деланье дальше смысла не имеет

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

Спасибо. Буду вникать. Может что-нибудь и получится.