Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
  • Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Алгоритм системы обновления клиента игры(лаунчера)

Статус
Закрыто для дальнейших ответов.
:fp: после установке java создается переменная среда. И java стартует по команде java или start java. Ну на крайняк сделать как у w4p лаунчер качает java в свою папку и от туда ее юзает.
Во первых не всегда устанавливается переменная среды, а если в системе установлена несколько Java? а если в переменной окружения путь до 32 битной Java а мне нужно запустить 64 которое тоже установлена?, нахрена скачивать java если она установлена? Идеальный путь это поиск всех установленных java в реестре, и выбор из всех найденых java наиболее приоритетную, скажем наиболее свежую версию с разрядностью x64 или x32 в зависимости от разрядности ОС
 
Во первых не всегда устанавливается переменная среды, а если в системе установлена несколько Java? а если в переменной окружения путь до 32 битной Java а мне нужно запустить 64 которое тоже установлена?, нахрена скачивать java если она установлена? Идеальный путь это поиск всех установленных java в реестре, и выбор из всех найденых java наиболее приоритетную, скажем наиболее свежую версию с разрядностью x64 или x32 в зависимости от разрядности ОС
Ну тогда иди сложным путем. поиск явы сперва в %PROGRAMFILES%/1 директории патом в %PROGRAMFILES%/2 и тд.
Я же предложил короткий путь. Лаунчер качает java и никаких проблем. Да и майну 1 гб памяти хватает. А без переменной среды все равно придется указывать полный путь.
 
Без переменной среды можно искать в реестре, это более надежный путь. 1 гб не хватить если текстуры ставить
 
Без переменной среды можно искать в реестре, это более надежный путь. 1 гб не хватить если текстуры ставить
Так почему же еще никто не придумал по реестру? Видимо не все так просто. Да и все игры проги создают переменную для правильной работы.
 
А что там такого сложного? Диспетчер установленных программ по твоему откуда записи берет? Не реализуют потому что лень
 
Ято реализовал, просто мне стыдно за свой код. Хотел посмотреть как другие справились с этой задачей
 
alexandrage сказал(а):
после установке java создается переменная среда
Переменная среды окружения JAVA_HOME, ага. Но у некоторых она всё-же не выставлена: сейчас глянул - у меня нету. ^^

foxquiz, Ты кстате реализовал алгоритм поиска установленной Java?
На самом деле, тупо ищу в реестре экс-сановую яву (Software\JavaSoft\Java Runtime Environment), пытаюсь 64-битную, если нету - 32-битную. Заодно версию смотрю, чтобы предупредить, если совсем 6-я.

P.S. Оу, не сразу заметил вторую страницу обсуждения.^^ Ну, впринципе, да, надо будет потом добавить поиск других ява-машин, хотя не думаю, что из альтернативных будет что-то кроме OpenJDK.
 
Насчет защиты от читов, если возможно каким-либо образом изменить (дополнить) папку META-INF и сделать на неё проверку. Нету папки - бан, есть - го в игру.
:fp: после установке java создается переменная среда. И java стартует по команде java или start java. Ну на крайняк сделать как у w4p лаунчер качает java в свою папку и от туда ее юзает.
после установки java так же можно просто написать javaw
 
Переменная среды окружения JAVA_HOME, ага. Но у некоторых она всё-же не выставлена: сейчас глянул - у меня нету. ^^
Тут скорее вариант с переменной PATH обсуждался.
P.S. Оу, не сразу заметил вторую страницу обсуждения.^^ Ну, впринципе, да, надо будет потом добавить поиск других ява-машин, хотя не думаю, что из альтернативных будет что-то кроме OpenJDK.
Я имел ввиду разные версии по такому приоритету jre 6u31 < jdk 6u31 < jre 7u10 < jdk 7u16 < jre 7u17 < jre 8 и тд Но там есть проблема, единственный способ определить версию Java это смотреть в реестре поля Version VersionMajor и VersionMinor, но там настояший бордак у Oracle.

ЗЫ Я искал в списке установленных программ Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall
 
Тут скорее вариант с переменной PATH обсуждался.
Я имел ввиду разные версии по такому приоритету jre 6u31 < jdk 6u31 < jre 7u10 < jdk 7u16 < jre 7u17 < jre 8 и тд Но там есть проблема, единственный способ определить версию Java это смотреть в реестре поля Version VersionMajor и VersionMinor, но там настояший бордак у Oracle.

ЗЫ Я искал в списке установленных программ Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall
У меня в "Software\JavaSoft\Java Runtime Environment" есть CurrentVersion и Java7FamilyVersion (надеюсь что у других версий будет называться Java<CurrentVersion>FamilyVersion). Вывожу на экран Java<CurrentVersion>FamilyVersion, а проверяю только CurrentVersion, чтобы если старее 7-й предупредить.

Racvol, Понемногу подумываю выложить лаунчер, настройка идет из конфигов (либо можно скормить их локально, либо зарегистрироваться - тогда будет у любой копии лаунчера показываться указанный сервер в листе проектов), перекомпилировать лаунчер не нужно.
Ну и утилиту для администраторов - для получения отчетов от игроков и настройки тех самых конфигов (они, собственно, и есть - параметры обновления, черный белый список модов и т.п.): поставил мод, сделал пару кликов - лаунчер у клиентов обновился с учетом "разрешенности" данного мода. Таким образом, даже коты смогут держать сервера игры. ^^
Сам в майнкрафт почти не играл, не знаю и примерную аудиторию администраторов, как думаете, будет востребовано?
 
Понятное дело что от опытного асемблеровшика ничто не спасет, он способен провести инжиниринг любого приложения. По поводу файлов и нулевого кольца, я думаю будет достаточно просто заблокировать все файлы своим процессом при старте. А что он сможет увидеть в памяти? Ключ? Для него это будет поток байтов, его нужно в процессе найти, отыскать алгоритм его обработки на асемблер, написать свою программу которая будет обманывать сервер и слать подложные ответы, короче гемороя не на один месяц. При том в любой момент я могу поменять алгоритм для профилактики

Написание программы для обмана сервера , может занять меньше недели.Главное понять суть авторизации. Хорошенько смотрим авторизацию , пилим на php свою (Альтернативную) , кидаем на свой сайт , правим клиент под себя , и вуаля ! Мы с читами на сервере. Один Парень уже так сделал , и играет с читами на всех ТОП-ых проектах .;)
 
Написание программы для обмана сервера , может занять меньше недели.Главное понять суть авторизации. Хорошенько смотрим авторизацию , пилим на php свою (Альтернативную) , кидаем на свой сайт , правим клиент под себя , и вуаля ! Мы с читами на сервере. Один Парень уже так сделал , и играет с читами на всех ТОП-ых проектах .;)

:fp: бред написал. Если ты подключишь свои скрипты получиш fayled to verify username :fp:
 
@Racvol, На счет java. Лучше чтоб лаунчер качал свою. java тоже можно пересобрать и обмануть все проверки :trf: .
 
Он не бред написал. Так и делают.
Ну ок попробуй сам :trf:. Вы даже не знаете как авторизация работает :). Если обойти auth и joinserver то ты получишь неверный sessionId и servrId. Сперва изучите как авторизация работает прежде чем бред сочинять.
 
@Racvol, На счет java. Лучше чтоб лаунчер качал свою. java тоже можно пересобрать и обмануть все проверки :trf: .

Её никто кроме oracle не собирает.

Ну ок попробуй сам :trf:. Вы даже не знаете как авторизация работает :). Если обойти auth и joinserver то ты получишь неверный sessionId и servrId. Сперва изучите как авторизация работает прежде чем бред сочинять.
sessionID перехватывается и auth остается в сторонке.
 
А вот реальная уязвимость. Если подправить клиент и сделать serverId постоянным (который можно изменять в класс трансляторе). То можно 1 рас авторизоватся, записав тем самым serverId в бд и патом юзать свой joinserver и отправлять всегда фиксированный serverId :trf:.
Вот тут уже нужен фикс. Чтоб serverId жил скажем 20 сек после записи его в бд.
 
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх