Топик по реверсу/защите приложений .NET

Тема в разделе "WASM.RESEARCH", создана пользователем _edge, 24 авг 2018.

Метки:
  1. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    Здесь предлагаю собирать ссылки на статьи/инструменты по разбору и защите от разбора приложений .NET

    Сгодится любая информация, даже та, которая кажется лично Вам очевидной.


    https://www.securitylab.ru/analytics/439111.php -
    http://www.vijaymukhi.com/documents/books/metadata/contents.htm - статьи
    https://github.com/0xd4d - инструменты
    https://wasm.in/resources/c-deconstructed.30/ - книга

    ( надо бы поиск здесь пошерстить, тоже добавить ссылок )
     
    Последнее редактирование: 24 авг 2018
    Alexey и Aiks нравится это.
  2. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
  3. MasterSLIVA

    MasterSLIVA Member

    Публикаций:
    0
    Регистрация:
    10 авг 2018
    Сообщения:
    48
    А почему только .net ? Давайте уже и натив в том числе.

    https://rutracker.org/forum/viewtopic.php?t=5594952
    Это курс по взлому, регулярно сливается с exelab.
    Но не ждите там ниндзя трюков и приемов.
    Так же там куча утилит для взлома.
     
    Последнее редактирование: 24 авг 2018
  4. MasterSLIVA

    MasterSLIVA Member

    Публикаций:
    0
    Регистрация:
    10 авг 2018
    Сообщения:
    48
    По поводу защиты .net.
    Лучшее что я видел в защите вот https://bhf.io/threads/258853/
    Не реклама. Чел, каким то макаром накрывает фиг пойми чем но взломать очень сложно)
     
  5. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    Ненене Дэвид Блейн, в этом топике только Дотнет.

    О "нативе" (у меня стойкая ассоциация с нейтив-апи, когда слышу это слово) уже писано-переписано лет за 20 дофига и где только можно. Пакеры PE были уже в 1998 ( пусть не пакер, Pe-Crypt32 by Jibz )

    Именно и только .Net. Потому что о нем говорят понемногу и редко. А увы, "прогресс" таков, что наступит время, когда только дотнет и будет.

    Так что давайте подтягивать матчасть.

    Кто напишет "взлом приложений на .Net framework с нуля", по аналогии с серией Нарвахо, или что-то вроде "win32 приложение голыми руками", только для байткода?
     
  6. MasterSLIVA

    MasterSLIVA Member

    Публикаций:
    0
    Регистрация:
    10 авг 2018
    Сообщения:
    48
    Расскажу все что сам знаю о защите. От множества VM протекторов уже написаны анпакеры и слиты в сеть.
    Обычная обфускация не спасает, сами понимаете это вопрос времени.
    Конфузер тоже себя скомпрометировал.
    Вся защита кроме аппфускатора и иазфускатора снимается de4dot`ом.
    Забил я на защиту .net и выношу код на VDS. Благо щас они все дешевле и дешевле.
    В эту тему нужен реверсер, который держит руку на пульсе и следит за реверсингом .net приложений.
    Но он тут никогда не появится, потому что никто не хочет делиться своими маленькими секретами.
     
  7. MasterSLIVA

    MasterSLIVA Member

    Публикаций:
    0
    Регистрация:
    10 авг 2018
    Сообщения:
    48
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    есть забавная идея: эмбедишь себе интерператор WebAssembly в .NET приложение (https://github.com/RyanLamansky/dotnet-webassembly), важную бизнес логику пишешь на любом языке, который компилиться в WebAssembly байт-код... получаешь профит до тех пор пока для WebAssembly не сделают нормальный дизассемблер/декомпилер... даже аббревиатура WebAssembly звучит как WASM, это судьба поцоны...
     
  9. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Очень дальновидно эмбедить опенсурсный интерпретатор в надежде, что никто превозмогая трудности и запершись в квартире на полгода не отреверсит таки этот опенсурс. Особенно учитывая то, что WASM instructions are mapped to their .NET equivalents and converted to native machine language by the .NET JIT compiler.
     
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    наверняка это реализовано через System.Reflection.Emit и происходит в рантайме, то есть в статике такое не разберешь, нужно запускать отладчик и отлавливать создаваемые DynamicAssembly...
     
  11. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Ага WebAssembly/compile.cs так и делает. А еще там есть WebAssembly/OpCode.cs. По-моему вопрос неразбираемости в статике к самому компоненту относиться не может. Пришлось недавно рыться в одной большой программулине, которая раньше была в нейтиве и содержала простенький собственный интерпретатор и функции к нему в дико замороченном формате файлов. С недавного времени они перешли на дотнет, большое человеческое им за это спасибо)
     
    Последнее редактирование: 7 сен 2018
  12. MasterSLIVA

    MasterSLIVA Member

    Публикаций:
    0
    Регистрация:
    10 авг 2018
    Сообщения:
    48
    Т.е. в .net приложении можно напихать нативных вставок в которых будет какая то проверка? Или я не так это все понимаю?
     
  13. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Из одного ненатива в другой ненатив транслирует.
     
  14. MasterSLIVA

    MasterSLIVA Member

    Публикаций:
    0
    Регистрация:
    10 авг 2018
    Сообщения:
    48
    Все равно не понял.
     
  15. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Библиотека позволяет создавать, открывать, изменять, сохранять и исполнять WebAssembly-файлы из дотнетных приложений. При исполнении не используется интерпретатор. ВАЗМ-инструкции путем тупой замены преобразуются в дотнет-байткод средствами налетукомпилера.
     
    MasterSLIVA нравится это.
  16. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    переход к открытому коду неизбежен..

    1. позволяет бороться с воровством.
    2. позволяет расширять пул разрабов.
    3. для защиты от пираток достаточно привязать его к железкам и продавать аппаратно-программное решение + такой подход может сильно увеличивать производительность.
    4. ещё одна схема от пираток == облачка.
     
  17. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Как по Марксу, наступление коммунизма неизбежно. Пингвинятники эту мантру десятилетиями твердят и ютятся в маленькой узконаправленной серверной нише. А бал почему-то правят корпорации со своим закрытым кодом. Есть у опенсурса его особые генетические черты: делается он на голом энтузиазме и с целью поторговать лицом, поэтому часто без напилинга и паялинга толком не работает даже.
    Самый верный способ защиты - сделать так, чтоб до самой интересной части алгоритма было невозможно дотянуться. Это либо выносить ее на сервер, либо в донгл, всё остальное несерьезно. Разработчики игрушек нашли компромисс - чтоб в оффлайн режиме игра была неполнофункциональна. Скачал школьник репак от РГ ВаськиИнносетупМастера, прошел кампанию, мучаясь с вылетами и пропаданием сейвов, а ачивок и сетевого режима не получил.
     
    _edge нравится это.
  18. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
  19. jeer0

    jeer0 Member

    Публикаций:
    0
    Регистрация:
    31 июл 2017
    Сообщения:
    35
    MDBG

    Существует штатный API для отладки .NET, который использует MDBG - отладчик
    от MS.
    https://www.microsoft.com/en-us/download/details.aspx?id=2282

    Можно ставить брейки на функции. Есть несколько "но":

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

    2.) Информацию о локальных переменных (и переданных аргументах)
    можно получить не всегда - возможно, это что-то вроде debug info и нужна
    debug-сборка

    3.) Отладчик и отлаживаемый процесс должны иметь одинаковый Target CPU