Re[7]: Как вы защищаете C# приложения?
От: ivanchez0077  
Дата: 13.11.15 05:23
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Здравствуйте, ivanchez0077, Вы писали:


I>>Пропатчить C# исходники ведь элементарно, значит элементарно отключить эту проверку. И эту проверку, повторюсь, на сервер не вынесешь, все равно строчку "if (ключ не куплен)" нужно будет держать в программе по-любому.


DM>Например, объединить проверку с инициализацией каких-то важных данных, без которых все падает. Убрали или не прошли проверку — прога не работает. У меня так.


не пойму, как? как ни крути при любом раскладе всегда в коде будет что-то вроде if (лицензия_куплена) ....
вот эту строчку можно либо удалить, либо заменить на true
Re[8]: Как вы защищаете C# приложения?
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 13.11.15 06:36
Оценка: 1 (1)
Здравствуйте, ivanchez0077, Вы писали:

I>не пойму, как? как ни крути при любом раскладе всегда в коде будет что-то вроде if (лицензия_куплена) ....

I>вот эту строчку можно либо удалить, либо заменить на true

Сам код проверки должен быть максимально запутан. Тогда получается что-то вроде:
int thisShouldBeOne = 0;

bool CheckCodeAndSetThatVarToOne(string code) {
  ... // something well obfuscated
}

if (CheckCodeAndSetThatVarToOne(code))
  MessageBox("welcome!");
else
  MessageBox("Fuck off");

someValue = otherThing / thisShouldBeOne;

Form[] windows = {badWindow, goodWindow};
windows[thisShouldBeOne].Show();


Если убрать этот if или изменить CheckCodeAndSetThatVarToOne() на return true, то все равно программа не заработает.
Re[6]: Как вы защищаете C# приложения?
От: TheByteMan Россия  
Дата: 13.11.15 10:08
Оценка:
Здравствуйте, ivanchez0077, Вы писали:

I>Здравствуйте, TheByteMan, Вы писали:



TBM>>А что еще нужно для правки MSIL кода? Достать сборку, удалить мертвые(недостижимые) блоки инструкций если есть, закинуть в рефлектор — найти что нужно, подправить MSIL, собрать и вуаля. Взлом NET-а до ужаса примитивен, по крайне мере в большинстве случаев, в подавляющем большинстве случаев.


I>ну тогда как проверять, куплен у моей проги ключ пользователем или нет? Все равно в любом случае где-то в самой программе мне нужна будет строчка:


I>if (ключ не куплен)

I> message Купи ключ
I>else
I> // работаем....


I>Пропатчить C# исходники ведь элементарно, значит элементарно отключить эту проверку. И эту проверку, повторюсь, на сервер не вынесешь, все равно строчку "if (ключ не куплен)" нужно будет держать в программе по-любому.


Я выше написал приблизительно, что вы можете сделать. Есть множества способов, как можно усложнить или затруднить реверсинг программы на C#, от динамической кодо-генерации с помощью Reflection.Emit(CodeDom,Expression trees) до создания своей виртуальной машины поверх стандартной CLR, все зависит от вашей фантазии и желания потратить на это время.
Re: Как вы защищаете C# приложения?
От: NetDeveloper  
Дата: 13.11.15 11:14
Оценка:
I>Раз проги на C++ ломают на 1-2, то на C#, наверное, тем более? Как вы защищаете свои C# приложения?

Я защищаю ILProtector. Это не обфускатор, а именно протектор. Из плюсов — есть бесплатная версия на 30 дней.
Re[9]: Как вы защищаете C# приложения?
От: uuuser  
Дата: 13.11.15 21:15
Оценка: +2
Здравствуйте, D. Mon, Вы писали:

I>>не пойму, как? как ни крути при любом раскладе всегда в коде будет что-то вроде if (лицензия_куплена) ....

I>>вот эту строчку можно либо удалить, либо заменить на true

DM>Сам код проверки должен быть максимально запутан. Тогда получается что-то вроде:

DM>Если убрать этот if или изменить CheckCodeAndSetThatVarToOne() на return true, то все равно программа не заработает.

несколько лет назад у меня была проверка кода размазана по всей программе в несколько этапов, в разных режимах работы программы, ключ из нескольких сегментов, итд, в итоге кто-то упорный всё это выкопал и написал кейген...
С++/winapi

поэтому не тратьте время, кряк/патч это не кейген, вы этих людей всё равно не монетизируйте.
Re[2]: Как вы защищаете C# приложения?
От: consign  
Дата: 14.11.15 07:16
Оценка:
Здравствуйте, dsorokin, Вы писали:

D>Да вроде бы вполне неплох бесплатный DotFuscator Community Edition


Худший из бесплатных.
Re[10]: Как вы защищаете C# приложения?
От: consign  
Дата: 14.11.15 07:18
Оценка:
Здравствуйте, uuuser, Вы писали:

U>поэтому не тратьте время, кряк/патч это не кейген, вы этих людей всё равно не монетизируйте.


Профи сломают любую защиту, но профи очень мало.
Цель защиты — отбить желание у скрипт киддис и клонеров.
Re[10]: Как вы защищаете C# приложения?
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 14.11.15 16:18
Оценка: :)
Здравствуйте, uuuser, Вы писали:

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

U>С++/winapi

U>поэтому не тратьте время, кряк/патч это не кейген, вы этих людей всё равно не монетизируйте.


А к моим продуктам ни одного кейгена за 9 лет не появилось. Может, не зря интересно потратил время?
Re[11]: Как вы защищаете C# приложения?
От: TheByteMan Россия  
Дата: 14.11.15 16:50
Оценка: :)
Здравствуйте, D. Mon, Вы писали:

DM>Здравствуйте, uuuser, Вы писали:

DM>А к моим продуктам ни одного кейгена за 9 лет не появилось. Может, не зря интересно потратил время?

Кейген не показатель — используйте стойкое асимметричное шифрования, с ключами в 4096 bit, и никаких кейгенов вы не увидите, в отличие от пропатченых версий программы.
Отредактировано 14.11.2015 17:07 TheByteMan . Предыдущая версия . Еще …
Отредактировано 14.11.2015 16:53 TheByteMan . Предыдущая версия .
Re[3]: Как вы защищаете C# приложения?
От: dsorokin Россия  
Дата: 15.11.15 04:08
Оценка:
Здравствуйте, consign, Вы писали:

C>Здравствуйте, dsorokin, Вы писали:


D>>Да вроде бы вполне неплох бесплатный DotFuscator Community Edition


C>Худший из бесплатных.


По какому критерию?
Re[9]: Как вы защищаете C# приложения?
От: ivanchez0077  
Дата: 15.11.15 07:08
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Если убрать этот if или изменить CheckCodeAndSetThatVarToOne() на return true, то все равно программа не заработает.


тогда можно просто установить thisShouldBeOne = 1, и все. проверка на то, куплен ли ключ, так и остается в программе. все зиждется на обфускации.
вот как бы эту проверку вынести куда-нибудь из программы куда-нибудь вообще полностью? даже если вынести на сервер, то в программе будет функции проверка ответа с сервера -- куплен ли ключ, которую можно изменить на true. приходим к тому же.
Re[12]: Как вы защищаете C# приложения?
От: ivanchez0077  
Дата: 15.11.15 07:10
Оценка:
Здравствуйте, TheByteMan, Вы писали:


DM>>Здравствуйте, uuuser, Вы писали:

DM>>А к моим продуктам ни одного кейгена за 9 лет не появилось. Может, не зря интересно потратил время?

TBM>Кейген не показатель — используйте стойкое асимметричное шифрования, с ключами в 4096 bit, и никаких кейгенов вы не увидите, в отличие от пропатченых версий программы.


не понял, в чем отличие, кейген и патч? оба в итоге дают одно и то же — вашей программой будут пользоваться за бесплатно.
Re[4]: Как вы защищаете C# приложения?
От: consign  
Дата: 15.11.15 07:16
Оценка:
Здравствуйте, dsorokin, Вы писали:

D>По какому критерию?


По всем.
Re[13]: Как вы защищаете C# приложения?
От: TheByteMan Россия  
Дата: 15.11.15 11:40
Оценка:
Здравствуйте, ivanchez0077, Вы писали:

I>Здравствуйте, TheByteMan, Вы писали:



I>не понял, в чем отличие, кейген и патч? оба в итоге дают одно и то же — вашей программой будут пользоваться за бесплатно.


Патч никак не задевает или не доставит неудобств существующим пользователям, кейген же как раз приносит неудобствам им — придется менять алгоритм генерации ключа, и просить их сменить его.
Re[10]: Как вы защищаете C# приложения?
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 15.11.15 12:47
Оценка:
Здравствуйте, ivanchez0077, Вы писали:

I>тогда можно просто установить thisShouldBeOne = 1, и все. проверка на то, куплен ли ключ, так и остается в программе. все зиждется на обфускации.


Да, все верно, зижется. Именно поэтому важно иметь хорошую. А стопроцентной защиты все равно не будет, вопрос лишь в том, чтобы затраты усилий на взлом оказались выше, чем крякеры готовы потратить.
Re[13]: Как вы защищаете C# приложения?
От: uuuser  
Дата: 15.11.15 15:14
Оценка:
Здравствуйте, ivanchez0077, Вы писали:

I>не понял, в чем отличие, кейген и патч? оба в итоге дают одно и то же — вашей программой будут пользоваться за бесплатно.


1. с торрента/файлобменника скачивается инсталлятор с неподписанным патчем который надо скопировать в директорию с программой не смотря на все предупреждения UAC
2. программа скачивается с офф.сайта, ключи находятся гуглом

1 — не ваш клиент
2 — вероятный ваш клиент
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.