Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/32: Рейтинг темы: голосов - 32, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 14.02.2013
Сообщений: 16

Автоматическое шифрование кода формы C#

14.02.2013, 15:46. Показов 6247. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста. Пишу проект на C# с использованием формы Windows Form и сохранением настроек в Xml-файле. Работать прога должна будет на чужом сервере. Стоит задача сокрытия кода самой программы от чужака - вопрос, как правильно это делается? Причем очень важно, чтобы шифрование никак не отражалось на быстродействии программы. Сильно прошу не пинать, ибо делаю только первые шаги. Может быть средств автоматического шифрования при формировании исполняемого файла .exe вполне достаточно и его не прочитают? Как сделать правильнее?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.02.2013, 15:46
Ответы с готовыми решениями:

Автоматическое срабатывание кода после отображения формы
Я запускаю первую форму и нажимаю кнопку со следующим кодом: private void Start_Click(object sender, EventArgs e) ...

Автоматическое структурирование кода
Я имею ввиду, когда выделяешь кусочек, а она его красиво оформляет?

Автоматическое форматирование кода
Подскажите, пожалуйста, горячую клавишу, которая сортирует код. К примеру, из такого { { { { //----- } } }

35
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
14.02.2013, 18:59
Студворк — интернет-сервис помощи студентам
Winhttp, согласен с вами. ТС, если программа действительно стоящая - не поскупитесь на платную защиту, возможно проект со временем окупит эти траты.
0
0 / 0 / 0
Регистрация: 14.02.2013
Сообщений: 16
14.02.2013, 19:14  [ТС]
ну хорошо, не в языке, а в приложении, компиляторе - смысл вопроса тот же - при компиляции можно зашифровать исполняемый файл не прибегая к сторонним программам или нет? Ясно, что сторонние обфускаторы будут тормозить при работе, хотя возможно есть такие, которые позволят частично обфусцировать лишь тот участок кода, который не влияет на быстродействие.
0
62 / 62 / 5
Регистрация: 05.01.2013
Сообщений: 235
14.02.2013, 19:40
при компиляции можно зашифровать исполняемый файл не прибегая к сторонним программам или нет? Ясно, что сторонние обфускаторы будут тормозить при работе
компилирование и обфускация - это разные вещи. ну ладно, предположим что они как то вместе работают - компилятор компилирует и шифрует код. вы думаете, что если шифровщик будет встроенным - то это не скажется на производительности? вы наверное не совсем понимаете процесс шифрования чтоли.
да и интересно, что у вас там за программа такая. вы наверное думаете, что если зашифруете код, то приложение будет по пол минуты запускаться?
0
0 / 0 / 0
Регистрация: 14.02.2013
Сообщений: 16
14.02.2013, 20:00  [ТС]
вопрос ведь простой задал - есть встроенный шифровальщик или его нет? Конкретно никто не ответил!
если он есть, то буду пробовать его, если нет, то буду пробовать другой. Чего в дебри лезть раньше времени? Что создал человек, то человек сможет разобрать - вопрос времени. Так вот, я и пытаюсь определиться куда лезть в глобальном масштабе. А так как опыта у меня нету, то и спрашиваю у тех, кто его имеет. Нет встроенного - буду искать сторонний, если сторонний не усторит - куплю другой сторонний, который устроит, но при всем при этом скорость программы терять не хочу. Вот и мучаюсь с принятием окончательного решения. Ведь без опыта тут не попрешь - запросто можно задорого купить худший вариант как и задешево лучший, а оценить это могут лишь гуру программирования.
0
28 / 28 / 6
Регистрация: 25.12.2008
Сообщений: 186
14.02.2013, 20:09
Цитата Сообщение от Alexsmol Посмотреть сообщение
вопрос ведь простой задал - есть встроенный шифровальщик или его нет? Конкретно никто не ответил!
если он есть, то буду пробовать его, если нет, то буду пробовать другой. Чего в дебри лезть раньше времени? Что создал человек, то человек сможет разобрать - вопрос времени. Так вот, я и пытаюсь определиться куда лезть в глобальном масштабе. А так как опыта у меня нету, то и спрашиваю у тех, кто его имеет. Нет встроенного - буду искать сторонний, если сторонний не усторит - куплю другой сторонний, который устроит, но при всем при этом скорость программы терять не хочу. Вот и мучаюсь с принятием окончательного решения. Ведь без опыта тут не попрешь - запросто можно задорого купить худший вариант как и задешево лучший, а оценить это могут лишь гуру программирования.
Ни в одном языке нету "встроенного" шифровальщика...
0
0 / 0 / 0
Регистрация: 14.02.2013
Сообщений: 16
14.02.2013, 20:32  [ТС]
Коротко и по существу. Спасибо за конкретный ответ. А сам иполняемый файл ехе никак не шифруется, а лишь переведен в язык машинных кодов? (не пинайте за лузерский язык)
0
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
14.02.2013, 20:45
Вообще можно написать отдельный фрагмент программы, который и будет шифровать содержимое. А во время запуска *.exe динамически расшифровывать и выполнять. Только вот сам шифровальный компонент будет в открытом виде.
0
62 / 62 / 5
Регистрация: 05.01.2013
Сообщений: 235
14.02.2013, 22:12
вроде в вижуал студии есть де/обфускатор, который идет с ней. который обфусцирует и деобфусцирует код? защита конечно никакая.
на хабре статья есть об обзоре обфускаторов - http://habrahabr.ru/post/97062/
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
14.02.2013, 22:52
Цитата Сообщение от Alexsmol Посмотреть сообщение
Коротко и по существу. Спасибо за конкретный ответ. А сам иполняемый файл ехе никак не шифруется, а лишь переведен в язык машинных кодов? (не пинайте за лузерский язык)
Любой код компилируется в ассемблер. Пролбема в том, что кроме ассемблера в C# (и Java) таскается байт-код - намного более высокоуровневый, чем обычный ассемблер (ассемблер виртуальной машины, если быть точным), за счет чего возможна полная декомпиляция. Но могу обрадовать: при декомпиляции устрачиваются имена переменных, поэтому если код сложный, то хрен кто разберется в записях
C#
1
double num25 = num18*num6/num5*str41.Length + Math.Sqrt(num19*Math.Exp(num21);
0
62 / 62 / 5
Регистрация: 05.01.2013
Сообщений: 235
14.02.2013, 23:38
Провел тест написана была консольная программа сортировки методом пузырька, исходник -
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System; 
using System.Diagnostics;
 
namespace ConsoleApplication6 
{ 
public class PleaseSayHelloMan 
{ 
    static void Main(string[] args) { 
        long[] result=new long[11];
        long summa=0;
        Stopwatch timer = new Stopwatch();
        for (int i = 1; i < 11; i++) {
            timer.Restart();
            sort();
            timer.Stop();
            result[i]=timer.ElapsedMilliseconds;
            summa+=result[i];
            Console.WriteLine("{0} тест = {1} mс.",i,result[i]);
        }
        Console.WriteLine("Среднее время выполнения - {0}   мс.",summa/10);
        Console.ReadKey();
 
    }
    
    static void sort()
    {
        Random rand=new Random();
            int i, j, size=20000;
            int[] mas = new int[size];
 
            for (i = 0; i < size; i++)
            {
                mas[i] = rand.Next(1,5000);
            }
            for (i = 0; i < size - 1; i++)
            {
                for (j = i + 1; j < size; j++)
                {
                    if (mas[i] > mas[j])
                    {
                        int temp = mas[i];
                        mas[i] = mas[j];
                        mas[j] = temp;
                    }
                }
            }
 
        }
 
 
} 
}
результаты - отличий практически вообще никаких. это можете видеть по скринам, которые прилагаю.
1 скрин - "чистое" приложение.
2 скрин - накрыто протектором.
3 скрин - протектор + обфускатор.
конечно это все бред - мой обфускатор не добавляет каких то туеву кучу методов... но все же. какая то разница в 1-2 мс - это имеет большую разницу? мне интересно, какое вы там приложение пишете.
Миниатюры
Автоматическое шифрование кода формы C#   Автоматическое шифрование кода формы C#   Автоматическое шифрование кода формы C#  

0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
14.02.2013, 23:42
Забавно, что декомпилятор пишет код более понятный, чем вы сами:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Type: ConsoleApplication24.PleaseSayHelloMan
// Assembly: ConsoleApplication24, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// Assembly location: D:\Projects\ConsoleApplication24\ConsoleApplication24\bin\Debug\ConsoleApplication24.exe
 
using System;
using System.Diagnostics;
 
namespace ConsoleApplication24
{
  public class PleaseSayHelloMan
  {
    private static void Main(string[] args)
    {
      long[] numArray = new long[11];
      long num = 0L;
      Stopwatch stopwatch = new Stopwatch();
      for (int index = 1; index < 11; ++index)
      {
        stopwatch.Restart();
        PleaseSayHelloMan.sort();
        stopwatch.Stop();
        numArray[index] = stopwatch.ElapsedMilliseconds;
        num += numArray[index];
        Console.WriteLine("{0} тест = {1} mс.", (object) index, (object) numArray[index]);
      }
      Console.WriteLine("Среднее время выполнения - {0}   мс.", (object) (num / 10L));
      Console.ReadKey();
    }
 
    private static void sort()
    {
      Random random = new Random();
      int length = 20000;
      int[] numArray = new int[length];
      for (int index = 0; index < length; ++index)
        numArray[index] = random.Next(1, 5000);
      for (int index1 = 0; index1 < length - 1; ++index1)
      {
        for (int index2 = index1 + 1; index2 < length; ++index2)
        {
          if (numArray[index1] > numArray[index2])
          {
            int num = numArray[index1];
            numArray[index1] = numArray[index2];
            numArray[index2] = num;
          }
        }
      }
    }
  }
}
0
62 / 62 / 5
Регистрация: 05.01.2013
Сообщений: 235
14.02.2013, 23:55
Psilon, некоторые так пишут, что и обфускации не надо а код сортировки был взят из инета (не чего мне делать - писать его) и переделан под программу
0
0 / 0 / 0
Регистрация: 14.02.2013
Сообщений: 16
15.02.2013, 08:42  [ТС]
Цитата Сообщение от Psilon Посмотреть сообщение
Но могу обрадовать: при декомпиляции устрачиваются имена переменных, поэтому если код сложный, то хрен кто разберется в записях
C#
1
double num25 = num18*num6/num5*str41.Length + Math.Sqrt(num19*Math.Exp(num21);
Вы хотите сказать, что это полная аналогия такому понятию, как "документация", описанному Вами в ветке "Защита от декомпилятора"? Если это на самом деле так, то и изобретать свою собственную "документацию" не надо - уже все воплощено в NET? Я правильно понял?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
15.02.2013, 18:33
Alexsmol, если у вас 2000 таких строк, хрен разберешь, что где находится. К тому же в итоге может получиться что-то в таком духе
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
namespace StrTest
{
 
    internal class ᪗
    {
 
        public ᪗()
        {
        }
 
        private static string ᪖(string ᪕)
        {
            bool flag;
 
            int i1 = ᪕.Length;
            char[] chArr = new char[i1];
            int i2 = 0;
            while (flag)
            {
                char ch = ᪕[i2];
                byte b1 = (byte)(ch ^ (i1 - i2));
                byte b2 = (byte)((ch >> 8) ^ i2);
                chArr[i2] = (ushort)((b2 << 8) | b1);
                i2++;
                flag = i2 < chArr.Length;
            }
            return System.String.Intern(new System.String(chArr));
        }
 
        public static void ᪔(string[] ᪓)
        {
            System.Net.HttpWebRequest httpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(StrTest.᪗.᪖("QŌɃ͆Џԛ؜݁ࡅॕ੎ୃ౎ൃๆཇၜᅆ቎ፒᑜᔊᙀᝍᡌᤏ᩶᭺ᰲᵅṺὴ⁰Ⅻ≳⍣⑻╱♦❴⡺⥱⩻⬡ⱪ⵭⹦⽯ぺㄷ㉳㍧㑧㔹㙢㝮㡭"));
            System.Net.WebResponse webResponse = httpWebRequest.GetResponse();
            string s = (new System.IO.StreamReader(webResponse.GetResponseStream())).ReadToEnd();
            System.Text.RegularExpressions.MatchCollection matchCollection = System.Text.RegularExpressions.Regex.Matches(s, StrTest.᪗.᪖("aĬȠ̭њԜ؇ܞࠓअਅୟౖ൛๐ཚၒᅟቔጎᐁᔄᘒᜅ᠉ᤄᨃᬗᰅᵎṊὑ⁑⅑≾⍆⑰╬♸❪⡾⥨⨻⬢ⰵ⴩⸽⼫〯ㅺ㉾㍥㑽㕽㘳㝗㡗㥮㩕㬦㱚㴬㸬㼦䀼䅞䉼"));
            System.Console.WriteLine(matchCollection.Count);
            foreach (System.Text.RegularExpressions.Match match in matchCollection)
            {
                System.Console.WriteLine(StrTest.᪗.᪖("ЅԯٛܪйԵطݭࠥ३ਲ਼ାఱढ੏଻ᐱᕃራᜲ်ᅈቌᜦᠨᤤ᩸ᬳᱼ"), match.Groups[StrTest.᪗.᪖("oŦɫ͠Ѫբٯݤ")].Value, match.Groups[StrTest.᪗.᪖("mūɶͰѲ")].Value);
            }
            System.Console.ReadKey();
        }
 
    } // class ᪗
 
}
0
0 / 0 / 0
Регистрация: 14.02.2013
Сообщений: 16
16.02.2013, 15:12  [ТС]
Цитата Сообщение от Winhttp Посмотреть сообщение
Alexsmol, это не обфускатор, а протектор. обфускатор, который я использовал - слабенький. неужели такое ценное приложение, что его будут ломать? тогда уж лучше купите платный обфускатор, защита будет намного выше, чем у бесплатных.
Простите еще раз за назойливость, вот с обфускатором вы все разжевали - берет экзешник, переименовывает переменные, добавляет мусор и выдает новый перекроенный экзешник. А каков принцип действия протектора, в частности рекомендованного Вами ILProtectora и в чем его преимущество по сравнению с рядовым обфускатором? А если еще сравнить с платным обфускатором?
0
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
16.02.2013, 15:48
да то же самое, возьмите скачайте PhoenixProtector и узнайте. то же самое делает.

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

Автоматическое форматирование кода
Здравствуйте, есть ли у кого-то готовое решение для автоматического форматирования кода. Это может быть макрос для любого текстового...

Автоматическое форматирование кода
Доброго времени суток. Загорелся я идеей сделать редактор с возможностью автоматического форматирования исходного кода для скриптового...

Шифрование кода
Пишу для деток простенькие приложения: на форме появляется картина &quot;Витязь на распутье&quot; и нужно ввести в поле ввода правильный ответ:...

Автоматическое тестирование кода на сервере
Добрый день, уважаемые форумчане. Задача такая, в БД храниться код допустим на JAVA,этот код если его скомпилировать будет читает из...

Автоматическое обновление части кода
Добрый день. Пытаюсь сделать автоматическое (через 2 секунды) обновление выполнения кода. Но видать что то не так раз не обновляет. ...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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 и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru