18 / 18 / 8
Регистрация: 06.02.2015
Сообщений: 382
1
.NET 4.x

Проектирование и выбор решения для реализации (локальное; клиентское приложение)

22.10.2015, 11:57. Показов 1097. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вступление для Админов.
Кликните здесь для просмотра всего текста
Куда засунуть эту тему я не нашёл (разделов по проектированию нет (или я не увидел)). А так как интерфейс будет на WPF, подумал что здесь эту тему и нужно размещать.


Здравствуйте и айда решать мои проблемы!

Хочу сделать приложение и "скрыть от чужих глаз" внутреннее содержимое моей программы. Как нам известно, наш любимый C# открытый и с большой радостью декомпилится, а это немного мешает достичь мне, одной из целей данного проекта, кстати, которая была упомянута чуть раньше.

Раз уже начали с шарпа, то тут же и уточню, что об обфускации я знаю, использовать буду, но она не в полной мере выполняет мою задачу, т.к. код, всё таки продвинутому пользователю доступен будет... зашифрованный, но открытый.

Весь проект, по сути как и любой другой, делится на две основных составляющих части:
1. UI
2. Core

Для разработки интерфейса(1), я склоняюсь к выбору технологии C# WPF, по ряду следующих причин:
-(как минимум) Он под это заточен. Удобен для создания графического дизайна приложения.
-Тот факт что это тот самый C# и он открытый в данном пункте меня совершенно не смущает, т.к. это же всего лишь интерфейс и смысла его "вскрывать" нет, т.к. каждый из нас его написать сможет (или продублировать своим кодом чужой интерфейс).
-(как максимум) Я с ним работал достаточно много и знаю как навести красоту в нём.

А вот и сама задача: а что же выбрать для написания, так называемого, ядра(2)? C# не подходит по ранее упомянутому недостатку.
Кликните здесь для просмотра всего текста
А так бы хотелось на нём всю приложуху сделать. Шарп у меня основной и на нём было бы проще всего разрабатывать.

Тогда какой язык выбрать, чтобы конечную сборку (dll-ку, в данном случае) нельзя было развернуть? На уме сейчас только C++ (ну и я когда-то его рассматривал...). Нужно будет наследовать класс из ядра(2) в модель интерфейса(1). Плюсы это достойное решение данной проблемы??
Если да, тогда сопутствующие вопросы:
Кликните здесь для просмотра всего текста
-Как подключить dll написанную на плюсах в c# проект (НЕ подключая каждый метод в отдельности с помощью ImportDLL атрибута)?
-Я так понял что можно из ++ библиотеки сделать фейковую-управляемую dll и через неё сразу работать со всем функционалом данной сборки, эта чудо вещь ещё идёт с суффиксом Interop. "Это" можно использовать в данном решении? (если да, то как такую библиотеку сваять?)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2015, 11:57
Ответы с готовыми решениями:

Выбор решения для проекта! Приложение для Windows + приложение для Android или Web приложение?
Здравствуйте! Один мой знакомый, владелец мебельной фирмы, обратился ко мне с серьезным...

Клиентское приложение (оболочка) на C# для БД (MS SQL Server)
Необходимо создать клиентское приложение на С# на тему Агентство по организации праздников....

Клиентское приложение для работы с сервером SFTP
:cry: Люди добрые, есть у кого простой пример (исходник) на Java клиентского приложения для работы...

Большая работа (клиентское приложение для больницы), много вопросов
Всем Привет! :curtsy: У меня задание создать клиентское положение для больницы. Программа сложная,...

10
18 / 18 / 8
Регистрация: 06.02.2015
Сообщений: 382
27.10.2015, 15:15  [ТС] 2
Сообщение из серии "Updata time"

Народ, ну кто? Где все?
0
Жуткая тВарЬ
390 / 325 / 135
Регистрация: 06.02.2015
Сообщений: 960
Записей в блоге: 1
27.10.2015, 15:49 3
DarkOrk, Я бы Вам советовал не париться и писать на шарпе ибо если Ваше приложение не из серии про безопасность и деньги, то большого смысла не вижу - ибо если прогу можно взломать значит ее контингент использования будет достаточно велик, а компании обычно закупают программы а не пользуются кряками...

Тем более нормальные конторы все равно смогут Вашу программу повторить если в этом будет коммерческий толк - таких примеров уйму - я не думаю, что Вы там в коде изобретете, что то фундаментальное и еще ни кем не затронутое +))))

Не усложняйте себе жизнь.....

П.С. Я как то слышал мнение от одного кодера - он говорил следующее: "На шарпе я обычно разрабатываю прототип т.к. скорость разработке на нем очень высокая, а потом переписываю на С++ если в этом есть необходимость"
0
95 / 54 / 10
Регистрация: 16.09.2012
Сообщений: 207
31.10.2015, 11:53 4
DarkOrk, Это сделать очень и очень сложно. Можно основные функции вынести в нативный код, перенести часть кода в dll на плюсах, можно воспользоваться обфускацией, но она лишь усложняет чтение исходника, а не защищает его. Можно попробовать менять точку входа у приложения, воспользоваться упаковщиком, но большинство упаковщиков уже давно взломаны (все популярные бесплатные и бОльшая часть платных). Более того, если твой продукт действительно сверхважный или будет представлять реальный интерес для общества, то его 100% взломают. Над взломом игр, крупных приложений работают целые команды реверс инженеров, поэтому ни одно крупное приложение еще не было защищено на 100% от взлома, какая бы ни была защита. Можешь так же подумать в сторону лицензирования и на эту тему погуглить
1
18 / 18 / 8
Регистрация: 06.02.2015
Сообщений: 382
31.10.2015, 12:52  [ТС] 5
Ну вот - первый серьёзный ответ спасибо.

Почему я этим задался - т.к. не хочу что бы программка в первые пару недель ушла в "фри пасс".
Давайте тогда конкретнее, 2 вопроса:
1. Основная тема топика (так всё таки) как сделать основную часть в нативном коде и "без особого труда" заставить его подружится с компилируемым (в нашем случае речь о C#/.NET). Цель: максимальная защита внутренней составляющей программы.
2. Как организовать "поверхностную" защиту. Кто это делал и имеет опыт, можете написать план с расшифровкой, ну там к примеру: "1. Обфускация кода (такие-то обфускаторы хороши). 2 Лицензирование (делается с помощью таких-то программ (у неё есть такие-то особенности и плюсы)) 3. ..." Цель: сделать коммерческий программный продукт.
0
Эксперт .NET
5490 / 4260 / 1211
Регистрация: 12.10.2013
Сообщений: 12,262
Записей в блоге: 2
31.10.2015, 16:22 6
DarkOrk, как уже было выше сказано, ломается все. Абсолютно, исключений нет. Вопрос только во времени/затратах.
В плане обеспечения безопасности вашего кода ничего лучше, чем клиент-серверное приложение придумать не получится. Если у вас есть возможность так сделать - то я бы посоветовал именно это. Вынести основной функционал на сервер.
0
18 / 18 / 8
Регистрация: 06.02.2015
Сообщений: 382
02.11.2015, 10:02  [ТС] 7
За мнение, Спасибо, но к сожалению, клиент-серверное ПО делать возможности нет. На данный момент хотелось бы организовать off-line desktop приложуху.

На данный момент, определили только одно средства защиты - это обфускация. Ещё варианты есть?
Кто-то сталкивался с лицензированием ПО? Кто-то проконсультировать\направить в этой области может?
0
98 / 1 / 1
Регистрация: 28.01.2007
Сообщений: 53
02.11.2015, 15:10 8
т.к. не хочу что бы программка в первые пару недель ушла в "фри пасс"
Уйдет, только если вы сами ее туда отправите.
0
Master of Orion
Эксперт .NET
6094 / 4950 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
02.11.2015, 15:36 9
DarkOrk, как выше написали, ломается абсолютно все, хоть сишарп, хоть плюсы, хоть ассемблер со вставками на брейнфаке. Причем как правило для хака всего приложения достаточно заменить пару байт в одном месте. Тут наглядный пример. Игры, которые по 10 лет разрабатывают огромные коллективы взламывают буквально на следующий день (причем стоит заметить, что 99% всех игр это именно плюсы), что уж говорить про маленькие приложухи.
0
Эксперт .NET
5490 / 4260 / 1211
Регистрация: 12.10.2013
Сообщений: 12,262
Записей в блоге: 2
02.11.2015, 17:10 10
Цитата Сообщение от Psilon Посмотреть сообщение
для хака всего приложения достаточно заменить пару байт в одном месте.
100500. Я ради интереса взломал свою же программу. Естественно, я знал где искать, поэтому ушло всего три минуты. Сбросить дамп через IlDasm, в одном месте заменить brtrue на brfalse и собрать программу заново через IlAsm.
С реальными программами, конечно, было бы труднее, но все равно все ломается.
0
95 / 54 / 10
Регистрация: 16.09.2012
Сообщений: 207
09.11.2015, 10:11 11
DarkOrk, По поводу обфускаторов вот:
http://habrahabr.ru/post/255871/
http://habrahabr.ru/post/97062/
По поводу лицензирования, можешь погуглить в сторону HASP и как реализовать HASP лицензирование.

По поводу всего остального. Парень, я не хочу, конечно, тебя ничем оскорбить, но ты совсем не понимаешь, куда ты лезешь. Потому что в эту тему нужно погружаться с головой. На защиту ПО нужно неоправданно много (неоправданно, потому что ты месяц-два убьёшь, а всё равно гарантии защиты никакой нету) времени, сил и мозгов (в конце то концов=)). И у тебя не получиться провернуть это всё "бесплатно, без регистрации и смс" (без особого труда). Там нужно реально читать много статей, книг, листать примеры, реализовывать алгоритм, самому потом попытаться взломать, потом понять, что всё плохо и всё переделать, потом опять попробовать сломать и тд. И я тебе сразу говорю, как только какой то способ защиты становится популярным, он сразу попадает под прицел реверс инженеров. Поэтому просто так взять и найти в инете какой то способ (и тем более, найти исходник), который обеспечит тебе защиту, это маловероятно. Хотя от быдланов можно защититься. Но (повторюсь), если твоя программа представляет реальный интерес для общества, то можешь даже время не тратить.

P.S. Я конечно, понимаю, что ты, скорее всего не можешь такие вопросы решать, но вот 2ГИС, например, выбрало другой способ монетизации (реклама в прожку вставляют) как раз по этой причине. Потому что их прожка представляет реальный интерес для общества, поэтому всем понятно было, что её бы сломали, а так, они очень хорошо зарабатывают на рекламе. А там, скажу я по секрету, очень мозговитые ребята работают. И их много) Повод задуматься даю)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2015, 10:11
Помогаю со студенческими работами здесь

клиентское приложение
#include <iostream> #include <cstdio> #include <cstdlib> #include <boost/asio.hpp> using...

Клиентское приложение
Назовите преимущества клиентского приложения. Никак не могу его найти в интернете

клиентское приложение афиши
АААА!!!!!!! Помогите кто может!!!!!!!!!!! Нужно создать приложение афиши (хотя бы для кинотеатров...

C# Мышка и клиентское приложение!
Всем доброго времени суток! Решил я провести эксперимент в среде C#, по управлению мышкой и сразу...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru