Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/65: Рейтинг темы: голосов - 65, средняя оценка - 4.65
1 / 1 / 0
Регистрация: 25.09.2013
Сообщений: 181

Как защитить программу от дизассемблирования?

24.04.2014, 13:45. Показов 12582. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можете подсказать, как можно реализовать хоть какуб-нибудь более-менее простую защиту от дизассемблирования программы с использованием C# или c++??
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.04.2014, 13:45
Ответы с готовыми решениями:

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

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

Как защитить программу?
Итак, я написал бота, во-первых мне нужно каким-то образом сделать в нём лицензию, во-вторых мне нужно защитить сам код, чтобы невозможно...

16
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
24.04.2014, 15:13
от дизассемблера не спасёт ничего. Может вы путаете с декомпилированием?

http://msdosworld.ru/stati/sti... blera.html
0
1 / 1 / 2
Регистрация: 16.04.2014
Сообщений: 19
24.04.2014, 16:07
На самом деле от дизассемблера можно защититься, но эта защита весьма относительна... Помнится, когда-то читал книжку по ассемблеру, там предлагался вариант перезаписи точки входа в приложение и моментальный выход. Таким образом при запуске программа запускалась и работала, а дизассемблер считал, что программа тут же закрывается при старте. По крайней мере для IDA в то время это работало. И подобных приемов было много...

Это больше похоже на "я убегаю, ты догоняешь". Дизассемблеры постоянно развиваются, и против них постоянно придумывают новые препятствия... Тут однозначно можно сказать только одно: если нет желания посвятить этой гонке все свое время - лучше не соваться в это дело и воспользоваться сторонними решениями.

Что касается конкретно C# - это в каком-то роде неполноценный язык. Получаемый exe-файл не содержит нативного кода, в нем записаны инструкции, которые должны быть переданы .NET-среде для исполнения. Так написанную на C# программу можно очень просто открыть и просмотреть весь исходный код (с оригинальными названиями функций и переменных).

Я пишу на C# и так же столкнулся с проблемой защиты приложений. Для моих задач подошел .NET Reactor. По сути это обфускатор (делает код нечитаемым для человека), так же он может заменять некоторые участки кода нативными инструкциями (функция necro-bit, если не ошибаюсь). Как правило подобной защиты хватает. Если есть очень важные участки кода, их переписать на C++ и сделать нативную DLL-ку, которую можно будет защитить получше, и затем использовать в своей программе. Но мне такие извращения еще не требовались. Идеальной защиты нет, стремиться надо лишь к тому, чтобы стоимость взлома была выше стоимости лицензии.
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
24.04.2014, 16:22
Цитата Сообщение от micron Посмотреть сообщение
На самом деле от дизассемблера можно защититься
если бы это было так, то в мире не существовало бы пиратского софта. Если даже игровые студии с миллионными бюджетами не могут защитить свою продукцию от взлома сцен-группами, то что тут говорить об обычных программах.
0
1 / 1 / 2
Регистрация: 16.04.2014
Сообщений: 19
24.04.2014, 16:31
Цитата Сообщение от micron Посмотреть сообщение
но эта защита весьма относительна...


Постоянно придумывают новые изощренные методы заламывания рук дизассемблеру. Но эти методы временные, потому что новые версии дизассемблеров будут устойчивы к этим приемам.

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

Цитата Сообщение от _lunar_ Посмотреть сообщение
Если даже игровые студии с миллионными бюджетами не могут защитить свою продукцию от взлома сцен-группами, то что тут говорить об обычных программах.
В рамках текущих реалий слову "защитить" дают новое определение... Защитить ПО - это создать условия, при которых взлом будет экономически не выгоден. Это достигается двумя способами:
1. Усиление защиты софта
2. Снижение стоимости лицензии
Если какой-нибудь солидворкс стоит 200 000 рублей за лицензию и им пользуются все современные инженеры, то наверное им бесполезно тратить слишком большие деньги на защиту - ее все равно взломают (даже если взломщику придется с калькулятором просматривать каждый байт кода ). А если мы пишем свой винрар стоимостью 10 копеек и мечтаем о массовых продажах в будущем, то тут есть смысл заморочиться... Но опять же главное не перестараться
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
24.04.2014, 16:35
Цитата Сообщение от micron Посмотреть сообщение
Защитить ПО - это создать условия, при которых взлом будет экономически не выгоден
ну а я то совсем о другом. Мне не интересен термин экономически не выгоден, я говорю о том, что не взламываемой защиты не существует. И уточню - не существует не взламываемой защиты на архитектуре х86...
0
1 / 1 / 2
Регистрация: 16.04.2014
Сообщений: 19
24.04.2014, 16:37
Сложно спорить. Если код должен исполниться на машине клиента, значит в нем есть все необходимое для этого. А раз так, то это можно выковырнуть оттуда

Тут может помочь только одно - не давать пользователю свою программу. Распространять лишь оболочку, а все алгоритмы держать на сервере, к которому будут подключаться клиенты. Пожалуй, для параноиков это самый топовый вариант
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
24.04.2014, 16:39
Посмотрите также в сторону обфускаторов. Код это получить не помешает, но читать его и разобраться в нём будет трудно (иногда - практически невозможно).
Однако, это не относится к дизассемблированию.
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
24.04.2014, 16:43
Цитата Сообщение от micron Посмотреть сообщение
все алгоритмы держать на сервере
давно взломано путём создания эмуляторов (ещё во времена пресловутой DRM - когда часть данных хранилась на сервере).
0
1 / 1 / 2
Регистрация: 16.04.2014
Сообщений: 19
24.04.2014, 16:52
Это я значит упустил. Интересно будет погуглить...

В общем, возвращаясь к теме, касательно C# лично меня устраивает .NET Reactor... Слышал о более крутой софтине (не помню названия), но она жутко дорогая (я юзаю лицензионную копию), а приложения получаются не сильно лучше защищены.

Что касается C++, тут помогут крипторы. Не знаю что сейчас модно в этой области, но раньше я юзал ASProtect и UPX.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
24.04.2014, 16:57
Цитата Сообщение от micron Посмотреть сообщение
все алгоритмы держать на сервере
Даже Diablo 3, в которой несколько необходимых для запуска файла размещается на сервере и необходимо их получение именно оттуда - взломали. Однако из-за мутности взлома, когда читаешь комментарии к игре, люди чаще задумываются о её покупке.
Dimarik_1, насколько важен ваш код, чтобы тратить силы на его защиту?
И вообще, пишите под OpenSource.
0
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
24.04.2014, 17:40
Цитата Сообщение от tezaurismosis Посмотреть сообщение
пишите под OpenSource.
и как продавать такое приложение? при условии что заранее известно что за поддержку платить никто не будет.
0
1 / 1 / 2
Регистрация: 16.04.2014
Сообщений: 19
24.04.2014, 17:51
Ну все зависит от задачи. К примеру почему покупают промышленные версии компьютеров для производства? Ведь они работают медленнее, корявые... То что заявляют о повышенных помехозащищенностях - не более чем маркетинговый ход...

Их покупают как раз из-за поддержки. Это гарант, что еще лет 5 их будут выпускать именно такими, какие они есть. И если в производстве сгорит один компьютер, то в течение этих 5 лет можно будет без проблем купить замену.

Другой вариант более дешевый - китайцы очень любят. Используют в промышленности обычные PC... Дешево, круто... До первой поломки. Потом начинается, в одном оборудовании такая материнская плата, в другом другая... Где-то пол станка не работает - под это железо еще драйвера не написали...

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

К примеру я... Мне нравится NOD32, у меня есть лицензия... И купил я ее только из-за поддержки. Я хочу своевременно получать все обновления. Мне не нужны новые антивирусные базы спустя сутки после того как я поймаю троян

Если не делать упор на это при разработке ПО, то можно его не защищать - оно никому не нужно.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
24.04.2014, 17:58
Цитата Сообщение от hepper Посмотреть сообщение
и как продавать такое приложение?
Я сомневаюсь, что приложение, о котором пишет ТС, не то что будет продаваться, но что даже будет дизассемблироваться.
И для того чтобы приложение продать, ещё нужно чтобы кто-нибудь захотел его купить. Если в одиночку пишешь приложение, очень сомнительно, что оно будет куплено.
Идеальный выбор для одного программиста - писать приложение под OpenSource, выкладывать на какой-нибудь GitHub и тогда получится что-нибудь годное, может быть. Это, естественно, моё личное мнение.
Цитата Сообщение от hepper Посмотреть сообщение
при условии что заранее известно что за поддержку платить никто не будет
Для чего JetBrains пишет dotPeek, у него и поддержка не предполагается? Причины не только в самом приложении.
0
1 / 1 / 0
Регистрация: 25.09.2013
Сообщений: 181
24.04.2014, 18:10  [ТС]
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Dimarik_1, насколько важен ваш код, чтобы тратить силы на его защиту?
вообще не важен. Это что-то типа курсовой: программа, которая защищает от дизассемблирования другие программы. Пусть и хреновым способом.
я думал что вы мне алгоритм предложите. Без использования ассемблера
0
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
24.04.2014, 18:38
Цитата Сообщение от Dimarik_1 Посмотреть сообщение
я думал что вы мне алгоритм предложите. Без использования ассемблера
если типа курсовой, то придумайте простейший вариант (не можете придумать сами - "подсмотрите" на опенсорс ресурсе) и реализуйте.

Цитата Сообщение от tezaurismosis Посмотреть сообщение
Для чего JetBrains пишет dotPeek, у него и поддержка не предполагается
ну у них есть продаваемый продукт...
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
25.04.2014, 02:03
Лучший ответ Сообщение было отмечено Dimarik_1 как решение

Решение

Цитата Сообщение от hepper Посмотреть сообщение
и как продавать такое приложение?
есть такая штука как donate + реклама.
существует очень много opensource проектов, которые отлично развиваются и зарабатывают (браузеры, офисы, медиа-программы). Здесь главное чтобы этот проект был везде на слуху.

Добавлено через 6 часов 35 минут
Цитата Сообщение от Dimarik_1 Посмотреть сообщение
я думал что вы мне алгоритм предложите
ну так в интернете полного всякого. Суть простейшей защиты от дизассемблирования это так называемый detect отладчика.
http://www.codeproject.com/Art... ring-Guide
http://www.codeproject.com/Art... -Debugging
http://staff.ustc.edu.cn/~bjhu... -disas.pdf
http://securitylabs.websense.c... everse.pdf
http://dvlabs.tippingpoint.com... techniques
http://syprog.blogspot.ru/2012... -dump.html
можно воспользоваться функцией VirtualProtectEx с флагом PAGE_NOACCESS, той же IDA будет тяжело прочитать security cookie без определённого скрипта.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.04.2014, 02:03
Помогаю со студенческими работами здесь

Как защитить программу?
Всем привет! Народ вопрос такой:написал прогу для одной организации, но договор еще не подписали и программу я им еще не отдал, как сделать...

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

Как защитить программу от воровства?
Есть программа, как сделать так что б другой человек её не скачал и не сказал что вот вот моя программа? Для этого достаточно написать в...

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

Как защитить программу от taskkill?
Как защитить программу от taskkill? :p


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru