Здравствуйте, господа кодеры. Давно интересовал вопрос, как эмулируется код сервера на стороне клиента и как клиент получает всю информацию о игре. Каким образом происходит авторизация? Я заметил только лишь то, что клиент отправляет серверу свой login, key, ctime, а где же ckey, каким пакетом отправляется - неизвестно.
BYONDLib Development
Автор: canvas123 · 27.02.2017, 01:16 · 56 сообщений
Сообщений в теме: 56
ты чё, пароли от бъендов попиздить собрался?
C таким вопросом я бы сразу шёл на официальные форумы бьонда. Возможно там уже есть ответ на твой вопрос.
Key и есть ckey. Просто ckey к нижнему регистру приведен. Но это в коде, не факт, что в пакетах так же.
Wireshark, не?
Masturbator (26 February 2017 - 17:12) писал:ты чё, пароли от бъендов попиздить собрался?
Планировал немного другим заниматься
Loly (26 February 2017 - 18:58) писал:C таким вопросом я бы сразу шёл на официальные форумы бьонда. Возможно там уже есть ответ на твой вопрос.
Согласно лицензионному соглашению BYOND, никто мне там такую информацию предоставить не имеет право.
HONKERTRON (26 February 2017 - 19:05) писал:Key и есть ckey. Просто ckey к нижнему регистру приведен. Но это в коде, не факт, что в пакетах так же.
Вы путаете, ckey - генерируется исходя из конфигураций компьютера
Lalka (26 February 2017 - 19:33) писал:Wireshark, не?
Не думаю, что WireShark поможет разобрать RAW пакеты WinSocketa.
nurik040404 (26 February 2017 - 16:16) писал:Здравствуйте, господа кодеры. Давно интересовал вопрос, как эмулируется код сервера на стороне клиента и как клиент получает всю информацию о игре. Каким образом происходит авторизация? Я заметил только лишь то, что клиент отправляет серверу свой login, key, ctime, а где же ckey, каким пакетом отправляется - неизвестно.
есть мнение что очень многое отправляется не "при старте" а уже "в процессе". т.е. конфиги железа выдираются и отправляются не "по умолчанию", а уже либо средствами игры, либо средствами бионда вшитыми в игру. косвенно на это же может указывать то что клиент достаточно активно юзает жабу, штмл и даже флэш.
13097 (27 February 2017 - 00:46) писал:есть мнение что очень многое отправляется не "при старте" а уже "в процессе". т.е. конфиги железа выдираются и отправляются не "по умолчанию", а уже либо средствами игры, либо средствами бионда вшитыми в игру. косвенно на это же может указывать то что клиент достаточно активно юзает жабу, штмл и даже флэш.
Ну чтож, методом тыкания хуем в небеса, а так же с помощью умений обращения с памятью, было выяснено, что эта хуйня базарит с юзером таки и посреди игрового процесса, а в частности получение computer_id происходит рандомно, но он все таки спалился

Плиз репорт хир 'боут эни ньюс
Я тут глянул, клиент при подключении частенько глядит на мой жесткий диск.

Товарищи, GetVolumeInformation .

Заглянем в сорсец ByondCore.dll по ссылкам на GetVolumeInformation.
Бац.

Параметр lpVolumeSerialNumber насколько мы видим, является указателем на внешнюю переменную, значит ID нашего жесткача возвращается результатом из этой функции, а вызовов этой функции в DreamSeeker-e ОООЧЕНЬ МНОГО! Да, и в основном они связаны с авторизацией на сервере. Т.е. для того, чтобы подделать computer_id достаточно инжектировать DLL в игру, которая хуканет функцию GetVolumeInformation, затем подделает результат этой функции и все, вуаля доступ на сервер открыт!
Планирую добавить все фичи ByondCore в мою библиотеку ByondAPI, там пока говно-код на плюсах, но сейчас проходит стадия исследования.
ПАЦАНЫ НЕ ВЕДИТЕСЬ, ОН ЧИТЫ ДЕЛАЕТ, БАНЫ ОБХОДИТЬ, НЕ РАСПРОСТРАНЯЙТЕ ССЫЛКУ НА ЭТОТ ИТТ ТРЕД
Кинь сорцы бульёнда если не сложно
jackerZz (27 February 2017 - 12:00) писал:Кинь сорцы бульёнда если не сложно
К сожалению, в Open Source виде их нет, поэтому вы можете достать их сами, в папке с Byondом есть файл ByondCore.dll , в нем заэкспортированы все функции BYOND
nurik040404 (27 February 2017 - 11:44) писал:
Обход через длл не новый. Раньше работал, но тгшники создали систему для распознавания длл. Сначала идет один коннект, он обрывается, после чего идет второй. Если твой компуктер_ид поменялся - тебе пизда.
fey (27 February 2017 - 11:57) писал:Содержимое цитаты отсутствует в сохранённом тексте.
Все исключительно в научных целях, хехе
Думаю это многим поможет, ведь я разрабатываю библиотеку для работы с функциями BYOND
А вообще обычно авторизация в таких вещах делается следующим образом: клиент авторизируется в клиентском сервере бульенда и получает код своей сессии, которая сохраняется на клиент-сервере. Когда клиент пытается зайти на какой-то сервер, то он скидывает серверу свой сикей и номер сессии. В случае если отправленный клиентом и хранящийся на клиент-сервере код сессии совпадают, то клиент попадает на сервер. Это я к тому, что зайти под другим сикеем не получится, если ты сделать это хотел
ochen_bombanyTI (27 February 2017 - 12:02) писал:Обход через длл не новый. Раньше работал, но тгшники создали систему для распознавания длл. Сначала идет один коннект, он обрывается, после чего идет второй. Если твой компуктер_ид поменялся - тебе пизда.
К счастью, это не проблема, тебе не нужно заменять DLL библиотеки сокетов, так что все будет чистенько
ochen_bombanyTI (27 February 2017 - 12:02) писал:Обход через длл не новый. Раньше работал, но тгшники создали систему для распознавания длл. Сначала идет один коннект, он обрывается, после чего идет второй. Если твой компуктер_ид поменялся - тебе пизда.
Никто не мешает в обоих случаях использовать одинаковый компуктер_ид
jackerZz (27 February 2017 - 12:04) писал:А вообще обычно авторизация в таких вещах делается следующим образом: клиент авторизируется в клиентском сервере бульенда и получает код своей сессии, которая сохраняется на клиент-сервере. Когда клиент пытается зайти на какой-то сервер, то он скидывает серверу свой сикей и номер сессии. В случае если отправленный клиентом и хранящийся на клиент-сервере код сессии совпадают, то клиент попадает на сервер. Это я к тому, что зайти под другим сикеем не получится, если ты сделать это хотел
Не думаю, что с сикеем ничего не получится, да и к тому же, я к такой цели не шел.
jackerZz (27 February 2017 - 12:04) писал:А вообще обычно авторизация в таких вещах делается следующим образом: клиент авторизируется в клиентском сервере бульенда и получает код своей сессии, которая сохраняется на клиент-сервере. Когда клиент пытается зайти на какой-то сервер, то он скидывает серверу свой сикей и номер сессии. В случае если отправленный клиентом и хранящийся на клиент-сервере код сессии совпадают, то клиент попадает на сервер. Это я к тому, что зайти под другим сикеем не получится, если ты сделать это хотел

В любом случае, у меня все это в распоряжении.
nurik040404 (27 February 2017 - 12:04) писал:Все исключительно в научных целях, хехе
Думаю это многим поможет, ведь я разрабатываю
для работы с функциями BYOND
Ну напиши софтину, чтобы эмулировала компьютер ID на ненастоящий. А то мне лень с виртуалкой возиться, а на семерке не робит программа нужная :с
fey (27 February 2017 - 12:16) писал:Ну напиши софтину, чтобы эмулировала компьютер ID на ненастоящий. А то мне лень с виртуалкой возиться, а на семерке не робит программа нужная :с
Следи за репозиторием, а так же за этой темой, возможно в скором будущем сделаю, как основной функционал запилю
Я конечно далеко не спец в ваших хакерских делах, никогда такого не делал, но все таки думаю, что проще было бы подменять сид в пакетах
Продолжайте, все это очень занимательно
jackerZz (27 February 2017 - 12:36) писал:Я конечно далеко не спец в ваших хакерских делах, никогда такого не делал, но все таки думаю, что проще было бы подменять сид в пакетах
Но и задача моя не сконцентрирована только на подмене сида, к тому же разобрать RAW-пакет дело третье.
