Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/40: Рейтинг темы: голосов - 40, средняя оценка - 4.55
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173

Методики защиты c# кода кроме обфускации?

12.11.2013, 16:04. Показов 8105. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Подскажите, какие есть еще методики защиты кода c# кроме использования обфускаторов и коммерческих протекторов?

В частности, интересует возможность хранения паролей внутри кода.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.11.2013, 16:04
Ответы с готовыми решениями:

Программа для обфускации кода
Подскажите бесплатнуй программу/онлайн-сервис для обфускации кода С/С++.

Функции защиты кода в Php
Привет! Столкнулся у себя с такой проблемой. Сделал комментарии на сайте, однако поставленная мной защита против кода Html $author =...

Способы защиты кода от декомпиляции
Собственно, какие способы защиты от декомпиляции C# кода :scratch: Кроме обфускации? Если кому не сложно, ссылку киньте в лс :) ...

40
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
14.11.2013, 00:48
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Psilon Посмотреть сообщение
на .Net не получится ничего защитить.
распакуете прогу, накрытую ILProtector?
Цитата Сообщение от Psilon Посмотреть сообщение
Что можно сделать: проверятор на неуправляемом языке
тоесть вы хотите сказать, что на неуправляемом языке сложно программу сломать?

Не по теме:

Ну его нафиг этот обфускатор :p Зашифровал все, что можно, в том числе и строки - программа падала в самых неожиданных местах, причем может работать часа 2-5 нормально, а потом бац... :( Пришлось отказаться от шифровки строк, и вручную некоторые строки заштфровать :)



Попробуйте ILProtector
0
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
14.11.2013, 07:48  [ТС]
Ilprotector ломается de4dot, сам пробовал. Поэтому дополнительно нужно применять обфускатор и прибегать к разным другим ухищрениям.

Добавлено через 7 минут
Еще такой прикол расскажу. Нужно применять много разных уровней защиты. Возможно, это будут простые методы, но в комбинации потом очень сложно все распутать. Да и лень. Обычно как бывает - программа не запускается, хакер ищет место блокировки, снимает ее, пробует - все работает, и на этом успокаивается. А нужно делать так, чтобы ошибка проявлялась не моментально (это позволяет понять, где блок проверки в коде), а использовать ленивые ошибки, которые всплывают в последний момент.

Так вот, есть у меня достаточно популярная программка. Один чудик ее взломал и начал предлагать другим коллегам по дешевке. Те купили, а через месяц она перестала работать. Он еще раз разослал предложение по программе, сказал, что устранил все проблемы (прикол в том, что даже мне предложил купить собственную программу). Прошло еще какое-то время - другая защита сработала, о которой он раньше и не подозревал. Пользователи устали от таких обманов и начали ко мне напрямую обращаться за лицензионной версией.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
14.11.2013, 10:28
Suppir, еще есть такая фишка, как водяные знаки. Чтобы знать, откуда утекло приложение. Это уже для выяснения личностей, ну и возможность предпринять ответные действия - вплоть до суда

http://habrahabr.ru/post/193666/
0
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
14.11.2013, 13:43  [ТС]
Suppir, еще есть такая фишка, как водяные знаки

Да, я пользуюсь. В свойствах файлов дописываю информацию.

Добавлено через 6 минут
И еще одна штука есть интересная (мне кажется, что я сам придумал, но возможно, кто-то еще применял).

В общем, у меня много программ написано, некоторые пользователи запускают и работают с 2 - 3 программами одновременно. Я поставил проверку по таймеру в каждой программе, чтобы она проверяла процессы и активные в данный момент окна. Если увидела "знакомую" программу (из моего набора), то проверяла exe-шник и лицензию на целостность. Если видит, что лицензия чужая или хакнутая, то ломает эту лицензию, подменяя в ней знаки - на вид она остается точно такой же, но уже не работает Короче, программы проверяют друг друга. Таким образом, хакеру придется или все программы ломать, или все-таки переходить на лицензию.
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
14.11.2013, 14:33
Suppir, хотелось бы посмотреть на этот взлом)
насчет проверок - это понятно, чем их больше - тем лучше

Добавлено через 5 минут
Цитата Сообщение от Suppir Посмотреть сообщение
Те купили, а через месяц она перестала работать.
а сдесь можно подробнее? У вас проверка лицензии идет через инет?
0
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
14.11.2013, 14:59  [ТС]
Демо-версия была с ограничением на месяц. Также есть проверки через инет. Но у многих пользователей нет интернета, поэтому проверка срабатывает не принудительно жестко, а "при возможности" выйти в интернет.
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
14.11.2013, 17:11
Suppir, хотелось бы глянуть, правда опыта с NET у меня нет пока
А чем защищали? Обычного обфускатора не достаточно... без Ilprotector не обошлось?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.11.2013, 17:21
Цитата Сообщение от Suppir Посмотреть сообщение
Добрый день. Подскажите, какие есть еще методики защиты кода c# кроме использования обфускаторов и коммерческих протекторов?
Все обфускаторы на самом деле недо, после компиляции в натив от имён не остаётся вообще ничего и даже операции оказываются записаны так, что сам автор не разберёт.
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
14.11.2013, 17:52
taras atavin, есть деобфускаторы, которые переводят все это в читаемый вид
0
 Аватар для Saintfreebrain
17 / 14 / 5
Регистрация: 14.11.2013
Сообщений: 65
18.11.2013, 12:21
Цитата Сообщение от Suppir Посмотреть сообщение
В частности, интересует возможность хранения паролей внутри кода.
четвертый параграф
0
MЫW
 Аватар для phantom96
124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538
18.11.2013, 12:26
Цитата Сообщение от Saintfreebrain Посмотреть сообщение

Не по теме:

А как тогда жить? Вот допустим мне нужно к фтп доступ иметь. Поднимать отдельный сервер который будет от меня файлики на фтп ложить? А если нет возможности, а надо?

0
 Аватар для Saintfreebrain
17 / 14 / 5
Регистрация: 14.11.2013
Сообщений: 65
18.11.2013, 12:44
Цитата Сообщение от Dexa Посмотреть сообщение
Можно как вариант написать либу на плюсах и в ней сташный и сложный метод для дишифровки ключа.
Мне кажется что это защита от дурака, или даже защита от случайного запуска. С таким подходом можно дикнмпилировать шарповскую прогу, найти строки где либа импортируется и накатать аналог, только аналог выводящий все действия на экран. В лудьшем случае такую защиту обойдут со второй попытки, но скорей всего с первой. Если речь зашла о низкоуровневом программировании то тогда уж предложили бы Вы лудьше свой протектор написать и в нем сташный и сложный метод шифрования.

Добавлено через 8 минут

Не по теме:


Цитата Сообщение от phantom96 Посмотреть сообщение

Не по теме:

А как тогда жить? Вот допустим мне нужно к фтп доступ иметь. Поднимать отдельный сервер который будет от меня файлики на фтп ложить? А если нет возможности, а надо?

C#
1
2
3
TextBox login = new TextBox();
TextBox server = new TextBox();
PasswordBox pass = new PasswordBox(); // дальше проверку

0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.11.2013, 12:59
Если прога запускается, значит расшифровывается, а раз она расшифровывается, значит декодирующий ключ или известен юзверю, или включён в саму прогу, так что это вообще не защита. Обязательное условие всякой секретности - весь код в нативе. И то это только базовый уровень, для хорошей защиты надо выносить важные части программы, причём, не ключечекеры, а реализующие функционал, в отдельное устройство, память которой или полностью закрыта от чтения извне, или защищена паролем, проверяемым самим устройством под своей прогой. Причём, для исполнения основной проги этот пароль не должен требоваться.

Добавлено через 5 минут
А все ваши "протекторы" страдают тем, что прога перестанет запускаться раньше, чем шифр станет хоть каким то препятствием даже для начинающего хакера, впервые пробующего на ней свои силы. Знаю по собственному опыту взлома, мой статус "недохакер" писан не от балды. Ни каких других защит я ломать не умею, а эти ни когда даже не замечал.
0
 Аватар для Dexa
79 / 79 / 11
Регистрация: 29.08.2013
Сообщений: 263
18.11.2013, 14:22
Цитата Сообщение от Saintfreebrain Посмотреть сообщение
накатать аналог, только аналог выводящий все действия на экран.
Хотите я предоставлю пример программу на си шарп использующию длл на c++, но если Вы попробуете запустить эту dll с другой программой, оно не будет работать?
разумеется что это тоже защита от дурака, только уже от продвинутого дурака, но можно и усложнить процесс, все ресурсы хранить в этой dll, котороя работает только в связке с своей программой, плюс там же и несколько методов.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.11.2013, 14:24
dll не могут поставлять классы, а значит и методы. И уж ни как не могут работать только в связке с определённой приладой.
0
 Аватар для Dexa
79 / 79 / 11
Регистрация: 29.08.2013
Сообщений: 263
18.11.2013, 15:08
Цитата Сообщение от taras atavin Посмотреть сообщение
И уж ни как не могут работать только в связке с определённой приладой.
А почему бы и нет? Пишим функцию, на плюсах разумеется, которая извлекает путь к приложению и сравнивает контрольную сумму этой проги с той суммой которая была указана при написании самой библиотеки. Тоесть надо сначала написать прогу, затем чекнуть ее МД5 например или CRC ,не важно и результат прописать в дллке. Приложение запускается и GetModuleFileName() , в оуте принимаем путь к проге, этот файл и сверяем с контрольной службой. Все. Дальше если сумма не верна завершаем приложение, а если верна то возвращаем все что хотим. Вопрос, сколько уйдет время для написаня аналога с такойже КС?
0
 Аватар для Saintfreebrain
17 / 14 / 5
Регистрация: 14.11.2013
Сообщений: 65
18.11.2013, 16:37
Цитата Сообщение от Dexa Посмотреть сообщение
Пишим функцию, на плюсах разумеется, которая извлекает путь к приложению и сравнивает контрольную сумму этой проги с той суммой которая была указана при написании самой библиотеки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <windows.h>
#include <sha.h>
#include <iostream>
 
BOOL checkSumm() {
 TCHAR appPath[MAX_PATH];
 if( !GetModuleFileName( NULL, appPath, MAX_PATH ) )
 {
Application::Exit();
return FALSE;
 
 }
SHA256 sha;
while(!f.eof() )
 {
    char buff[4096];
    int numchars = f.read(appPath);
    sha.Update(buff, numchars);
}
 char hash[size];
sha.Final(hash);
if(hash == "bla-bla-bla")
 {
   return TRUE;
 }
 else
 {
Application::Exit();
return FALSE;
 }
Как это проверить в шарпе с дллипорт?
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
18.11.2013, 18:29
Цитата Сообщение от taras atavin Посмотреть сообщение
dll не могут поставлять классы
значит небезопасный код с указателями и врапперы это выдумки? Чорт.
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
19.11.2013, 15:19
Цитата Сообщение от taras atavin Посмотреть сообщение
Если прога запускается, значит расшифровывается, а раз она расшифровывается, значит декодирующий ключ или известен юзверю, или включён в саму прогу, так что это вообще не защита.
и
Цитата Сообщение от taras atavin Посмотреть сообщение
Обязательное условие всякой секретности - весь код в нативе.

тоесть - если код нативный - то он не расшифровывается?
Или для вас ассемблерный код - это зашифрованный код?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
19.11.2013, 16:17
Цитата Сообщение от Winhttp22 Посмотреть сообщение
тоесть - если код нативный - то он не расшифровывается?
Расшифровывается. Но с потерей всех имён и переиначиванием высокоуровневых операций со всеми не скалярами на эквивалентные операции с отдельными членами (вместо умножения комплексных чисел операции с их действительнымти и мнимыми частями), что уже само по себе повышает сложность кода. + необходимость продираться через алгоритмы сложения с переносом, вычитания с займом, умножения "столбиком", деления и т.д. при разрядности даже целых выше разрядности регистра. А если ещё применён аппаратно не поддерживаемый формат с плавающей запятой, то придётся продираться и через формат. Да и сложность самого асма всё таки выше. Всё это приводит к тому, что до некоторого уровня сложности задачи проще с ноля написать свой аналог нативной проги, чем расшифровать готовое. Но в принципе можно. Это базовый уровень. По-настоящему хорошая защита - это контроль чтения долговременной памяти с важными частями программы протектором, исполняемым в отдельном устройстве (USB-ключе), эти же части содержащим и функционирующем помимо операционной системы.

Добавлено через 55 секунд
Цитата Сообщение от Winhttp22 Посмотреть сообщение
Или для вас ассемблерный код - это зашифрованный код?
Я читал и именно шифрованные опкоды и ассемблерные коды. Из-за необходимости расшифровки для исполнения каждая выдаваемая дизассемблером команда выдавалась в расшифрованном самой прогой виде, в результате шифр не даёт вообще ничего. А ещё читал нафаршированные всякой фигнёй байткоды в редакторе диска. Если открыть такой байткод в интерпретаторе на редактирование, он превращался мало того, что в шифр, так ещё и чего то абсолютно "левого". Но для меня он не имел значения. Только так я и взламывал защиты. И только такие.

Добавлено через 1 минуту
Я учился программированию, взламывая такие защиты. Фигню в байткодах я вообще не замечал, а с нативом в любом случае приходилось повозиться.

Добавлено через 2 минуты
Но то, что вскрывается в процессе самообучения даже не кряку, а программированию, это очень плохая защита. То, что при взломе не замечается, - вообще не защита.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2013, 16:17

Способы защиты кода от декомпиляции
Кто что знает толкового об этом кроме обфускации? Спасибо.

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

Необычные способы защиты кода приложений на c#
Добрый день! Какие необычные способы защиты приложений вы видели или вам приходили в голову? :)

Программы и средства для защиты программного кода
Доброго времени суток, уважаемые форумчане! работаю в небольшой компании по разработке ПО, раньше никакой защиты в принципе не было…....

Методы защиты данных от записи во время выполнения участка кода?
День добрый, форумчане. Вводные данные: - Весь свой код строю на работе с указателями. - Потоки пока не использую - Linux, gcc...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru