Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Приветствую форумчане. Пока мой аккаунт ждет проверки модератором на неософт корп (если пустят) хотел бы пообщаться с вами на эту тему. Хоть тут и не сильно пахнет активностью, надеюсь кто-то из высоких умов найдет этот пост.проблема заключается в практическом примере. ------------------ Есть программа - лаунчер, одной интересной игры minecraft наверное некоторые ее знают. Я пишу лаунчер с неплохими "плюшками" как для лаунчера такой игры (Мультиклиентность, загрузка скинов и прочее) но столкнулся с проблемой. Для обеспечения защиты в некоторых местах я использую авторизацию и сравнение хешей файлов игры чтобы игроки не делали того чего мы (администраторы серверов Minecraft (собственно для чего лаунчер и пишется) часто избегаем и усложняем пути к читерству) Все казалось сказочным, NeoBook я знаю может и нехорошо но реализовать в нем то что мне нужно могу часами посидевши за проектом с несколькими крушками кофе можно. Я уже чуть было не настроил куча планов что и как сделать в этом лаунчере и вроде программно неплохо обустроил безопастность. И тут началось. Черт меня дернул открыть Che@tEngine и просмотреть с него возможность поиска текстовых данных, следовательно зашел в раздел memory view и чуть не упал со стула Код голый как сфинкс на морозе! Ну может почти, причем мне удалось не только взглянуть на код движка программы но и высмотреть пароль подключения к базе MySQL где есть списки логинов и хеши паролей игроков которые напервое время будут авторизовываться для смены игрового скина и в будущем входа в игру только по логину и паролю. Одним словом все прозрачно НЕ смотря на то что первые три опции, а именно - Компиляция данных внутрь проекта (сжатие) - Сжатие и шифрование исходного кода проекта - Упаковка проекта upx'ом И несмотря на это даже такая извиняюсь "ХРЕНЬ" произошла. Я знаю что я не открыл кому-то мир. У меня другой вопрос - как защититься от такого? В NeoBook я понимаю намного больше и лутше чем где - либо вообще, были планы даже на лицензию) признаюсь) Неужели так сложно было хотябы внутренним ключем зашифровать исходник в памяти или сконвертировать его в нечетабительный вид?! Большинство игроков в Minecraft - школьники, им не составит труда сделать как я.... Тем более что в том же самом CheatEngine память легкл модифицируется. Так и проверку по хешам и авторизацию легко отсобачить Что делать, господа? У кого-то может голова светлее? Только без фатальностей плз, учить другой эзик не хочу пока что)
Добавлено (16 Августа 2013, 23:48) --------------------------------------------- Помарочка-с Одним словом все прозрачно НЕ смотря на то что первые три опции, а именно - Компиляция данных внутрь проекта (сжатие) - Сжатие и шифрование исходного кода проекта - Упаковка проекта upx'ом Были задействованы... а оно видно до одного места. ------------------------------- Пытался запаковть exe упаковщиком, но они ориентированы на код самых распространненых языков и exe мой как правило отказывался работать, либо писал об ошибке чтения секции ресурсов. Боже как такую дыру допускать то можно)... читал тут на форуме... нет у них декомпилятора... угу, сиди с блокнотом и декомпилируй на здоровье
На что только геймеры не идут ради прохождения "очередного уровня"! Даже "хакерствовать" пытаются - читеры всякие пишут.
О-хо-хо...
Ну что ж... В том, что код NB-проекта лежит в памяти ПК "голый как на морозе", нет ничего удивительного, поскольку сам проект представляет из себя обычный текстовый файл, который "читается" при запуске приложения, и на основе прочитанного формируется вся функцилнальность приложения, и далее в работу вступает, либо упакованный в ЕХЕ, либо лежащий рядом, NBPlayer. В NB все работает на основе обработки текстовой информации, а не машинного кода (как и у всех скриптовых языков), и потому ничего удивительного в том, что все это "добро" лежит на виду. По большому счету, упаковщики (именно - упаковщики) не дают абсолютно никакой защиты, т.к. идея предельно проста - если "код" упакован, то для его выполнения он должен быть предварительно распакован, и поэтому достаточно... Ликбез по хакерству не на этом ресурсе!!! Упаковщики предназначены только для сжатия (уменьшения размера) файла. Для защиты программ существуют специальные программы-протекторы, и работают они гораздо хитрее упаковщиков. Но, за этими всеми вопросами, и ответами на них - на соответствующие ресурсы!
Что касается конкретно NeoBook, то сами разработчики специально подчеркивали, что моглы бы создать защиту, но это была бы только видимость, и для реальной защиты проекта нужно использовать сторонние протекторы, и конкретно назвали - Armadillo. Насколько успешно Armadillo защищает необушные экзешники я сказать не могу, т.к. не проверял, но то, что Armadillo корректно упаковывает их, проверено.
Правда, не все так безнадежно, и, потенциально, можно создать плагин, который будет выполнять зашифрованные NB-скрипты, но полностью зашифровать код исходника все-равно не получится, и, при большом желании, можно будет найти лазейку.
Вот, если коротко...
Когда автор темы ознакомится с сообщением, тема будет удалена!!!! - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Как мы все знаем идеальной защиты нет. Во первых нужно знать что искать. Я допустим открыл эту программу, запустил свой файл, и понятия не имею куда лезть смотреть.
Вообще на этот вопрос только разработчики наверно смогут ответить. Не хочешь читать хелп?
Я допустим открыл эту программу, запустил свой файл, и понятия не имею куда лезть смотреть.
Даже подавляющее большинство геймеров-читеров, кроме автора файла, не сообразит, что именно надо искать. И для этого надо ещё и язык NeoBook хоть немного знать. Так-что не парься с защитами, и живи спокойно!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Приогромнейшее спасибо за ответ Ждал светлую голову а тут аж две!
Цитата (Peter)
В том, что код NB-проекта лежит в памяти ПК "голый как на морозе"...
Я догадывался то что есть движок и туда заливается текст, вы подтвердили догадки.
Цитата (Peter)
По большому счету, упаковщики (именно - упаковщики) не дают абсолютно никакой защиты...
Оказывается не в ту степь смотрел. Но я так подумал, некоторое ПО умудряется запускать исходный проект из самого себя без извлечения на диск.
Цитата (Peter)
Для защиты программ существуют специальные программы-протекторы, и работают они гораздо хитрее упаковщиков.
ВОТ ОНО! Я какие толкьо слова не копал, Упаковщик, криптор, шифровщик, немог найти то что нужно, вот - протектор мне искать надо. А вот это название:
Цитата (Peter)
Armadillo.
Я где-то встречал и не мог вспомнить, спасибо за подсказку!
Цитата (Peter)
можно создать плагин, который будет выполнять зашифрованные NB-скрипты
Ооо класс, я такой только и ждал бы. У меня вобще была идея поместить часть кода в переменную к примеру [data_3] и в нее засунуть шифрованный код считанный откудато, скажем из dll (если мне память не изменяет вроде гдето был плагин на вызовы функций из динамических библиотек) а потом если предполагается использование объекта загрузить данные шифрованного скрипта откудато в переменную и разшифровать содержимое переменной к примеру тем самым NeoClipher (как-то так). Хотел еще както Переменные о.б.с.ф.у.ц.и.р.о.в.а.т.ь прогнав другой написанной програмой, но столкнулся с проблемой парсера и динамической переменной [data_[number]]. Чтото понесло) ---------------------
Цитата (mishem)
Как мы все знаем идеальной защиты нет. Во первых нужно знать что искать. Я допустим открыл эту программу, запустил свой файл, и понятия не имею куда лезть смотреть
Вы правы! Не каждый поймет что к чему. Просто я как изобретатель колес и велосипедов (я просто редко пользуюсь справкой, но опыта не мало, что радует) не допустил бы поиск данных в памяти распакованного exe. Как я говрил выше, попробую загружать важные строки как шифрованные переменные которые разшифруются, используются, и обнуляться. -------------------------------
Цитата (Peter)
Когда автор темы ознакомится с сообщением, тема будет удалена!!!!
Конечно конечно, информация что здесь есть несет не очень полезный характер если ей неверно воспользоваться. Спасибо вам за ответы! Пошел копать в сторону протекторов
Добавлено (17 Августа 2013, 05:25) --------------------------------------------- offtop: Щас только сеть настрою и можно работать... вам какую операционку ставить... Интересно сначала сеть настраивается, или операционка ставиться))) да.. хр да... Все такие в теме))
Это все-равно мало поможет, т.к. плагин просто отправляет скрипт в интерпретатор, и скрипт этот должен быть рашифрован предварительно (иначе интерпретатор нихрена не поймет ), и этот момент можно будет отловить, и прочесть текст.
Но, это все в отладчике, а живьем-то что? Каждый раз читер запускать и искать? Ради чего?
Сначала надо создать такую программу, которую кто-нибудь захочет сломать, а потом уже думать о защите!
Каждый раз, когда поднимаются подобные вопросы, я вспоминаю одно послание хакера автору сломанной программы (была такая программка по скачиванию картинок из сети лет десять назад). Хакер пишет (близко к тексту):
Цитата
Олег (я даже имя атора программы запомнил), я сломал твою программу для того, чтобы показать, что 100-процентыных защит не существует, У тебя сейчас защиты больше, чем самой программы , и эта защита напроч оторвала у программы руки (а там, действительно ограничения в демо-версии были просто жуткие). Ты лучше программу развивай, а защиту, кому понадобится, все-равно сломают!
И с этим трудно не согласиться.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Я согласен, просто самая элементарка должна быть, школьники не будут возиться с диссеземблерами отладчиками и прочей PE тузлами. Хотябы сделать так,... короче знать меру надо судя из послания хакера. ---------------------- Кстати Армадилла - это оказался движок на котром работает протектор Software Passport Я его посмотрел... Просто самая настоящая жуть а не протектор. Ну ладно там +2 мб инфы, зато тех строк цоторые я видел уже не находятся а на максимально уровне защиты да.. +5 мб данных но OllyDbg и чит енжин вылетают. Так что добиться той несчитываемости удалось за счет софтины) ... и все таки я подумаю сделать объект с переменной [data_3] вместо кода, посмотрим как получиться скрывать зашифрованный код ведь по дефолту, выковырять значение переменных из проекта для меня оказалось задачкой посложнее. Так ну задача ясна, сделать маломальски. а если кто-то включит кулхацкера то будем как все - нардным методом латать дыры. Эээээх а нормальные люди используют лаунчеры на java. А я кулибин блин) Правда паблик лаунчеры тоже имеют кучу недостатков а приватные около ти ысячи ублей) I will alive before dead
Я давно не кавырял Armadillo (да и кавырял раньше чисто из интереса), но тогда он цеплял к файлу порядка мегабайта при средней степени защиты. Может он и "жуткий" (это - протектор, а не упаковщик), но считается самым надежным. За все приходится платить! Его и по сей день полноценно сломать не могут, хоть и сломали до более-менее работоспособного состояния.
Я как-то общался в сети на эту тему с одним хакером лет 6 назад, Тот сказал, что у Армы действительно очень сильная защита, и каждый файл ломать нужно индивидуально.
Кстати, NeoBook сама упакована Armadillo.
Цитата (UserDead)
это оказался движок на котром работает протектор Software Passport
Да, это новое (относительно) название протектора. Первоначально было - Armadillo. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
А вот это интересно, спасибо - покапаем -------------------
Цитата (Peter)
полноценно сломать не могут,
Это уж точно) Заметил как его на форумах обсуждали. Я понял. Я имел ввиду жуткий комбайн как для приложения своего рода, столько всего я и не рахобрался с ходу. -------------- Кстати попробовал я сделать пдставляющийся скрипт котрый разшифровуется. К примеру у нас на кнопке что-то вроде этого. FileRead "C:\1.txt" "all" "[data] NeoStringClipher "[data]" "[data]" "1010" "3" "5" [data]
По идее считанные данные из файла 1.txt должны поместиться в переменнную и разшифроваться и собственно промодулировать сдедующие стоки после clipher'а (я проверил переменная [data] уже имела правильный разшифрованный скрипт. По идее вместо [data] должен быть скрипт, а он знаете что мне пишет?! I Don't understand this command :E Вместо того чтобы считать переменную в которой коммандный поток он воспринимает переменную как комманду... ну чтож бывает, тест провален.
Покопаю в сторону hpwPlayAction но и поюзать Software Passport можно будет. Спасибо вам еще раз за наведение на путь истинныйъ Всех благ! I will alive before dead
Что то мне сейчас подумалось... Есть плагины которые могут писать информацию в jpg файлы и так же от туда ее читать. Пожалуйста, делай картинки для проги, или для кнопок и читай из этих же картинок инфу какая тебе нужна. Уж малолетки точно не догадаются.
Или закинь файлы в зип архив, запароль, а после оттуда читай. Блин, да вариантов море как всегда, нужно просто немного напрячься.
Цитата (UserDead)
Хоть тут и не сильно пахнет активностью
Практически вся инфа уже на форуме есть. Сиди только читай. Тут последнее время активно только обсуждали говно 7ка или не говно. Видать всем надоело. Прекратили. А больше пока нечего обсуждать. А так, заходи. Мы всегда тут. Не хочешь читать хелп?
Блин, да вариантов море как всегда, нужно просто немного напрячься.
Это точно, можно все так замудрить что и не догадаешься сразу, главное чтобы это в паранойю не превратилось а то жесть будет -------
Цитата (mishem)
А больше пока нечего обсуждать. А так, заходи. Мы всегда тут.
Отлично! Есть место где можно помсоветоваться, а то бывает заступоришься и... (как гриться одна голова хорошо, а две - три лутше! I will alive before dead
Вкусная тема, но рассмотрим частности. Разумеется, в любом случае хранить в hardcoded (жестко и открыто прописанном) виде строковые приватные данные, пароли, строки коннекта к бд в исходнике просто нельзя, независимо от средства программирования, никогда. Вместе с этим, хакер загрузивший ваш проект (да вообще любую программу, неважно на чем написанную, далее так и будем предполагать, это касается не только нб проектов) под дебаггером (если вы не навесили никакой защиты) все-таки увидит содержимое памяти. Но! Что он увидит? Он будет работать с адресами ячеек памяти, их содержимым и инструкциями кода. Чтобы сложить из этого цельную картинку логики программы, нужно обладать хорошим опытом и пониманием происходящего, а лучше сразу победить в битве экстрасенсов. Это я про хороших хакеров, способных к анализу, а не про школохацкеров которые могут максимум открыть олик и провести поиск по стрингам. И потом, он увидит состояние памяти только в выбранный им момент времени (брейкпоинт). Чтобы такого не происходило, нельзя чтобы строки находились в открытом виде. Что делать? - хранить кусочки строки в разных местах (переменных) и собирать их непосредственно перед использованием, затем сразу удалять сборку. - вообще не допускать, чтобы данные болтались в памяти постоянно и были доступны в любой момент времени, записывайте их в переменную перед использованием, потом сразу удаляйте. - динамически формировать строки, кусочки в результате хитроумных процедур, на основе других данных, которые пускай лежат открыто. - усложнить жизнь хакеру, насрав тонну переменных в память с похожим на защищаемое содержимым, бесполезных процедур их использующих, симулирующих работу, возможно в процессе какой-то из них получая истинное значение и т.д. Чтоб он кофе захлебнулся разбирая все это. - шифрование/дешифрование на лету переменных, файлов с чтением инфы оттуда. - использование средств Crypto/DPAPI
Кое-что из этого можно сообразить в нб, но все таки для подобных вещей логично хоть попросить чтоли простенький плагин наваять, его хоть декомпилировать бестолку и исходник в отличие от нб недоступен.
ЦитатаUserDead ()
Одним словом все прозрачно НЕ смотря на то что первые три опции, а именно