Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
20 / 19 / 9
Регистрация: 06.02.2015
Сообщений: 382
.NET 4.x

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

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

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


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

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

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

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

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

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

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

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

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

Клиентское приложение для работы с сервером SFTP
:cry: Люди добрые, есть у кого простой пример (исходник) на Java клиентского приложения для работы с сервером SFTP??? ОЧЕНЬ! НУЖНО ЗАРАНЕЕ...

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

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

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

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

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

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

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

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

P.S. Я конечно, понимаю, что ты, скорее всего не можешь такие вопросы решать, но вот 2ГИС, например, выбрало другой способ монетизации (реклама в прожку вставляют) как раз по этой причине. Потому что их прожка представляет реальный интерес для общества, поэтому всем понятно было, что её бы сломали, а так, они очень хорошо зарабатывают на рекламе. А там, скажу я по секрету, очень мозговитые ребята работают. И их много) Повод задуматься даю)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2015, 10:11
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru