Помощь - Поиск - Пользователи - Календарь
Полная версия: Шифровка скрипта
UoKit.com Форумы > Кликер > UO Pilot
Страницы: 1, 2
yuroc
Здравствуйте, ув. форумчане,
возможно ли каким-либо способом зашифровать текст скрипта?т.е. чтобы его нельзя было ни скопировать, ни изменить... ?
либо же сделать так,чтобы текст скрипта вообще не было видно в пилоте?
или вплоть до того,чтобы и самого пилота не было видно... а управлять им чисто из батников?
за ранее спасибо
Kanibal
Цитата(yuroc @ 31.10.2014, 16:31) *

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

А зачем такое делать, если не секрет? Скрыть пилот с глаз долой можно через VB Script, будет только в процессах висеть, но сам файл скрипта всё равно можно будет прочесть.
yuroc
делать это для того,чтобы не было копирования скрипта =)
в игре хочу дать одному человеку скрипт, но так, чтобы он не мог его передать другим
Kanibal
Цитата(yuroc @ 31.10.2014, 17:29) *

делать это для того,чтобы не было копирования скрипта =)
в игре хочу дать одному человеку скрипт, но так, чтобы он не мог его передать другим

Я думаю, что тут без вмешательства в uopilot.exe будет сложно что-то придумать. Разве что тот человек совсем чайник.
yuroc
да я тоже так думаю... конечно, как вариант, можно как можно максимум изменить внешний вид uopilot.exe, до не узнаваемости, привязать его к какому-то ключу лицензии\железу, чтоб на других не запускался, но это (изменить внешний вид) до не узнаваемости, наверное не реально
WKnight
Наверно все-таки узнаваемо smile.gif
Zeleax
Цитата(WKnight @ 6.11.2014, 5:39) *

Наверно все-таки узнаваемо smile.gif

И что это, как это? )
DarkMaster
Я так подозреваю это смесь пилота и инжекта.
EL-GReeN
Если хорошо знать пилот то можно сделать ОЧЕНЬ длинный запутанный код с привязкой к чему то, readmem есть, и наверно как то можно реестр читать.
Но если твой друг хорошо разбирается в пилоте то все на смарку.
Mirage
А "друг" не может просто передать зашифрованный скрипт кому то еще чтобы он тоже им пользовался? smile.gif Какая разница - не хочешь делиться не передавай.
Cockney
Цитата(Mirage @ 8.11.2014, 17:49) *

А "друг" не может просто передать зашифрованный скрипт кому то еще чтобы он тоже им пользовался? smile.gif Какая разница - не хочешь делиться не передавай.





упоминалась привязка к железу
DarkMaster
шифрованный проще привязать. Например сделать readmem имени чара и все норм.
yuroc
подскажите на счет readmem, как именно его тут можно использовать?да и скрин с узнаваемостью тоже заинтересовал)))
DarkMaster
если сам скрипт не "завернешь" в пилот от глаз пользователя - толку не будет.
Что именно подробнее про редмем? Берешь артмани, ищешь в памяти клиента адрес с логином или ником чара, в скрипте считываешь этот адрес, сравниваешь с заранее заданным, если не совпал - останавливаешься скрипт.
Код
readmem $var 0x123456 S 7
if  $var = "Василий"
    gosub main
else
    stop_script
end_if

Тут есть потенциальная дырка. Оно будет работать со всем начинающимся на "Василий". Чтобы этого не произошло, нужно считывать размер не '7', а максимально возможный размер логина/ника, либо считывать посимвольно, пока не дойдешь до символа конца строки '\0'(он равен нулю). Но тут тоже нужно быть аккуратнее. Если логин хранится в char массиве, то '\0' будет почти обязательно, а вот в стринге может и не быть или быть их несколько, т.к. стринг имеет помимо самой строки еще и параметр размера, который хранится в отдельной переменной и для определения конца строки может использоваться именно это переменная, а не символ '\0'.
В общем и целом - спрячешь скрипт, вернемся к вопросу плотнее, напишем что-нибудь дельное.
cirus
Цитата
Берешь артмани, ищешь в памяти клиента адрес с логином или ником чара, в скрипте считываешь этот адрес, сравниваешь с заранее заданным, если не совпал - останавливаешься скрипт.

Адреса логина и пароля нашлись, а вот читать не хочет, возвращает -1.
Код
readmem $var 0x20789F8E S 11
//размер никак не влияет проверял разные значения
//Тип: текст UNICODE 22 байта (для логина) и 26 байт (для пароля)
//Размер 11 и 13 соответственно.
//Для пароля есть еще тот же самый адрес, но UNICODE 16 байт

Еще такое дело: запускаю 2 окна л2 ввожу логины и пароли, захожу в игру. Адреса логина и пароля уже найдены (они статичны, 1 адрес для логина, 1 адрес для пароля). Выбираю в артмани процесс л2 (1-е окно) показывает логин и пароль 1-го окна , выбираю процесс л2 (2-е окно) показывает логин и пароль 2-го окна. Получается в 1 адрес пишутся все логины? И во второй адрес все пароли? И как их вообще читать?
DarkMaster
Цитата
Получается в 1 адрес пишутся все логины?

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

В артмани снимал галку модульной адресации? Надо было снять.
cirus
Цитата
В артмани снимал галку модульной адресации? Надо было снять.

Всегда снята. Забыл что к окну надо привязывать smile.gif Возвращает только первый символ из логина или пароля, не зависимо от указанного размера строки.
WKnight
Цитата
Я так подозреваю это смесь пилота и инжекта.
Нет, просто оболочка для какогото бота. Внутри все тот же пилот.
DarkMaster
Подозреваю, что из-за кодировки. Попробуй в качестве теста читать и прибавлять по 1 к адресу и снова читать. Есть у меня подозрение что из-за кодировки. Доп байты пустые, т.е. равны 0, а 0 - это '\0', т.е. конец строки. Пилот возможно воспринимает этот знак, как конец строки и соответственно прекращает чтение.
cirus
Код
 Попробуй в качестве теста читать и прибавлять по 1 к адресу и снова читать

Спасибо. Работает, символы расположены через 1 адрес.
DarkMaster
Цитата
Спасибо. Работает, символы расположены через 1 адрес.

На самом деле нет, просто разница кодировок. Именно это я и предполагал =)
IvaniuS
очень интересная тема, если бы можно было как-то зашивать в пилот скрипт и давать только его и запускать, мне как фрилансеру очень бы пригодилось на будущее, пока не получается на пилоте зарабатывать, только с помощью селениума +VBS,VBA .
А к стати, реально ли привязать библиотеку селениума к Пилоту??? очень была бы крутая уж связка. Тем более для всех известных мне языков есть порт начиная от С закачивая скриптовыми фитонами и ВБА, ВБС
DarkMaster
Цитата
А к стати, реально ли привязать библиотеку селениума к Пилоту???

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

Скрипт теоретически в пилот зашить можно, например в ресурс покласть, но нет приемлимых механизмов защиты скрипта от любопытных пользователей.
EL-GReeN
Сохранить скрипт в зашифрованный файл.
Запустить этот файл без отображения текста скрипта.
Вот чего они хотят, да кому надо вытащат скрипт из процесса но это уже другая история.
IvaniuS
Цитата(WKnight @ 13.11.2014, 6:26) *

Скрипт теоретически в пилот зашить можно, например в ресурс покласть, но нет приемлимых механизмов защиты скрипта от любопытных пользователей.

Я думаю этого достаточно "защиты от дурака", кому нужно будет тот или сам весь интернет перероет или заплатит кому и достанет.
Moonfawn
Цитата(EL-GReeN @ 13.11.2014, 8:55) *

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


Тема до сих пор актуальна, но предложения по её реализации ни от кого так и не поступило.

Резюмирую что люди хотят:
1. Скрыть основную часть скрипта - да бы не допустить его бесплатного распространения
2. Возможность установить УОпилот со скриптом только в случае наличия ключа, привязка данного УОпилота к машине (например проверяет наличие в реестре ключа или привязывается к жесткому диску). Такое ощущение что кто то уже давно написал подобное ПО - но вот вопрос как оно называется или как искать....
Cockney
куча предложений по реализации,только толку их писать?это не перспективная задача для разработчика пилота(хотя вроде пока все стабильно работает и ничего фиксить не надо)

софт есть и не мало,стоит поискать только
RL_ka
Как я понимаю люди хотят зарабатывать на этом деньги, продавая свои скрипты в закрытом виде.
Система сложная, даже очень, потому что в ином случае это будет взламываться в два счёта.
Хочешь зарабатывать - разрабатывай подобное самостоятельно.

Исходники, например, инжекта есть в свободном доступе. Берёшь в руки и в путьsmile.gif
Cockney
таки кнайт тоже может заработать на этом
Moonfawn
Цитата(Cockney @ 5.1.2015, 18:44) *

куча предложений по реализации,только толку их писать?это не перспективная задача для разработчика пилота(хотя вроде пока все стабильно работает и ничего фиксить не надо)

софт есть и не мало,стоит поискать только

Это не в коих случаях не камень в огород разработчика UoPilot - и так огромное спасибо на том что есть такая прекрасная программа.

Позволю себе порассуждать на тему "скрытности" скрипта или его части. Эта функция простимулирует скриптеров писать скрипты, и делиться ими (продавать). Как вариант можно было бы сделать "профессиональную" версию для скриптеров они могли бы её покупать (так как цель у них заработать на этом).

Касательно установщика погуглил и действительно нашел Actual Installer 5.6 - pro версия позволяет устанавливать программу при наличии серийника. Теперь остается каким то образом спрятать скрипт и сделать привязку к компьютеру

Цитата(RL_ka @ 5.1.2015, 19:51) *

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

Исходники, например, инжекта есть в свободном доступе. Берёшь в руки и в путьsmile.gif


Ну зачем усложнять себе жизнь и писать что то с нуля (тем более при отсутствии навыков программирования). С Инжектом пока не работал так как не для ультимы онлайн у меня затея (я так понимаю он больше под нее заточен, тогда как УОпилот работает с любым приложением.

Касаемо уровня защиты - ну мы же не фотошоп продаем, а всего то скрипт на который потратили свое время, и набили опыт. Тот кто может взломать\достать скрипт и.т.п. без труда сможет и сам скрипт написать.
Moonfawn
Цитата(WKnight @ 13.11.2014, 7:26) *

Скрипт теоретически в пилот зашить можно, например в ресурс покласть, но нет приемлимых механизмов защиты скрипта от любопытных пользователей.


Да простит меня разработчик UoPilot (а это как я понимаю Вы). Но я тот самый любопытный пользователь который установил Ресторатор, и пытаюсь порыться в ресурсах Уопилота в попытке найти параметр отображения окна редактора (там где сам скрипт). Нашел кусок кода:
Код
goAlwaysShowEditor


Убрал его -но окно редактора так и присутствует. Пытался найти ссылки на SynEdit но и этого нет.

За то в процессе пользования обнаружил интересную вещь (не знаю баг или нет) при запущенном скрипте нажимаю Альт+ф4 - и то самое окно редактора которое мне хочется спрятать - скрывается (скрипт запускал кликом по кнопке плея). Сейчас попробовал повторить этот опыт почему то не прокатывает, может из за "задержек" на исполнение скрипта - помню было в районе 100 мс и не было команды на ожидание после посыла клавиши.
Cockney
все это - извращение,которое будет расковыриваться за два часа и менее.


самый надежный вариант - клиент-серверная защита,все,остальное - шлак
Warstone
А можно я предложу компиляцию?..

А вообще - вы всегда можете перехватить CreateWindowEx и по классу окна узнать поле-ли это ввода и не создавать его. Насколько я помню компоненты Delphi у них раза 3 копируется текст, прежде чем он появится в SetWindowText (или как оно там зовется).
DarkMaster
Цитата
А можно я предложу компиляцию?..

А можно ты ее сделаешь?)
Moonfawn
Цитата(Cockney @ 6.1.2015, 1:26) *

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


Cockney спасибо за заботу, ну вы поймите - что взламывается все что угодно - начиная от Фотошопа, и Винды - которые стоят в эквивалентах денег и времени куда больше чем 50-100 строчный скрипт который я или другие хотят продать 10 раз по 100 рублей например. Речь просто о простой защите в том плане что бы каждый 2-ой купивший по доброте душевной не делился этим на своем форуме\сайте, или не изменял и не перепродавал =) Единицы людей из 1000 понимают что такое "ресурсы" - я об этом только вчера например узнал. И вообще много нового для себя открыл.

Даже поставил вижуал студио и пытаюсь разобраться с Активатором, который не дает запустить приложение без валидации на серверной стороне ключа доступа. Думаю многим будет полезно https://activatar.codeplex.com/ - вот сайт. Это первый уровень защиты - пилот просто не запустится на другой машине так как не будет совпадать данные по системе (если есть желающие помочь с этой штуковиной сам я не очень программист - то welcom wink.gif .

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

Цитата(Warstone @ 6.1.2015, 6:34) *

А можно я предложу компиляцию?..

А вообще - вы всегда можете перехватить CreateWindowEx и по классу окна узнать поле-ли это ввода и не создавать его. Насколько я помню компоненты Delphi у них раза 3 копируется текст, прежде чем он появится в SetWindowText (или как оно там зовется).


При помощи ресторатора методом перебора пробую скрыть или уменьшить окно редактора - но пока что все попытки тщетны. Может вы знаете как эти функции вызывающие или отображающие редактор называются. Я как понимаю все настройки лежат в этом (самом большом файле TFMMAIN выгрузил его в открытый доступ может кто поможет найти это https://drive.google.com/file/d/0BzUrtU_8uc...klMdzRjclpjb1U/ )
Warstone
Цитата
А можно ты ее сделаешь?)

Я ее могу сделать. Как я довольно давно уже говорил - у пилота структурные проблемы. Они с парсером, со... всем. Там надо передумывать многое (не все, сразу скажу).
Warstone
Есть 2 варианта...
1) Кнайт, подскажи - поле редактирования клиента создается в рантайме, да? Его в дизайнере нету-же, правда?
2) Если есть, то скорее всего вам надо химичить с этим кодом:
Код
object mmoText: TMemo
      Left = 8
      Top = 8
      Width = 417
      Height = 47
      TabOrder = 0
    end
Но не уверен. Я-бы считал что там 1е. Если первое, то в этих файлах вы не найдете того, что ищете.
Cockney
не обязательно же пихать в пилот,можно компилятор вынести в отдельный модуль

Moonfawn, клиент-сервер способен защитить все куда надежнее,если использовать шифрование,то получить скрипт как из трафика так и из памяти уже почти нереально, скрипт будет построчно грузиться построчно и сразу выполняться(либо сразу целиком), доступ осуществляется по предварительно зарегестрированному ключу(к железу привязка),и в итоге получается что ни скопировать ни отдать этот скрипт никому не получится. и главное - это не требует огромных трудозатрат, и + коммисия в карман кнайту за место под скрипт на сервере
Moonfawn
Цитата(Warstone @ 6.1.2015, 14:36) *

2) Если есть, то скорее всего вам надо химичить с этим кодом:
Код
object mmoText: TMemo
      Left = 8
      Top = 8
      Width = 417
      Height = 47
      TabOrder = 0
    end


Спасибо!
Попробовал поменять эти значения несколько раз ни как не реагирует редактор на них .

Так же решил попробовать воздействовать на шрифт редактора (попытавшись выудить его местонахождение в этом файле) поменяв Microsoft Sans на Impact во всех возможных значениях - на редактор тоже не повлияло.
Warstone
Цитата(Cockney @ 6.1.2015, 14:49) *
получить скрипт как из трафика так и из памяти уже почти нереально
Как 2 пальца, если дибилы писали. Проверено.
Cockney
ну получить можно иероглифы, а дальше то что?
Warstone
Я-то текст получу.

Просто потому что будет место, когда код в открытом виде будет передан инструменту выполнения.

А вот если компилировать, то текста не будет. Что я и предлагал
Cockney
ну это как закрыть это место...
Warstone
IDA все вскроет.
Moonfawn
Цитата(Warstone @ 6.1.2015, 23:05) *

IDA все вскроет.

Вообщем провозился с попыткой скрыть текст скрипта целый день, ничего не вышло. Завтра еще рога поломаю, но я уже к вечеру начал думать а черт бы с ним - продавать так в открытом виде и с комментариями - пускай учатся и пользоваться фотошопами для определения координат и цветов, вкуривают мануалы и юзают поиск smile.gif
Cockney
так почему не напишите компилятор?
WKnight
Цитата
1) Кнайт, подскажи - поле редактирования клиента создается в рантайме, да? Его в дизайнере нету-же, правда?
Кстати да...

Шрифт для редактора берется из конфига.
zvzead86rus
всем Ку, подобную тему тоже создал, но мне сразу сказали "НЕТ" тут я почитал и понимаю что всё таки несколько вариантов для защиты скрипта есть. Поддержу тех кто заявляет то что те кто взломают защиту могут и сами скрипт написать. Достаточно защиты от чайников, хотя бы так чтобы скрипт было видно но если текст скрипта скопировать и передать другому что бы не работало. пускай это будет 1 строчка в которой нужно будет вписать свои цифарки((символы) уже хорошо, многие даже до туда не дойдут! Из того что вы написали не всё понятно, точнее почти ничего не понятно)))) но вот был вариант считать реестр и сравнить, хотя бы как это сделать подскажите! какие команды , что читать, пример если можно.
P.S. спасибо DarkMaster что подсказал эту тему
Cockney
сами ничего вы не сделаете,нужно пилот сам править
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.