Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
14 / 14 / 5
Регистрация: 15.12.2014
Сообщений: 90

Защита от декомпилирования .net файлов

18.08.2016, 13:45. Показов 3475. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно сабж. Неоднократно выручал Reflector, но теперь интересуюсь способами его обхода, чтобы рядовой программист не смог декомпилировать все обратно в C# (шарящий все равно вырвет код, если будет нужно).
Есть ли какие-либо решения этого? (в курсе про Dotfuscator, но хотелось бы понять сам принцип защиты от рефлектора, а не использовать готовое ПО)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.08.2016, 13:45
Ответы с готовыми решениями:

Как защитить программу от декомпилирования? (С, C++, C#)
Дело было с C# выложил программу в открытый доступ (Уже удалил), через некоторое время прислали архив с кодом, правда классы формы били...

Защита .Net сборки
Здавствуйте. подскажите на сколько стойкой будет защита программы если ее упаковать пакером типа themida или enigma и, упакованное,...

Защита кода .NET Обфускаторы
Недавно я столкнулся с открытостью кода на .NET. Подскажите пожалуйста, какие существуют методы защиты. Прочитал про обфускаторы. На...

25
 Аватар для Serg34
100 / 100 / 33
Регистрация: 20.09.2014
Сообщений: 457
Записей в блоге: 3
22.09.2016, 00:28
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от NickoTin Посмотреть сообщение
Нужно выбрать
Получилось Извиняюсь, с репозиториями до этого не имел дела. Спасибо за Вашу настойчивость.

Цитата Сообщение от NickoTin Посмотреть сообщение
Не обязательно.
А как узнать точно? Если имена пустые или библиотека обфуксируется отдельно, то, я так понимаю, оригиналы точно сохраняются, а когда еще?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
22.09.2016, 00:57
Цитата Сообщение от Serg34 Посмотреть сообщение
оригиналы точно сохраняются
Нет, ничего никуда сохранять не нужно, но есть ситуации когда нужно сохранить/восстановить исходное название.

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

1 - это те типы, которые Вы определяете сами, в своей сборке;
2 - в случае если тип описан не в Вашей сборке, то обфусцировать его название нежелательно/нельзя, связь между типами в разных сборках осуществляется по имени.
1
 Аватар для Serg34
100 / 100 / 33
Регистрация: 20.09.2014
Сообщений: 457
Записей в блоге: 3
23.09.2016, 08:31
NickoTin, Вот, например, класс:
C#
1
2
3
4
public class Test
    {
        private Test myField;
    }
и его метаданные:
TypeDef #1 (02000002)
-------------------------------------------------------
TypDefName: ObfuscationTest.Test (02000002)
Flags : [Public] [AutoLayout] [Class] [AnsiClass] [BeforeFieldInit] (00100001)
Extends : 01000010 [TypeRef] System.Object
Field #1 (04000001)
-------------------------------------------------------
Field Name: myField (04000001)
Flags : [Private] (00000001)
CallCnvntn: [FIELD]
Field type: Class ObfuscationTest.Test // ссылка по имени
Как поменяются метаданные (а именно, TypDefName: ObfuscationTest.Test и Field type: Class ObfuscationTest.Test) после обфускации или, другими словами, можно ли после обфускации по метаданнным восстановить нормальные имена?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
23.09.2016, 11:06
Serg34, изначальные имена - нет, но на clrium показывали, как можно очень хорошо восстанавливать имена методов и локальных переменных. Ну например вызвал x.ToString() - получи переменную xString, вызывал метод x.Sort(), получи sortedX, и так далее. Т.к. код не существует в вакууме, а вызывает всякие библиотечные АПИ, BCL-ные и т.п., то как GC от корней до самых последних листьев может восстановить граф всех объектов в системе, так и декомпилятор начиная от имен, которые обфусцировать нельзя (тот же System.String обфусцировать не получится) сможет восстановить довольно точно исходное именование.

Причем ему не важно, какое имя было изначально у этой переменной. То есть изначальные имена не восстановить конечно - как после string.Replace можно восстановить. что именно было заменено? Никак. Но это и не нужно как правило.
1
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
23.09.2016, 12:24
Serg34, пример того как могут поменяться имена можете тут глянуть.

Цитата Сообщение от kolorotur Посмотреть сообщение
Unhandled Exception: System.AccessViolationException: Attempted to read or write
protected memory. This is often an indication that other memory is corrupt.
at 1.1.1(Void* 1, Void* 1, Void* 1, UInt32 1, Byte** 1, UInt32* 1)
at 1.1.1.1()
at 1.1.1()
Psilon всё верно объяснил, деобфускаторы умеют восстанавливать имена полей/переменных до читаемого уровня.
0
 Аватар для SharpDeveloper
141 / 138 / 22
Регистрация: 16.02.2012
Сообщений: 453
23.09.2016, 16:37
Serg34, вам обфускация нужна, или зашита кода? Или и то и другое вместе?) Я использую обфускатор (dotfuscator), затем протектор (ilprotector). Получается довольно хорошая защита кода, никакой рефлектор не справится с восстановлением.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.09.2016, 16:37

Защита .Net приложения
Добрый день! Прошу помочь в решении проблемы. Есть на страницах элементы, которые должны быть активны\видимы только для пользователей...

Защита страниц ASP.NET не срабатывает
для того чтобы клиенты не могли обращаться напрямую к любой странице приложения не пройдя авторизацию я прописал в web.config: ...

Работа с Word на ASP. Net Защита от сбоев
Все доброго времени суток! Разрабатываю веб-приложение, ввожу некоторые данные, и по ним формирую некоторые документ word из шаблона....

Защита от DDoS средствами VB.NET
Как и какие средства VB.NET использовать? Что можно почитать на эту тему?

Защита shareware программа написанных под NET
Здравствуйте. Как защитить свою программу от взлома? Конечно понимаю, что все можно взломать. Но отличается ли взлом обычных программы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть не большие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru