Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/76: Рейтинг темы: голосов - 76, средняя оценка - 4.62
Землянин
 Аватар для Pjeroo
34 / 34 / 16
Регистрация: 15.01.2013
Сообщений: 312

Защита программы от декомпилятора

01.02.2013, 19:27. Показов 15936. Ответов 99
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно ли это, если возможно, то как?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2013, 19:27
Ответы с готовыми решениями:

Выбор декомпилятора для .NET
Подскажите декомпилятор C#. Скачал JetBrains но как им пользоватся я не знаю:-|

Защита программы от НСД. Защита путем шифрования части программы на флеш-диске или флешке
Написать программу на любом известном Вам языке программирования. Программа должна выполнять функцию защиты программы от НСД. Защита...

Использование flash-декомпилятора
Мне декомпилятор Flash Decompiler Trillix после разборки swf-файла выдает несколько папок: - Buttons - Fonts - Frames - Images -...

99
62 / 62 / 5
Регистрация: 05.01.2013
Сообщений: 235
15.02.2013, 22:26
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Psilon Посмотреть сообщение

к тому же были тесты, программы на C# не медленнее, чем на C++, только жрут в среднем в полтора раза +20мб больше памяти.
линк на результаты этих сомнительных тестов? C# - безопасный код, а значит при любом обращении к массиву будет проверка на выход за границы его, и тд. + сборщик мусора... и вы считаетее, что это никак на скорости не сказывается?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
15.02.2013, 22:28
линк на результаты этих сомнительных тестов?
Выбирайте выражения

C++
http://ideone.com/23N3nB
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    int iters = 100;
    double a = 0;
    for (int q = 0; q < iters; q++)
        for (int i = 0; i < 1000000; i++)
            if (i%2 == 0) a+= sin(i); else a -= sin(i);
    cout << a;
    return 0;
}
результат: Успешно время: 5.69s память: 2680 kB возвращаемое значение: 0
C#
http://ideone.com/7TTk9l
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
 
namespace ConsoleApplication6
{
    internal class Program
    {
        private static void Main()
        {
            int iters = 100;
            double a = 0;
            for (int q = 0; q < iters; q++)
                for (int i = 0; i < 1000000; i++)
                    if (i%2 == 0) a += Math.Sin(i); else a -= Math.Sin(i);
            Console.WriteLine(a);
        }
    }
}
результат: Успешно время: 5.5s память: 33912 kB возвращаемое значение: 0
0
62 / 62 / 5
Регистрация: 05.01.2013
Сообщений: 235
15.02.2013, 22:32
Цитата Сообщение от Psilon Посмотреть сообщение
Выбирайте выражения
в смысле - выбирать? вы идите любому опытному преподавателю такое скажите.
C++
http://ideone.com/23N3nB
результат: Успешно время: 5.69s память: 2680 kB возвращаемое значение: 0
C#
http://ideone.com/7TTk9l
результат: Успешно время: 5.5s память: 33912 kB возвращаемое значение: 0
это не тесты. так, как не известно, какая нагрузка была на проце, и тд. мне нужна информация из достоверных источников
0
Темная сторона .Net
 Аватар для Noob.net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
15.02.2013, 22:35
Psilon, я надеюсь вы не забыли,что первая компиляция на шарпе занимает много времени,а все последующие уже могут тягаться)
0
62 / 62 / 5
Регистрация: 05.01.2013
Сообщений: 235
15.02.2013, 22:39
http://www.youtube.com/watch?v... mc#t=3703s
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
15.02.2013, 22:40
Winhttp,
нотариально заверенный скриншот вам не приложить? Я то могу привести цитаты того же Рихтера, но он же тоже может оказаться "недостоверным источником". В общем, nuff said


Noob.net, я-то помню. Только видимо некоторые путают шарп и джаву версии 1.4
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
15.02.2013, 23:45
Цитата Сообщение от Psilon Посмотреть сообщение
Выбирайте выражения

C++
http://ideone.com/23N3nB

C#
http://ideone.com/7TTk9l
Ну еще бы, там же оптимизации не используются. А оптимизации для плюсов критичны.
Без всяких ключей у меня ваш код отрабатывает за 4.4 секунды, с двумя флагами(-O2 и -unsafe-math-optimizations)
выдает тот же самый ответ за 3.5 секунды.
Но вообще да, шарп за счет платформо-зависимых оптимизаций в некоторых случаях может в 20 c лишним раз обгонять плюсы по скорости.
0
62 / 62 / 5
Регистрация: 05.01.2013
Сообщений: 235
15.02.2013, 23:51
Psilon, да да, мне обьязательно нотариально заверенный скрин. по другому никак
исходники:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <math.h>
#include <windows.h>
#include <conio.h>
 
using namespace std;
 
int main()
{
    cout << "C++ Programm test\n";
    DWORD tim;
    tim=timeGetTime();
    int iters = 100;
    double a = 0;
    for (int q = 0; q < iters; q++)
        for (int i = 0; i < 1000000; i++)
            if (i%2 == 0) a+= sin(i); else a -= sin(i);
    tim=timeGetTime()-tim;
    cout << "time ms : " << tim;
    getch();
    return 0;
 
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Diagnostics;
 
namespace ConsoleApplication6
{
    internal class Program
    {
        private static void Main()
        {
            Console.WriteLine("C# Programm test");
            Stopwatch tim=new Stopwatch();
            tim.Start();
            int iters = 100;
            double a = 0;
            for (int q = 0; q < iters; q++)
                for (int i = 0; i < 1000000; i++)
                    if (i%2 == 0) a += Math.Sin(i); else a -= Math.Sin(i);
            tim.Stop();
            Console.WriteLine("time ms : "+tim.ElapsedMilliseconds);
            Console.ReadKey();
        }
    }
}

результаты
Миниатюры
Защита программы от декомпилятора   Защита программы от декомпилятора  
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.02.2013, 00:09
Winhttp, вы же ответ не выводите, следовательно, ничего не вычисляется (компилятор тупо выкидывает цикл из кода).
P.S. Интеловский компилятор посчитал за 3 секунды ровно :)

Добавлено через 5 минут
P.P.S. интеловский компилятор просто распараллелил цикл(да, плюсовые компиляторы и такое умеют).
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.02.2013, 00:10
Winhttp, видимо, вы плохо читаете, я вас распишу непонятную (очевидно) фразу товарища diagonа
Цитата Сообщение от diagon Посмотреть сообщение
Но вообще да, шарп за счет платформо-зависимых оптимизаций в некоторых случаях может в 20 c лишним раз обгонять плюсы по скорости.
Кликните здесь для просмотра всего текста
Цитата Сообщение от Троельсон
Полезно также знать, что JITкомпилятор CLR оптимизирует машинный код
аналогично компилятору неуправляемого кода C++. И опять же: создание опти
мизированного кода занимает больше времени, но производительность его бу
дет гораздо выше, чем неоптимизированного.
Примечание Есть два параметра компилятора C#, влияющих на опти
мизацию кода — /optimize и /debug. В приведенной ниже таблице пока
зано их влияние на качество ILкода, созданного компилятором C#, и ма
шинного кода, сгенерированного JITкомпилятором.
Разработчики с опытом программирования на неуправляемых C/C++ наверняка
заинтересуются, как это сказывается на производительности. В конце концов,
неуправляемый код компилируется для конкретного процессора и при вызове
просто исполняется. В управляемой же среде компиляция производится в два этапа.
Сначала компилятор проходит исходный код и переводит его в IL. Но для испол
нения сам ILкод нужно перевести в машинные команды в период выполнения,
что требует дополнительной памяти и процессорного времени.
Поверьте: я сам из тех, кто программирует на C/C++, и, переходя на CLR, я до
статочно скептически рассматривал все эти дополнительные издержки. Вторая
стадия компиляции, имеющая место в период выполнения, снижает скорость и
требует дополнительной динамической памяти — с этим не поспоришь. Однако
Microsoft проделала большую работу, чтобы свести эти издержки к минимуму.
Примечание При создании неоптимизированного ILкода компилятор
C# создает в коде команды NOP (nooperation — «пустая команда») — они
нужны для поддержки функции «редактирование и продолжение выпол
нения» в процессе отладки. Также команды NOP облегчают отладку кода
за счет расстановки точек останова на управляющих командах, таких как
for, while, do, if, else, а также блоках try, catch и finally. Предполагают, что
это дополнительная возможность платформы, но лично меня эти коман
дыпустышки часто раздражали, когда при пошаговой отладке кода при
ходилось выполнять их по одной. Создавая оптимизированный код, ком
пилятор C# удаляет команды NOP.
При создании нового проекта на C# в Visual Studio отладочная вер
сия (Debug) собирается с параметрами /optimize и /debug:full, а версия
Release — с параметрами /optimize+ и /debugdbonly.
Впрочем, независимо от этих параметров при подключении отлад
чика кпроцессу, поддерживающему CLR, для облегчения отладки JIT
компилятор всегда создает неоптимизированный машинный код. Ясно,
что производительность такого кода ниже.
14 Часть I Основы CLR
Если вы тоже скептик, сами создайте приложение и проверьте его производи
тельность. Кроме того, можете взять для этих целей какоенибудь нетривиальное
приложение от Microsoft или другого разработчика. Я думаю, вас удивит, насколько
быстродействие высоко на самом деле.
Трудно поверить, но многие (включая меня) считают, что управляемые приложения могут работать производительнее неуправляемых, и тому есть масса
причин.
Взять хотя бы тот факт, что превращая ILкод в команды процессора в
период выполнения, JITкомпилятор располагает более полными сведениями о
среде выполнения, чем компилятор неуправляемого кода. Вот особенности, ко
торые позволяют управляемому коду «опередить» неуправляемый.
JITкомпилятор может обнаружить факт выполнения приложения на Pentium 4
и сгенерировать машинный код, полностью использующий все преимущества
особых команд этого процессора. Неуправляемые приложения обычно ком
пилируют в расчете на среднестатистический процессор, избегая специ
фических команд, которые заметно повышают производительность приложе
ния на новейших процессорах.
JITкомпилятор может обнаружить, что определенное выражение на конкрет
ной машине всегда равно false. Например, посмотрим на метод с таким кодом:
if (numberOfCPUs > 1) {
...
}
Здесь numberOfCPUs — число процессоров. Код указывает JITкомпилято
ру, что для машины с одним процессором не нужно генерировать никаких
машинных команд. В этом случае машинный код оптимизирован для конкрет
ной машины: он короче и выполняется быстрее.CLR может проанализировать выполнение кода и перекомпилировать ILкод в
команды процессора во время выполнения приложения. Перекомпилирован
ный код может реорганизовываться с учетом обнаруженных некорректных
прогнозов ветвления.
Это лишь малая часть аргументов в пользу того, что управляемый код будуще
го будет исполняться лучше сегодняшнего неуправляемого. Как я сказал, произ
водительность и сейчас очень неплохая для большинства приложений, а со вре
менем ситуация только улучшится.
Если ваши эксперименты покажут, что JITкомпилятор CLR не обеспечивает
нужную производительность, рекомендую воспользоваться утилитой NGen.exe,
поставляемой с .NET Framework SDK. NGen.exe компилирует весь ILкод выбран
ной сборки в машинный и сохраняет его в дисковом файле. При загрузке сборки
в период выполнения среда CLR автоматически проверяет наличие предварительно
скомпилированной версии сборки и, если она есть, загружает скомпилированный
код, так что компиляция в период выполнения не производится. Заметьте, что
NGen.exe не ориентируется на конкретную среду выполнения и генерирует код
для среднестатистической машины; по этой причине созданный утилитой код не
столь оптимизирован, как произведенный JITкомпилятором. Подробнее об
NGen.exe я расскажу далее.


Добавлено через 1 минуту
Я для вас ключевые моменты даже жирным выделил, чтоб не утруждались лишний раз чтением документации
1
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
16.02.2013, 15:22
Цитата Сообщение от Psilon Посмотреть сообщение
Winhttp, видимо, вы плохо читаете, я вас распишу непонятную (очевидно) фразу товарища diagonа



Добавлено через 1 минуту
Я для вас ключевые моменты даже жирным выделил, чтоб не утруждались лишний раз чтением документации
и что? я вам сейчас урывок из книги Шилдта приведу -
Кликните здесь для просмотра всего текста
Связь С++ с языками Java и С#
Помимо С++, существуют два других современных языка проіраммирования: Java и С#. Язык Java разработан компанией Sun Microsystems, а С# — компанией Microsoft. Поскольку иногда возникает путаница относительно того, какое отношение эти два языка имеют к С++, попробуем внести ясность в этот вопрос.
С++ является родительским языком для Java и С#. И хотя разработчики Java и С# добавили к первоисточнику, удалили из него или модифицировали различные средства, в целом синтаксис этих трех языков практически идентичен. Более того, объектная модель, используемая С++, подобна объектным моделям языков Java и С#. Наконец, очень сходно общее впечатление и ощущение от использования всех этих языков. Это значит, что, зная С++, вы можете легко изучить Java или С#. Схожесть синтаксисов и объектных моделей — одна из причин быстрого освоения (и одобрения) этих двух языков многими опытными С++-программи-стами. Обратная ситуация также имеет место: если вы знаете Java или С#, изучение С++ не доставит вам хлопот.
Основное различие между С++, Java и С# заключается в типе вычислительной среды, для которой разрабатывался каждый из этих языков. С++ создавался с целью написания высокоэффективных программ, предназначенных для выполнения под управлением определенной операционной системы и в расчете на ЦП конкретного типа Например, если вы хотите написать высокоэффективную программу для выполнения на процессоре Intel Pentium под управлением операционной системы Windows, лучше всего использовать для этого язык С++.
Языки Java и С# разработаны в ответ на уникальные потребности сильно распределенной сетевой среды Internet. (При разработке С# также ставилась цель упростить создание программных компонентов.) Internet связывает множество различных типов ЦП и операционных систем. Поэтому возможность создания межплатформеиного (совместимого с несколькими операционными средами) переносимого программного кода для Internet при решении некоторых задач стало определяющим условием при выборе языка программирования.
Первым языком, отвечающим таким требованиям, был Java. Используя Java, можно написать проірамму, которая будет выполняться в различных вычислительных средах, т.е. в широком диапазоне операционных систем и типов ЦП. Таким образом. Java-программа может свободно "бороздить просторы" Internet. Несмотря на то что Java позволяет создавать переносимый программный код, ко-
28 Глава 1. Основы С++
торый работает в сильно распределенной среде, цена этой переносимости — эффективность. Java-програм мы выполняются медленнее, чем С++-программы. То же справедливо и для С#. Поэтому, если вы хотите создавать высокоэффективные приложения, используйте С++. Если же вам нужны переносимые программы, используйте Java или С#.
Спросим у опытного программиста нмннм
Вопрос. Каким образом языки Java и Ct позволяют создавать межплатформенные (совместимые с несколькими операционными средами) переносимые программы и почему с помощью С++ невозможно достичь такого же результата?
Ответ. Все дело в типе объектного кода, создаваемого компиляторам» В результате работы С++-компилятора мы получаем машинный код, который непосредственно выполняется конкретным центральным процессором (ЦП). Другими словами, С++-компилятор связан с конкретными ЦП и операционной системой. Если нужно выполнить С++-программу под управлением другой операционной системой, необходимо перекомпилировать ее и получить машинный код, подходящий для данной среды. Поэтому, чтобы С++-программа могла выполняться в различных средах, нужно создать несколько выполняемых версии этой программы.
Используя языки Java и С#, можно добиться переносимости программа i-го кода за счет специальной компиляции программ, позволяющей перс-вести исходный программный код на промежуточный язык, именуемый псевдокодом. Для Java-программ этот промежуточный язык называют байт-кодом (bytecode), т.е. машинно-независимым кодом,генерируемым Java-компилятором. В результате компиляции С#-нроіраммьі получается не исполняемый код, а файл, который содержит специальный псевдокод, именуемый промежуточным языком Microsoft (Microsoft Intermediare Language — MSIL). В обоих случаях этот псевдокод выполняется специальной операционной системой, которая для Java называется виртуальной машиной Java (Java Virtual Machine — JVM), а для C# — средством Common Language Runtime (CLR). Следовательно, Java-программа сможет выполняться в любой среде, содержащей JVM, а Сопрограмма — в любой среде, в которой реализовано средство CLR.
Поскольку специальные операционные системы для выполнения Java-и С#-кода занимают промежуточное местоположение между программой и ЦП, выполнение Java- и Сопрограмм сопряжено с расходом определенных системных ресурсов, что совершенно излишне при выполнении C++-программ. Вот поэтому С++-программы обычно выполняются быстрее, чем эквивалентные программы, написанные на Java и С#.
и
Я для вас ключевые моменты даже жирным выделил, чтоб не утруждались лишний раз чтением документации
для вас тоже выделил

для меня конечно загадкой пока остается, почему ваши тесты такие. но больше похоже на то, что дело в настройках компилятора с++, возможно и в коде можно чет поправить (я с с++ не очень знаком), и тогда программа с++ обгонит программу, написаную на с# . потому что программа, выполняющаяся из под виртуальной машины никак не может быть шустрее, чем программа, которая напрямую работает с процессором.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.02.2013, 15:30
Цитата Сообщение от Winhttp22 Посмотреть сообщение
и что? я вам сейчас урывок из книги Шилдта приведу
Там сравниваются С++ и Java/C#. Очевидно, что плюсовые компиляторы оптимизируют гораздо лучше шарповских.
А в треде идет речь о нативном коде/байткоде. Так вот байткод эффективнее нативного кода.
Цитата Сообщение от Winhttp22 Посмотреть сообщение
потому что программа, выполняющаяся из под виртуальной машины никак не может быть шустрее, чем программа, которая напрямую работает с процессором.
Вполне может. Компиляторы нативного кода не знают, на каком компьютере будет выполнятся программа и генерируют общий код, т.е. не могут использовать все возможности современных процессоров. Байт код же при выполнении транслируется во все тот же нативный код(причем всегда транслируется и никогда не интерпретируется), но только появляется возможность использования платформо-зависимых оптимизаций.

P.S. Для плюсов есть компилятор, умеющий компилировать в байт код, но для винды там пока экспериментальная поддержка. Однако через годик-другой ситуация в корне изменится :)
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.02.2013, 15:37
Winhttp22, скажу по-секрету, выполнение на виртуальной машине выполняется всего 1 раз для каждой строчки кода, после чего программа выполняется "напрямую на процессоре".
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
16.02.2013, 17:31
Сортировка массива методом пузырька -
C++ - http://ideone.com/QiS0aC
результат: Успешно время: 0.18s память: 2896 kB возвращаемое значение: 0
, C# - http://ideone.com/dUgKRj
результат: Успешно время: 0.54s память: 33992 kB возвращаемое значение: 0
Печаль. C# позади, а я так в него верил
Все таки преподаватель был прав , когда говорил , что сишарп и другие подобные ему языки будут медленней , чем с++. как и Шилдт

Добавлено через 3 минуты
diagon, байт код выполнется интерпретатором, а интерпретатор уже переводит все это в процессорные команды, нативный код же напрямую работает, или я чет путаю?
P.S. Для плюсов есть компилятор, умеющий компилировать в байт код, но для винды там пока экспериментальная поддержка. Однако через годик-другой ситуация в корне изменится
и кто этот код выполняет? сама винда?

Добавлено через 3 минуты
да кстати, мы от темы уже сильно отдалились, может следует продолжит дискуссию в другой теме? например сдесь - Разница в скорости выполнение программы C++ или C#
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
19.02.2013, 21:14
Цитата Сообщение от Psilon Посмотреть сообщение
где нифига не понятно, какие переменные что делают?
Про огромный проект и не спорю, я лишь среагировал на то, что хакер не поймёт что делает код.

Кстати, вот вы все про супер проекты с тысячами строк, а как быть с маленькими? к примеру - я написал вьювер какого-нибудь VRML. Код там на пару-тройку классов... строк по 30. Как защищать обфускацией такое?
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
19.02.2013, 22:47
skilllab, почитайте о протекторах. они полностью скрывают код. да и больше чем уверен, что у платных обфускаторов тоже есть такая функция
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
19.02.2013, 23:19
Цитата Сообщение от Winhttp22 Посмотреть сообщение
они полностью скрывают код.
Не бывает такого. Единственный более менее реальный вариант защиты - свой формат байткода, и, следовательно, своя виртуальная машина. Но и это рано или поздно взламывается.
Зависит от вашего проекта - если он большой, то никто в нем целиком разбираться не будет, проще написать свой. Если вы хотите утаить пару фич, то в этом и только в этом случае обфускация может иметь эффект. Однако если ваши фичи кому-то очень нужны, то обфускация не поможет, она лишь отсрочит неизбежное. Я знаю только один надежный способ - вынести эти фичи в SaaS, но он далеко не всем подходит.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
19.02.2013, 23:30
Цитата Сообщение от diagon Посмотреть сообщение
Единственный более менее реальный вариант защиты - свой формат байткода, и, следовательно, своя виртуальная машина. Но и это рано или поздно взламывается.
Полностью согласен
если программа может быть исполнена она может быть и взломана
Весь вопрос во времени и в квалификации взломщика(ну и востребованности программы)
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
20.02.2013, 12:11
вы путаете взлом, и получение начальных исходников. а ведь тема об этом. чтобы скрыть/зашифровать исходник, чтобы его никто не подглядел. а насчет взлома - то согласен, простым отладчиком можно ломать программы, и там есть свои фичи для защиты, но они лишь отсрочивают взлом.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
20.02.2013, 15:31
Цитата Сообщение от Winhttp22 Посмотреть сообщение
чтобы скрыть/зашифровать исходник, чтобы его никто не подглядел.
Так и я об этом. Расшифровать обфусцированный исходник совсем не сложно, особенно если под рукой есть IDE с возможностью рефакторинга.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.02.2013, 15:31

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

Защита программы
Здравствуйте! Как можно защитить свою программу от взлома? Я пытался использовать обфускатор NET Reactor но все равно мою программу смогли...

Защита программы
Вот такой вопрос: Написал программу, хочу передать её в безвозмездное пользование приятелю. Условие только одно - чтобы ей пользовался...

Защита программы
Есть программа на С++. Как поставить на нее защиту на 10 дней? Есть ли у кого пример готового кода.

Защита программы
Здравствуйте. Мне никогда не приходлось заниматься защитой программы и вот понадобилось. Подскажите как можно защитить ехе-шник от...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru