, т.к. хотелось бы обсудить не что-то абстрактное, а именно зашиту под NET. Ко мне как-то обратился человек, и сказал, что взломал мою программу за 10 минут. Я удивился, стал сам разбираться. И вправду, поколдовав полтора часа, я понял как это просто (ildasm -> notepad -> ilasm).
Такое явно не годится. Нашёл в инете netObf, бесплатную версию обфускатора. Упаковал прогу. Ничего непонятно в ildasm. Нашёл в инете деобфускатор, который приводит имена в более читаемые. Прогнал через деобфускатор. Далее notepad -> ilasm. И прога опять сломана.
Сделал программу более запутанной, часть алгоритмов стал шифровать внутри программы через динамические сборки, сделал привязку к серверу (сайту). Т.к. я знал, что делать, я опять быстренько всё отломал. У неподготовленного крякера это выйдет чуть дольше.
Какие еще есть варианты? Или может я что-то упустил?
Заранее спасибо за любые советы.
Здравствуйте, Огнеплюх, Вы писали:
О>А чем это вариант отличается от старинного exe->asm->notepad->exe ?
нельзя просто так сделать "exe->asm->notepad->exe", хотя бы за счёт "stolen bytes" (украденных инструкций), которые виртуализируются. Нужно потратить немало времени, чтобы распаковать такой exe. А тут в C# полностью исходный код на руках.
AN>Какие еще есть варианты? Или может я что-то упустил?
если хочется надежности, то вариант, по большому счету, один: переписывай какой-то важный кусок программы в натив, выноси в отдельную длл-ку и защищай нативным протектором.
а под дотнет обычно дальше обфускации не идут, а это, как ты сам понял, не спасает.
Здравствуйте, Sheridan, Вы писали:
S>Приветствую, Alexey Neorov, вы писали:
AN>> Какие еще есть варианты? Или может я что-то упустил? AN>> Заранее спасибо за любые советы.
S>Открыть исходники, опубликовать под gpl. Взлом станет бессмысленным.
Равно, как и разработка подобного OpenSource GPL продукта.
Здравствуйте, Alexey Neorov, Вы писали:
AN>Какие еще есть варианты? Или может я что-то упустил?
Ничего не упустил. Нужно чтобы кода было много. И добавить еще больше, пусть используемого на 90%, но без него нельзя. По всему коду втыкиваются защитные фишки. Все разные. С разной логикой. Должны выбрасывать исключение по хитрой логике, не всегда.
Таких фишек в одном проекте должно быть штук 150. Желательно разныех. Итого, после первых 20-50 штук у взломщика пропадет кайф их искать, нафиг нужно. У меня подобное было.
Здравствуйте, Alexey Neorov, Вы писали:
AN>Заранее спасибо за любые советы.
Нативный язык тоже не гарантия от взлома. Тут скорее помогут эзотерические языки программирования. Например Malbolge
Про виртуальную машину хороший человек уже все разжевал тут.
Удачи!
Здравствуйте, Alexey Neorov, Вы писали:
AN>Здравствуйте, Огнеплюх, Вы писали:
О>>А чем это вариант отличается от старинного exe->asm->notepad->exe ?
AN>нельзя просто так сделать "exe->asm->notepad->exe", хотя бы за счёт "stolen bytes" (украденных инструкций), которые виртуализируются. Нужно потратить немало времени, чтобы распаковать такой exe. А тут в C# полностью исходный код на руках.
А что мешает сборку обернуть в exe-файл да еще и с шифрованием
Здравствуйте, A-bracket, Вы писали:
AB>Здесь на форуме утверждалось что mono может компилировать .net приложение в нативный код. AB>Но я это не проверял. ( http://www.mono-project.com/AOT )
Где-то проскакивала инфа (подтвердить как-то не могу), что нэтивное делается под конкретную систему, и на другом компе просто не запустится.
AN>Какие еще есть варианты? Или может я что-то упустил? AN>Заранее спасибо за любые советы.
1. сколько не запутывай, это усложнит кряк на пару часов, не более.
2. чтобы не было ildasm->ilasm кури control-flow obfuscation в обфускаторах.
3. хочешь все в одном флаконе за денги — юзай платные обфускаторы xenocode, smart assembly. Дорого? Остальные, как правило, УГ.
4. хочешь прокачать скилы (читай: поиметь гемор) в этом деле и сам все контролировать — делай виртуальную машину. Сам хочу, но пока под .НЕТ не видел.
5. переходи на нейтив.