Вопрос с Visual Studio проектом в zp (лицензии)

uncobrestoonge517

Новичок
Регистрация
06.11.2023
Сообщения
2
Благодарностей
0
Баллы
1
Здравствуйте. В моем проекте Zennoposter реализовано: Start > Проект Visual Studio (использование dll). При выдачи лицензии другим пользователям, оно распространяется только на .zp файл и dll я должен кидать отдельно. Т.е. если у человека не будет лицензии, то он может создать проект, так-же подключить его к моей dll и ему остается только дополнить необходимые переменные для полноценной работы и спокойно использовать до конца жизни?
 
Последнее редактирование:

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
392
Баллы
63
Естественно. Это называется вынести логику в отдельный dll. а защиту кода в этом случае надо делать самому.
Не хочется/не можется, тогда не стоит делать сторонние библиотеки, а писать код в самом шаблоне.

Кстати, dll на C# не только можно подключить, но и очень легко декомпилировать, получив абсолютно весь исходный код :ap:
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 248
Благодарностей
674
Баллы
113
Здравствуйте. В моем проекте Zennoposter реализовано: Start > Проект Visual Studio (использование dll). При выдачи лицензии другим пользователям, оно распространяется только на .zp файл и dll я должен кидать отдельно. Т.е. если у человека не будет лицензии, то он может создать проект, так-же подключить его к моей dll и ему остается только дополнить необходимые переменные для полноценной работы и спокойно использовать до конца жизни?
Обфускация в помощь
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 248
Благодарностей
674
Баллы
113
Там то пример с js. На, попробуй деобфусцировать

C#:
private void StartFFmpeg(string arguments)
    {
        global::<Module>.get_Help = global::<Module>.HasPermission();
        do
        {
            if (global::<Module>.get_Help == global::<Module>.Read())
            {
                global::<Module>.FixedUpdate.Refresh();
                global::<Module>.get_Help = global::<Module>.Log();
            }
            if (global::<Module>.get_Help == global::<Module>.set_AvatarIcon())
            {
                throw new Exception(global::<Module>.set_CustomURL());
            }
            if (global::<Module>.get_Help == global::<Module>.checkCommandMappings())
            {
                global::<Module>.FixedUpdate.WaitForExit();
                global::<Module>.get_Help = global::<Module>.LoadPlugin();
            }
            if (global::<Module>.get_Help == global::<Module>.Awake())
            {
                global::<Module>.set_InstanceID = string.IsNullOrEmpty(arguments);
                global::<Module>.get_Help = global::<Module>.get_Aliases();
            }
            if (global::<Module>.get_Help == global::<Module>.ParseDouble())
            {
                global::<Module>.get_Name = new ProcessStartInfo();
                global::<Module>.get_Help = global::<Module>.set_Instance();
            }
            if (global::<Module>.get_Help == global::<Module>.LoadDefaults())
            {
                global::<Module>.FixedUpdate = Process.Start(global::<Module>.get_Name);
                global::<Module>.get_Help = global::<Module>.Load();
            }
            if (global::<Module>.get_Help == global::<Module>.add_OnPluginsLoaded())
            {
                if (!global::<Module>.set_InstanceID)
                {
                    goto IL_0177;
                }
                global::<Module>.get_Help = global::<Module>.ParseUInt64();
            }
            if (global::<Module>.get_Help == global::<Module>.GetParentGroups())
            {
                global::<Module>.get_Name.FileName = project.Directory + global::<Module>.remove_OnPluginLoading();
                global::<Module>.get_Help = global::<Module>.ParseBool();
            }
            if (global::<Module>.get_Help == global::<Module>.GetPermissions())
            {
                goto IL_0177;
            }
            goto IL_018b;
            IL_0177:
            global::<Module>.FixedUpdate = new Process();
            global::<Module>.get_Help = global::<Module>.remove_OnExecuteCommand();
            goto IL_018b;
            IL_018b:
            if (global::<Module>.get_Help == global::<Module>.get_RealName())
            {
                global::<Module>.get_Name.Arguments = arguments;
                global::<Module>.get_Help = global::<Module>.Load();
            }
            if (global::<Module>.get_Help == global::<Module>.set_Timeout())
            {
                global::<Module>.get_Name.WindowStyle = (ProcessWindowStyle)global::<Module>.HasPermission();
                global::<Module>.get_Help = global::<Module>.set_SteamID64();
            }
            if (global::<Module>.get_Help == global::<Module>.Start())
            {
                global::<Module>.get_Help = global::<Module>.set_Timeout();
            }
        }
        while (global::<Module>.get_Help != global::<Module>.GetParentGroups());
    }
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 514
Благодарностей
3 368
Баллы
113
Start > Проект Visual Studio (использование dll). При выдачи лицензии другим пользователям, оно распространяется только на .zp файл и dll я должен кидать отдельно.
Если норм работает, релизную версию переделайте для подключения через GAC, там не должно возникнуть проблем
и используйте публикацию проекта, если повезёт, получится и с шифрованием.
 

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
392
Баллы
63
Там то пример с js. На, попробуй деобфусцировать

C#:
private void StartFFmpeg(string arguments)
    {
        global::<Module>.get_Help = global::<Module>.HasPermission();
        do
        {
            if (global::<Module>.get_Help == global::<Module>.Read())
            {
                global::<Module>.FixedUpdate.Refresh();
                global::<Module>.get_Help = global::<Module>.Log();
            }
            if (global::<Module>.get_Help == global::<Module>.set_AvatarIcon())
            {
                throw new Exception(global::<Module>.set_CustomURL());
            }
            if (global::<Module>.get_Help == global::<Module>.checkCommandMappings())
            {
                global::<Module>.FixedUpdate.WaitForExit();
                global::<Module>.get_Help = global::<Module>.LoadPlugin();
            }
            if (global::<Module>.get_Help == global::<Module>.Awake())
            {
                global::<Module>.set_InstanceID = string.IsNullOrEmpty(arguments);
                global::<Module>.get_Help = global::<Module>.get_Aliases();
            }
            if (global::<Module>.get_Help == global::<Module>.ParseDouble())
            {
                global::<Module>.get_Name = new ProcessStartInfo();
                global::<Module>.get_Help = global::<Module>.set_Instance();
            }
            if (global::<Module>.get_Help == global::<Module>.LoadDefaults())
            {
                global::<Module>.FixedUpdate = Process.Start(global::<Module>.get_Name);
                global::<Module>.get_Help = global::<Module>.Load();
            }
            if (global::<Module>.get_Help == global::<Module>.add_OnPluginsLoaded())
            {
                if (!global::<Module>.set_InstanceID)
                {
                    goto IL_0177;
                }
                global::<Module>.get_Help = global::<Module>.ParseUInt64();
            }
            if (global::<Module>.get_Help == global::<Module>.GetParentGroups())
            {
                global::<Module>.get_Name.FileName = project.Directory + global::<Module>.remove_OnPluginLoading();
                global::<Module>.get_Help = global::<Module>.ParseBool();
            }
            if (global::<Module>.get_Help == global::<Module>.GetPermissions())
            {
                goto IL_0177;
            }
            goto IL_018b;
            IL_0177:
            global::<Module>.FixedUpdate = new Process();
            global::<Module>.get_Help = global::<Module>.remove_OnExecuteCommand();
            goto IL_018b;
            IL_018b:
            if (global::<Module>.get_Help == global::<Module>.get_RealName())
            {
                global::<Module>.get_Name.Arguments = arguments;
                global::<Module>.get_Help = global::<Module>.Load();
            }
            if (global::<Module>.get_Help == global::<Module>.set_Timeout())
            {
                global::<Module>.get_Name.WindowStyle = (ProcessWindowStyle)global::<Module>.HasPermission();
                global::<Module>.get_Help = global::<Module>.set_SteamID64();
            }
            if (global::<Module>.get_Help == global::<Module>.Start())
            {
                global::<Module>.get_Help = global::<Module>.set_Timeout();
            }
        }
        while (global::<Module>.get_Help != global::<Module>.GetParentGroups());
    }
мне то нафига это ?
тем более выдранную одну функцию из всего кода, без зависимостей... это ты нормально так придумал :ap:

просто посмотри/почитай умных людей, все эти обфускации давно уже не защита. уже давно собраны 100500 шаблонов для дэобфускации и добавляют новые в течении месяца, как только выходит более менее популярный новый обфускатор. и это без всяких ИИ... правильно написали, сейчас с распростанением ИИ открываются невиданные возможности по влому любого кода.

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

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 248
Благодарностей
674
Баллы
113
мне то нафига это ?
тем более выдранную одну функцию из всего кода, без зависимостей... это ты нормально так придумал :ap:

просто посмотри/почитай умных людей, все эти обфускации давно уже не защита. уже давно собраны 100500 шаблонов для дэобфускации и добавляют новые в течении месяца, как только выходит более менее популярный новый обфускатор. и это без всяких ИИ... правильно написали, сейчас с распростанением ИИ открываются невиданные возможности по влому любого кода.

ну и золотое правило защиты - любой код можно взломать, только за разное время - еще никто не отменял. поэтому не надейся на простенькую обфускацию что у тебя в коде, если кому понадобиться, твой код уйдет как миленький. ну а от школоты интересующейся, да, немного отпугнет.
Да это понятно что вопрос времени и денег, сомневаюсь что кто то серьезный будет пытаться ломать шаблон для ЗП, поэтому подобной обфускации за глаза. А зависимостей там никаких нету, разве что System.Diagnostics
 

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
392
Баллы
63
Да это понятно что вопрос времени и денег, сомневаюсь что кто то серьезный будет пытаться ломать шаблон для ЗП, поэтому подобной обфускации за глаза. А зависимостей там никаких нету, разве что System.Diagnostics
не те зависимости... а которые выстраиваются при анализе полного работающего кода.
насчет будут ли ломать ЗП шаблон... ну например в соседней теме один товарищ написал что делал накрутку ПФ яндекса за 150к + и сверху чот там дофига.. и типа работает у него....
так вот, если он вынес рабочий код во внешние dll, а не шифровал внутри шаблона, выгоднее найти хакера за 50-100к, чем покупать у него. а потом на складчине продать . ну или крутить для себя.

ну а плагины за 1-10к.р. конечно не выгодно ломать.
 
  • Спасибо
Реакции: Sherminator

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 248
Благодарностей
674
Баллы
113
не те зависимости... а которые выстраиваются при анализе полного работающего кода.
насчет будут ли ломать ЗП шаблон... ну например в соседней теме один товарищ написал что делал накрутку ПФ яндекса за 150к + и сверху чот там дофига.. и типа работает у него....
так вот, если он вынес рабочий код во внешние dll, а не шифровал внутри шаблона, выгоднее найти хакера за 50-100к, чем покупать у него. а потом на складчине продать . ну или крутить для себя.

ну а плагины за 1-10к.р. конечно не выгодно ломать.
Да так же и шифрование внутри шаблона вскроют
 

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
392
Баллы
63
Да так же и шифрование внутри шаблона вскроют
ну мы же это прекрасно понимаем....
но, когда мы шифруем внутри шаблона, это делается по одному клику мышки и задаром....
а когда выносим в dll , то надо покупать лицензию на дорогущий софт для обфускации/шифрования/и всего остального умного, ломающие просмотрщики кода.
и эти дорогущие софты очень разные по качеству защиты, а какие то уже давно в шаблонах по взлому.

а простой обфускатор, даже школьник обойдет с ИИ на текущий момент.

получается разрыв трудозатрат и вложений... что очень положительно сказывается на защиту дешевых и средней цены шаблонов. ну а дорогие и востребованные проекты, без дополнительной защиты, такой как вынос кода в облака, это всегда было на совести разработчиков этих проектов.
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 248
Благодарностей
674
Баллы
113
ну мы же это прекрасно понимаем....
но, когда мы шифруем внутри шаблона, это делается по одному клику мышки и задаром....
а когда выносим в dll , то надо покупать лицензию на дорогущий софт для обфускации/шифрования/и всего остального умного, ломающие просмотрщики кода.
и эти дорогущие софты очень разные по качеству защиты, а какие то уже давно в шаблонах по взлому.

а простой обфускатор, даже школьник обойдет с ИИ на текущий момент.

получается разрыв трудозатрат и вложений... что очень положительно сказывается на защиту дешевых и средней цены шаблонов. ну а дорогие и востребованные проекты, без дополнительной защиты, такой как вынос кода в облака, это всегда было на совести разработчиков этих проектов.
Про трудозатраты я бы поспорил, посмотрел бы как ты переносишь проект в 10к строк кода в общий код шаблона, а потом его там дебажишь ну или добавляешь функционал )
 

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
392
Баллы
63
Про трудозатраты я бы поспорил, посмотрел бы как ты переносишь проект в 10к строк кода в общий код шаблона, а потом его там дебажишь ну или добавляешь функционал )
так я не понял.... ты автоматизатор или что ? :ap:
для дебага использую VS через кубик VS с подключенным браузером из зенки.
основной код используемый в проектах уже давно отдебажен и лежит в одном файле, который подключен как автообновление ко всем проектам.
если надо изменить общие библиотеки, запускаю дебажный проект, правлю, проверяю и потом одним батником собираю общий файл для зенно.

вообще не вижу сложностей вести код в VS так как надо и прокидывать его в Зеннопостер. ;-)
 
  • Спасибо
Реакции: Sherminator

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
730
Благодарностей
479
Баллы
63
Если норм работает, релизную версию переделайте для подключения через GAC, там не должно возникнуть проблем
и используйте публикацию проекта, если повезёт, получится и с шифрованием.
Я думал надо сюда подгружать и все будет работать
113794
 

uncobrestoonge517

Новичок
Регистрация
06.11.2023
Сообщения
2
Благодарностей
0
Баллы
1
По поводу декомпиляции .dll я знаю, что через всякие dnSpy и прочие готовые тулзы можно спокойно просмотреть код приложения, а уж тем более деобфусцировать. Короче я принял решение просто чуточку переделать всю структуру проекта Visual Studio и перенесьти в кубик "Свой C# код" в проект зенки, дабы не было дополнительных файлов, которые скоомпилированны от VS.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)