Сейчас на форуме: vsv1, r0lka, -Sanchez-, testrev1337, johnniewalker, Kybyx (+3 невидимых)

 eXeL@B —› Крэки, обсуждения —› Снятие протектора - .Net Reactor v4+
Посл.ответ Сообщение

Ранг: 0.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 декабря 2009 16:58
· Личное сообщение · #1

Здарова, уважаемые! До сего момента, никогда не ковырял .net сборки. Пытаюсь снять проверку лицензии (отвязать от файла ключа) с этой программы - ссылка. Первый эшелон протекта представляет собой нативный загрузчик образа .net сборки. Эта сборка находится в секции ресурсов, оттуда забирается и распаковывается/расшифровывается, далее передается в .net рантайм. В сам алгоритм я не вникал, просто сдампил эту сборку на диск (unpacked\R7D4_unpacked.exe). Поправил PE хидеры, убрал лишние .net потоки (а именно #GUlD (маленькая L в названии) и #Blop). Так же выпилил лишнюю Assembly, из за неё не хотело грузить рефлектором. + ещё по мелочи, может что и забыл.

Ещё, сделал search & replace для вот такого трюка (байткод 38020000002616):

Code:
  1. L_0000: br L_0007
  2. L_0005: pop
  3. L_0006: ldc.i4.0
  4. L_0007: ...


Рефлектору сносило крышу. Заменил на nop`ы.

Нормально запускается и работает.

Что не получается:

1) Не могу посмотреть некоторые методы в reflector`е и reflexil выпадает с исключением. Без всего этого очень уныло патчить хекс редактором.

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

Пробовал разные деобфускаторы и ребилдеры - после них сборка попросту падает при выполнении. Но, после какого то из них (кажется .dotdeobfuscate и .Net Assembly Rebuilder) - сборка нормально подгружалась рефлектором и рефлексил не падал с исключением. Если нужно - могу повторить и поделиться.

Лицензия проверяется через LicenseProvider, судя по коду. Попытался по простому занопить этот вызов (выпал при выполнении) - но, видимо, без него не обойтись. Наверняка в классе лицензии есть какая то жизненно важная инициализация.

Куда копать далее?

Простите за большой пост.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 21 декабря 2009 17:34
· Личное сообщение · #2

Unpacking .net reactor 3.6 и 3.9
rongchaua.net/security-mainmenu-28/13-dotnet/109-how-to-unpack-net-reactor-36
Unpacking Net Reactor 3.9.8.0
forum.tuts4you.com/showtopic=19556&st=0&p=104356&hl=Reactor&fromsearch=1&#entry104356



Ранг: 0.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 декабря 2009 17:39 · Поправил: ghostwheel
· Личное сообщение · #3

Vovan666, спасибо за ссылки, посмотрю. Что то из этого я, возможно, уже читал.

upd: Да, вот это я видел - "Unpacking .net reactor 3.6 и 3.9". Там только распаковка, что я уже сделал сам. + версии протектора отличаются, в дампе пришлось править совсем другое.




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 21 декабря 2009 19:37
· Личное сообщение · #4

ну дак надо разбираться чо он там вызывает.
www.eziriz.com/help/index.html

-----
zzz




Ранг: 0.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 декабря 2009 21:07
· Личное сообщение · #5

zeppe1in, и там я тоже был. Гуглил про NecroBit, но так ничего и не нашел. Меня по большей части интересует лишь первый пункт моего поста - а именно, что бы рефлектором нормально можно было браузить по коду. Тогда уже можно реверсить и патчить методом проб и ошибок. ildasm не умеет переходить на процедуры, а визуально сопоставить одинаковые квадраты я не могу ). Как ренейм имен сделать - тоже не в курсе. Читал вот это - http://ntcore.com/files/dotnetformat.htm, в формате чутка разбираюсь теперь. Я так думаю, часть проблем запрятана в кривых таблицах (metadata tables, по терминологии в статье) и другая часть в самом коде. Даже не представлю что именно там может быть поломано, вручную всё чекать опускаются руки и ещё кое-что. Была идея сделать дифф рабочей и падающей сборки после ребилда, но это тоже приятного мало. Большую часть придется проверять визуально. Что-нибудь почитать бы насчет популярных техник обфускации .net протектов...




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 21 декабря 2009 21:42 · Поправил: zeppe1in
· Личное сообщение · #6

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

ой не заметил ссылку.

-----
zzz




Ранг: 0.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 декабря 2009 21:45 · Поправил: ghostwheel
· Личное сообщение · #7

zeppe1in, анпакнутый лежит в том же архиве - unpacked\R7D4_unpacked.exe. У меня запускается и работает нормально (рантайм 3.5). Или какой нужен?
+ там же лежит ещё дллка, которую я выдернул каким то автоматическим анпакером. Подумалось мне, что там ресурсы. Уже не знаю, делал ли я с ней что-либо ...

Ещё в корне лежит триальный файл лицензии, без него будет выбрасывать мессадж бокс с капшном - Lock System.



Ранг: 81.0 (постоянный), 88thx
Активность: 0.070.02
Статус: Участник

Создано: 21 декабря 2009 22:02
· Личное сообщение · #8

ghostwheel
Как ренейм имен сделать - тоже не в курсе.

Тем же SimpleAssemblyExplorer можно переименовывать... Что классы, что методы...



Ранг: 0.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 декабря 2009 22:25
· Личное сообщение · #9

Ага, SimpleAssemblyExplorer файл не грузит:
"Заданный аргумент находится вне диапазона допустимых значений.
Имя параметра: Cannot map the rva to any section"

Наверное, я с секциями что-то напутал. Т.к. это первое что пришлось править, после я делал Rebuild в CFF Explorer, так что по идее всё нормально должно быть, но всё же.




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 23 декабря 2009 18:42
· Личное сообщение · #10

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

-----
zzz




Ранг: 0.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 декабря 2009 18:58
· Личное сообщение · #11

zeppe1in, успехов не особо. Не осилил, что нужно править - что бы файл загрузился в SAE. На этом всё и встало.
Поделись файлом?




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 25 декабря 2009 02:21
· Личное сообщение · #12

www.sendspace.com/file/jfkh4n
один рабочий но не грузится в sae, другой грузица но не запускается.
кстати sae строки может декодить, становится будто бы легче, хотя в этом фарше всё равно сложно разбиратся. а ещо я деобфусцироал метод main

-----
zzz




Ранг: 13.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 20 февраля 2010 12:21 · Поправил: o_nix
· Личное сообщение · #13

Народ может кто подскажет

распаковываю Reactor NET по показаниям ProtectionID.v6.3.5 версия 3.3 - 3.9
У этой программы не появляется окно ввода ключа тоесть сразу после окна


Идёт загрузка проги в демо режиме или (если триал период кончился) просто выход
Как при таком раскладе искать волшебный "MZ" при распаковке через ольку без windbg ??

======================================================================

И вопрос по второму методу распаковки через windbg всё сделал по иструкции применительно к крякме
но после olly cmd loadpdb C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Вместо
Выводит


Тоесть тип Library в списке вообще отсутствует ... что нетак ?




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 20 февраля 2010 17:38
· Личное сообщение · #14

o_nix

Как при таком раскладе искать волшебный "MZ" при распаковке через ольку без windbg ??

незнаю как щас, но раньше даже при таком раскладе всё успешно дампилось тем же net генерик унпакером. тоесть искать точно также.

И вопрос по второму методу распаковки через windbg всё сделал по иструкции применительно к крякме
но после olly cmd loadpdb C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll

у меня этот плагин криво работал.
загрузи в иду, в неё pdb, потом сделай map фаил, а его уже через плагин mapimp в олю)
ну или просто посмотри нужные тебе адреса в иде.

-----
zzz




Ранг: 13.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 21 февраля 2010 01:02
· Личное сообщение · #15

zeppe1in - а каким образом приводить в рабочее состояние проги распакованные дженериком ??

Запустил прогу натравил генерик на процесс выплюнуло 3 exe и штук 5 dll
Ниодна из exe не запускается выдаёт


два окна с ошибками это две разные запущенных выплюнутых проги (к одной ещё + cmd окно запустилось)
Судя повсему оригинальная программа состоит из трёх склеенных программ и самая маленькая из них отвечает какраз за систему лецензирования именно изза этого все сложности с распаковкой ...

Дело в том что в ольку эта прога грузится только до окна нага что я уже выкладывал если нажать ок происходит выход из проги тоесть нет входа в модуль программы потому и нельзя распаковать олькой.

Выданные генериком exe открываются в рефлекторе но они с обфускацией ...
на скрине какраз открыт модуль лицензирования походу ...



Ранг: 13.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 21 февраля 2010 10:55
· Личное сообщение · #16

Собственно деобфусцировал модуль лицензирования
вот наиболее интересный кусок кода
Code:
  1. private static byte[] Method_01(byte[] buffer1)
  2. {
  3.     try
  4.     {
  5.         string str = "kl\x00a7$%7ghJ/()3w45ZZHW$5$%&gwSADF2";
  6.         string str2 = "sd\x00a75$\x00a7&g457!23nm";
  7.         string str3 = str;
  8.         string str4 = str2;
  9.         byte[] rgbKey = new byte[str3.Length];
  10.         for (int i = 0; i < str3.Length; i++)
  11.         {
  12.             rgbKey[i] = Convert.ToByte(str3[i]);
  13.         }
  14.         byte[] rgbIV = new byte[str4.Length];
  15.         for (int j = 0; j < str4.Length; j++)
  16.         {
  17.             rgbIV[j] = Convert.ToByte(str4[j]);
  18.         }
  19.         RijndaelManaged managed = new RijndaelManaged();
  20.         managed.Mode = CipherMode.CBC;
  21.         ICryptoTransform transform = managed.CreateDecryptor(rgbKey, rgbIV);
  22.         MemoryStream stream = new MemoryStream();
  23.         CryptoStream stream2 = new CryptoStream(stream, transform, CryptoStreamMode.Write);
  24.         byte[] buffer = buffer1;
  25.         stream2.Write(buffer, 0, buffer.Length);
  26.         stream2.FlushFinalBlock();
  27.         byte[] buffer4 = stream.ToArray();
  28.         stream.Close();
  29.         stream2.Close();
  30.         return buffer4;
  31.     }
  32.     catch
  33.     {
  34.     }
  35.     return new byte[1];
  36. }


Как из этого кейген сделать до меня чтото совсем недоходит .... проге необходимо скормить файлключ...
Два варианта деобфускации модуля slil.ru/28683199
Может поможет кто из соображающих в .NET



Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 21 февраля 2010 13:47
· Личное сообщение · #17

o_nix пишет:
Может поможет кто из соображающих в .NET

а что тут разбираться??? логику или что там у тебя включить сложно?? пока сам не сделаешь - так и будешь просить по форумам. o_nix пишет:
кусок кода

отвечает за расшифровку файла лицензии в массив байт, смотри откуда он вызывается. Вообще по кейгенингу качай, смотри, учись tuts4you.com/download.php?list.26



Ранг: 13.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 21 февраля 2010 15:53
· Личное сообщение · #18

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

Deblector для меня вообще инструмент новый .. непонимаю почему можно поставить бряк только после запуска проги и в режиме паузы

Как только я жму старт прога уже выдаёт какието результаты у неё нет ни фейса ничего .. как в этомслучае поставить бряк и запустить прогу с этим бряком а не заново



Ранг: 81.0 (постоянный), 88thx
Активность: 0.070.02
Статус: Участник

Создано: 21 февраля 2010 17:52
· Личное сообщение · #19

o_nix пишет:
непонимаю почему можно поставить бряк только после запуска проги и в режиме паузы


В Dile можно ставить до запуска...
dile.sourceforge.net/



Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 21 февраля 2010 18:53
· Личное сообщение · #20

o_nix
ты видать не видел деобфускации еще, то что у тебе, это детский лепет. Посмотри откуда вызывается метод, что ты привел выше, там происходит, расшифровка и запуск новой сборки, больше там нечего нет. Читай туторы, там все есть. "Учение свет - не учение тьма."




Ранг: 196.6 (ветеран), 11thx
Активность: 0.070.01
Статус: Участник

Создано: 21 февраля 2010 22:41
· Личное сообщение · #21

yanus0 пишет:
o_nix
ты видать не видел деобфускации еще, то что у тебе, это детский лепет. Посмотри откуда вызывается метод, что ты привел выше, там происходит, расшифровка и запуск новой сборки, больше там нечего нет. Читай туторы, там все есть. "Учение свет - не учение тьма."

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



Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 21 февраля 2010 23:02
· Личное сообщение · #22

[wl]
согласен на 100%, автор переложи сабж




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 22 февраля 2010 13:32
· Личное сообщение · #23

o_nix пишет:
а каким образом приводить в рабочее состояние проги распакованные дженериком ??

Запустил прогу натравил генерик на процесс выплюнуло 3 exe и штук 5 dll
Ниодна из exe не запускается выдаёт

грузиш в рефлектор и видиш оригинальное название exe/dll. license.dll MC.exe(вроде так, точно не помню) это реакторские фаилы есть во всех прогах им упакованных.
после того как сдампил открываеш фаил в cff explorer и лечиш заголовок. в туторах по распаковке написано что и как фиксить.
o_nix пишет:
Дело в том что в ольку эта прога грузится только до окна нага что я уже выкладывал если нажать ок происходит выход из проги тоесть нет входа в модуль программы потому и нельзя распаковать олькой.

ну и почему нельзя то? ставиш бряк на loadimage или чо там, и дампиш. там хедер будет правильный но будут пустые методы.

-----
zzz




Ранг: 13.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 22 февраля 2010 13:45 · Поправил: o_nix
· Личное сообщение · #24

zeppe1in - по тем туторам что выложины были выше я пробовал восстанавливать через cff explorer непомогает это
этот метод работает видимо на всё что угодно кроме этого конкретного случая ...

Собственно сабж полностью
_ttp://tinyurl.com/yh83wbd
Даю такую ссылку тк нехочу чтобы это попало в индекс прога ковыряется для личного так сказать использования и исключительно в мирных целях (слишком дорого стоит)

каждый exe с нагом представляет собой бутерброд из нескольких net программ, + походу ещё dll для криптовки файла ключа, изза этого невозможно извлеч через ольку известными методами и получить рабочий exe, выдергивается только нетгенериком в нерабочем состоянии

В бутерброде есть и .net 2.0 и .net 3.5 то что в 2.0 деобфусцируется нормально ... а вот под 3.5 вообще я так понял деобфускаторов в природе нет пока.

По агентурным данным проге нужно три файла ключа с расширением .license ... плюс ко всему есть стучалка на сервер ...
Есть ощущение что сломать такое невозможно или стоит это в несколько раз больше стоимости самой проги :D
В общем выкладываю чисто для опытов ... чтоб увидели как всё сложно можно сделать с защитой .NET



Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 23 февраля 2010 23:45
· Личное сообщение · #25

o_nix
. NET Reactor NecroBit Shelling -
translate.googleusercontent.com/translate_c?hl=ru&sl=zh-CN&tl=en&u=http://www.rainsts.net/article.asp%3Fid%3D830&rurl=translate.google.com&usg=ALkJrhjQLL7xAp173GDRfLLF76JPG71c2A


 eXeL@B —› Крэки, обсуждения —› Снятие протектора - .Net Reactor v4+
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати