В последнее время всё большее количество авторов “рекламного соц. софта” используют платформу .NET для разработки. Причем для того, чтобы защитить свой софт, они не гнушаются использовать платные протекторы (двойные стандарты в области интеллектуальной собственности так и прут), в том числе довольно известный .NET Reactor. Не знаю, с чем связан частый выбор данного протектора, но особой сложности для анализа внутренностей защищенной программы он не добавляет, так как существует множество вспомогательных инструментов для разбора такого софта, да и ручками всё или почти всё не так уж сложно сделать.
К чему это я? А к тому, что данный продукт также защищен этим протектором (как и, например, VIP). Определить протектор не составляет проблемы, так как давно уже существует множество разнообразных программ, помогающих в данном деле: PeID, DotNet Id, ProtectionID и т.п. Соответственно, если проанализировать исполняемый файл с помощью ProtectionID, то он сразу же выдаст следующее:
Сразу открыть такой файл в рефлекторе не получится, ибо:
.NET Reactor builds a native code wall between potential hackers and your .NET assemblies by producing a file which cannot be understood directly as CIL. Because the CIL in your assembly is emitted intact only at run time or design time (in a form in which the source is completely inaccessible), no tool is capable of decompiling .NET Reactor protected assemblies.
Проблема решается довольно просто:
1. Запускаем программу.
2. Качаем какой-нибудь .NET-дампер (если нет желания с помощью отладчика копаться в памяти процесса).
3. Дампим часть памяти процесса.
4. …
5. PROFIT!
Я обычно использую .NET Generic Unpacker или DotNet Dumper. Интерфейс интуитивный, всё запросто дампится.
После того, как отработает дампер, получаем .exe и кучу библиотек (которые неплохо бы переименовать в их оригинальные имена. Если используете DotNet Dumper, то он всё за вас сделает). Для того, чтобы открыть исполняемый файл в Рефлекторе придется совершить ещё одно нехитрое действие, а именно - исправить заголовки. Сделать это можно двумя способами:
1. Погуглить мануал по распаковке .NET Reactor за авторством CodeRipper'a и сделать всё руками.
2. Воспользоваться этим фиксером от dx'a.
Но после открытия получившегося файла в рефлекторе мы увидим "пустые" методы в самых интересных местах:
Чтобы не вникать в особенности (я ужасный лентяй), обратимся к ещё одному полезному инструменту CodeRipper'a - Reactor Decryptor. Соответственно открываем программу в нём, деобфусцируем приложение, а уже потом обрабатываем его фиксером заголовков. Полученный файл можно спокойно открыть в рефлекторе и посмотреть код интересующего нас метода.
Единственная неприятность - строки в нечитабельном виде. Но и это не составляет проблемы, просто открываем файл в программе Simple Assembly Explorer, переходим к интересующему методу и используем встроенный деобфускатор. Перед нами
искомые строки:
Сопоставив строки и код несложно понять, что софт делает GET-запрос вида:
http://actualspam.ru/getAuth.php?key=******
И если в ответе сервера содержится строка true, и IP сервера 195.211.101.8, то софт успешно активируется. Всего в коде два метода с проверкой активации: в классе frmActivation и в классе frmMain.
Таким образом, "активировать" программу можно, например, перехватив вызовы winapi-функций connect и recv, или просто поправив нужные опкоды (править следует экзешник, полученный после деобфускации с помощью Reactor Decryptor, но до применения фиксера заголовков).
Опкоды правятся с помощью любого удобного HEX-редактора. Места, которые необходимо править, можно по-быстрому найти с помощью IDA. Вот одна из проверок на наличие строки true в ответе сервера (проверки можно найти, вбив 0xb4fc и 0xcba в поиск):
Далее переключаемся на вкладку HexView, копируем последовательность байт, вбиваем в поиск в HEX-редакторе и находим нужное место (наверное, можно как-то проще сделать). В данном случае можно поменять в обеих функциях проверки опкод 0x39 (brfalse) на 0x3A (brtrue) или забить часть кода NOP'ами, или ещё как-нибудь извернуться (список опкодов CIL).
Теперь программа активируется при вводе произвольного кода.
Конечно, в .NET Reactor есть разные опции защиты, но разбор содержимого защищенного файла обычно не составляет проблемы.
P.S. А вообще весь этот софт "рекламной" направленности - зло. По мне уж лучше продавцом в магазине работать (кем я и работаю) и смотреть South Park и прочие мультики.
А где этот ActualSpamPro взять-то?
http://www.sendspace.com/file/07d9t1 или на сайте автора
Кайами, за 30% от стоимости софта сможешь написать мануал попродробней? =)
А где уже взломанная версия?
да-да, исходники в студию!
Если есть у кого скомпилированный рабочий архив, прошу поделиться.
Статья супер!!! Kaimi не дает спать потерянная прибыль из-за отсутствующего проекта (спамера или инвайтера)?
Если бы я хотел торговать софтом подобного рода, то торговал бы.
Kaimi, статья отлична. но но сложно разобраться начиная с HEX кода. отпиши поподробней пожалуйста.
Kaimi, я разобрался. спасибо огромное. Мне кажется не стоит выкладывать исходники ибо кто хочет пользоваться софтом должен напрячь мозги.
Очень познавательно, в принципе я подозревал что все эти платные мега-защиты, паганое средство =) Но не думал, что настолько.
Редиска ты..скажу словами ЦС "Надо поймать эту суку и выебать"
Авторы такого софта тоже редиски, поймать бы их как Пухового...
Каждый живёт чем может) Если поймают авторов софта- им светит условка, а если ты попадешься им (авторам софта) голову отвинтят, ломай буржусофт, а такс наживаешь врагов себе и только усиливаешь кол-во школоты, кидал и барыг распространяя все это...
Причем странно что ты не выложил другой ломанный софт "своего" производства, хотя по рукам он давно ходит, я думаю ты в курсе о чем я...
знаешь же, в паблике увидят - или сами найдут или "сдадут" куда следует.
Если авторы готовы приехать в штаты, то пожалуйста. Не в курсе, конкретизируй о каком софте идет речь.
Защита "вредоносного" софта законодательством не предусмотрена думается, а если тебя сам факт взлома такого распрекрасного софта смущает, то можешь считать, что мне за это Паша платит.
Как по мне, Пуховому стало влом поддерживать своих клиентов и он красиво свалил... Помимо денег это дает еще кучу обязанностей
Kaimi, ты спишь с Пашкой?)
Нахрена кому-то биз ломать?
Идиот!
Нет конечно. Я уже сказал - мне за это платят.
А рассуждать о том кто прав, а кто нет можно бесконечно. Кстати, вы бы ещё бизнес на наркотиках построили, а потом возмущались, что кто-то его ломает.
Вы придурки какого вы на Kaimi гоните?
Если у автора ActualSpamPro нету мозгов и он поставил такую говно защиту, и он не может сделать нормальную защиту своего софта не йух вообще этот софт продавать.
Не нравится нехуй вообще заходить на этот блог.
И вообще пошли на йух.
Kaimi молодец и не слушай этих придурков!
кайми, ну хорош пилять то что ты буржуй - прокси поюзать штатные ведь забывал иногда, сам понимаешь где? (ну если сразу не дойдет - там где ты в бане) от себя - вот поймают тебя действительно. и там все как написано выше - ну словами CS
Я не использую штатовские прокси. Пусть ловят если хотят. Пока что всё это напоминает пустые угрозы от школьников в уютном чатике.
ЗЫ: а сломанного викинга че здесь не выкладываешь? или боишься что голове тогда на месте не удержаться?
Любой каприз за ваши деньги.
Дистрибутив + лог процесса авторизации действующей лицензии (из вайршарка) + деньги и будет тебе викинг.
Слушай Каими, если нравится ломать то ломай калькулятор или блокнот.. проги токого рода должны бить только платными. От представь, ты живеш возле детского садика, а я каждому малишу дам по автомату и скажу атакуем "Пидара", тоисть тебя.. Вот и подумай нужно ли прогу делать доступной для всех... Мой тебе совет, не лезь куда не надо и будет тебе щастье
Ага, а проги всего остального рода должны быть бесплатными, да? Чушь не надо говорить.
Легкие деньги боитесь потерять и всё.
И сравнение некорректно, автоматы на каждом шагу не продают. А вашим "крутым приватным" софтом пол-интернета торгует в открытую.
Какой то быдлокрякинг быдлокодинга получился :(.
Конечно, не писать же фильтрующий драйвер ради подмены ответа сервера.
С одной стороны жаль автора: он ведь долго работал над этим софтом.
Но с другой стороны. Если прочитать комменты, то Kaimi против подобного софта. Но все таки зачем тогда взламывать этот софт или писать мануал по взлому, а затем выкладывать это в инет? Ведь данный софт становится еще более доступным для большего количества людей.
Ну конечно автор теперь, наверное, будет пробовать делать защиту получше, как бы, благодаря Kaimi, он обретет новый опыт в написании защиты для своих прог.
Лично я за написание подобного софта, не вижу ничего плохого в этом. Хрумер - это тоже софт, за который надо наказать авторов? Я считаю, что это уже больше относиться к людям, которые используют подобного рода софт. Например, реклама разнообразных лже-партнерок, подмен выдачи, фейковых антивирусов и т. д. Это уже настроящийй бред, который основан на кидке/вымогании денег.
Фишка в том, что реализовать защиту для софта подобного рода, которую я бы не стал пробовать ломать, можно буквально за пару часов. По-крайней мере мне было бы впадлу копаться в защите как у вкбота, но с шифрованием.
Да и протекторы типа WinLicense, Armadillo, VMProtect я бы тоже вряд ли стал ковырять.
Человеку возможно скучно, возможно просто разминается, смысл который увидел я, хотите заработать денег на софте, не поленитесь - запакуйте его чем нибудь платным и серьезным, чтобы его кто нибудь от нечего делать не стал взламывать...имхо
интересная статья.
софт тоже интересный, даже гугл про него молчит...
можно ссылочку на сайт автора?
http://actualspam.ru/
уже нашел, еще раз спасибо за:
1. халяву.
2. интересную статью.
p.s.
софт-то стоит всего 20$
а функционал немногим хуже mvi например...
Вот моё личное мнение:
Kaimi умный тип, а как использовать свой ум решает каждый сам для себя.
Тутов про взлом .NET Reactor куча, было бы интересно почитать про например - Inquartos Obfuscator, еще не видел ни одной статьи про его взлом.
Пример программы, обработанной им, есть?
Вот пример - http://topperharley.ru/2010/08/upload-manager/
Так, а в чем проблема с ним?
Запускаем прогу, дампим тем же Net Generic Unpacker. Получившийся дамп суем в Simple Assembly Explorer, смотрим содержимое метода
TreeNode: 冚(): Boolean: System.Boolean g.g::冚()
Читается содержимое файла key.txt, проверяется длина ключа(должна быть 64), один и тот же ключ должен быть в записан в двух строках в файле. Далее генерируется идентификатор железа в методе
TreeNode: 军(): String: System.String g.g::军()
А потом содержимое key.txt сравнивается с md5 от частей идентификатора железа. В коде все видно в общем то и всю проверку можно представить так:
string str = read_file('key.txt');
string str2 = generate_hwid();
if(str == (md5(str2.Substring(1,10)) + md5(str2.Substring(9,9) + md5(str2.Substring(30,2))))
{
return true;
}
Возможно ещё где-нибудь есть онлайн проверка, но в любом случае код вполне читаем и не составит особого труда её убрать.
можно как нибудь отвязать steamobrute буду очень признателен 15$
Дистрибутив нужен
Smart VK Adverts а такую прогу можешь сломать?
Там VMProtect вроде, а так, если есть лог удачной авторизации на сервере лицензий со снифера, то можно попробовать по-простому
Уу тебя это, видео не открывается:
"Это видео более недоступно из-за заявления о нарушении авторских прав"
Беда, поправлю
Я дошел до этого момента :
"Чтобы не вникать в особенности (я ужасный лентяй), обратимся к ещё одному полезному инструменту CodeRipper’a – Reactor Decryptor. Соответственно открываем программу в нём, деобфусцируем приложение, а уже потом обрабатываем его фиксером заголовков. "
Я деобфусцирувал приложение, а как обработать его фиксером заголовков ?
Это уже отдельной прогой в пакете с Reactor_Decryptor ?
Спасибо!
Фиксер заголовков это та консольная программа.
А можно подробнее где ее взять и как называется ?)
Большое спасибо!
http://kaimi.io/2010/08/net-reactor-header-fixer/
Ошибка вылетает после того как деобфусцирувал приложение и обработал его фиксером заголовков
http://pixs.ru/showimage/2010111815_5453055_1217774.jpg
По-идее не должна вылетать. В любом случае можно включить отображение листинга функции не в виде C#, а в виде IL и в нём разобраться.
перезапустил рефлекатор и заработало в C#.
Столкнулся с следующей проблемой, не хочет нажал на функцию деобфускатор и выдает ошибку :
http://pixs.ru/showimage/2010111816_5346708_1218068.jpg
Извини что голову морочу..
Вернее екзешник ActualSpam pro v1.0_patched_decrypted_patched.exe
не открывается в режиме Class Editor, таже ошибка. что и на скрине
В SAE надо открывать файл, который был обработан только фиксером заголовков.
Открыл файл ActualSpam pro v1.0_patched.exe и он не открылся в режиме Class Editor и не прошел деобфускатор. Таже ошибка :(
http://pixs.ru/showimage/2010111816_6934598_1218174.jpg
Я использовал SAE v1.10.1.0, а не 1.11.0.2 (текущая версия). Возможно из-за этого
Я пробовал SAE v1.10.1.0, не помогло.
я заархивировал. http://www.sendspace.com/file/q5tbxa
Сможете глянуть ?
Так и все открывается, оригинальный файл обрабатывается Reactor Decryptor'ом, потом фиксером и нормально открывается в SAE
Я взял оргинал файла и через Reactor Decryptor дает ошибку "Not even a .NET assembly!" Наверное дамп нужно сначала снять потом фиксером и потом Reactor Decryptor ?
Забыл сказать что когда с дампа обрабатываю Reactor Decryptor то дает ошибку (пробовал сначала дамп потом фиксером и потом Reactor Decryptor, всеравно та ошибка ):
http://pixs.ru/showimage/2010111819_8062223_1219547.jpg
У меня Reactor Decryptor не выдает ошибки при обработке необработанного экзешника из архива Dumps.rar
А как ваш HEX-редактора называется ?
Вижу что очень удобный.
Такого не могу найти(((
На скриншотах hex-редактора нет или речь идет о IDA?
Точно то IDA)
Сорри
Kaimi подскажи пожалуйста где можно почитать литературу чтоб понять в IDA коды на вкладке Hex View-A. А то много цифр и как их понять :(
Спасибо!
http://en.csharp-online.net/CIL_Instruction_Set
http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/pecoff_v8.docx
спасибо!
А на русском не будет ? А то анг. я не очень(
https://wasm.ru/series.php?sid=4
http://www.insidepro.com/kk/258/258r.shtml
Куча всяких статей, поищи на cracklab.ru, wasm.ru, insidepro.com
Можете в статье добавить одну картинку как это сделать: "Далее переключаемся на вкладку HexView, копируем последовательность байт, вбиваем в поиск в HEX-редакторе и находим нужное место"
А то не совсем понятно как это сделать.
Извините за тупость.
А в чем проблема то? В IDA эта вкладка на видном месте, выделить кусок кода мышкой на вкладке IDA View, а потом нажать HexView - это сложно?
Переключился на вкладку Hex-View A, Выделен такой текст 20 BA 0C 00 00,
а как найти 0×39 (brfalse) и заменить на 0x3A (brtrue), там ж одни цифры..
Надо выделить условный переход (brfalse) на вкладке IDA View и переместиться на вкладку Hex View
А как потом сохранить изменение в exe? а то нажимаю на сохранить а оно сохраняет файл .idb.
Спасибо!
А потом взять какой-нибудь hex-редактор (например hiew, winhex), найти в нем тот же участок и отредактировать
Спасибо!
Все получилось!!!
Автор в новой версии уже поменял защиту)
Уже такой способ не проходит(
Kaimi, а эта версия что получилось подправить код, у вас работает ?
Я особо не тестировал
Доброго времени суток, Kaimi.
Как я понимаю автор поменял защиту. Не могли бы вы на нее взглянуть и примерно набросать по какому маршруту двигаться.
Просматривал домку новую, она ничем не отличается от старой, только защиту он поменял..
Качай эту версию и по инструкции меня код.
http://www.sendspace.com/file/07d9t1
И будет тебе счастье !!
Zaicev
можешь аську дать, вопросы есть
или напиши мне 630331070
Я ошибся, прога не совсем работает, как только нажимаю Старт, оно провиряет на валид только одного акка и чет висит..
Kaimi можешь глянуть как обойти изменение в защите (новая версия) ?
http://actualspam.ru/download.php?name=pro
Kaimi может еще защита проверяется когда начинается рассылка, а то при составлении списка получателей, Сooke получает только один акк, а дальше просто висит.
Большое спасибо за твои старания!
Zaicev
Как решил проблему с деобфускатором? У меня такая же вылетает ошибка :(
Переустановил .NET Framework 3.5
В чем проблема???
http://pixs.ru/showimage/1JPG_2484429_1248087.jpg
*.Net переустановил
А зачем общий деобфускатор использовать? Я в SAE открывал и отдельно деобфусцировал строки в интересующих меня процедурах и все.
Kaimi
А Вы деобфусцировали только те 5 строк(51-55) или еще какие то?
Не помню уже. А разница? Это же только для того, чтобы разобраться в логике работы программы и всё
Kaimi
Ну так хочется, самому разобраться, понять :)
Пытаюсь совместить приятное с полезным :)
Вообще, если хочется что-то более фундаментальное узнать в этой области, то лучше почитать статьи на краклабе и васме
Еще вопрос. Какой версии IDA используешь? (можно линк)
Как я понял Hex-редакторе правим оригинальны ехе-шник, так?
IDA 5.5, не помню откуда взял, поищи на руборде или рутрекере. Да
0xb4fc и 0xcba
не находит IDA в коде
что делать?
Нужно искать с большими буквами 0xB4FC и 0xCBA
Сразу скажу софт того не стоит. Взломал своим способом. Пустая трата времени.
Помогите взломать, в долгу не останусь, 207-3нуля-816
при открытии ехе в IDA ,вылазит ошибка Can not set the target processor type "cli" как решить проблему?
Версия иды какая?
5.5 качал с кряком
У меня с ней все нормально, никаких дополнительных манипуляций не проводил