Архив сообщества
2011 — 2019
Аватар canvas123

BYONDLib Development

Автор: canvas123 · 27.02.2017, 01:16 · 56 сообщений

Сообщений в теме: 56

canvas123#1

Здравствуйте, господа кодеры. Давно интересовал вопрос, как эмулируется код сервера на стороне клиента и как клиент получает всю информацию о игре. Каким образом происходит авторизация? Я заметил только лишь то, что клиент отправляет серверу свой login, key, ctime, а где же ckey, каким пакетом отправляется - неизвестно.

Скопировать ссылку
canvas123#6
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.

Скопировать ссылку
13097#7
nurik040404 (26 February 2017 - 16:16) писал:

Здравствуйте, господа кодеры. Давно интересовал вопрос, как эмулируется код сервера на стороне клиента и как клиент получает всю информацию о игре. Каким образом происходит авторизация? Я заметил только лишь то, что клиент отправляет серверу свой login, key, ctime, а где же ckey, каким пакетом отправляется - неизвестно.

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

Скопировать ссылку
canvas123#8
13097 (27 February 2017 - 00:46) писал:

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

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

Изображение

Скопировать ссылку
canvas123#10

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

Изображение

Товарищи, GetVolumeInformation .

Изображение

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

Бац.

Изображение

Параметр lpVolumeSerialNumber насколько мы видим, является указателем на внешнюю переменную, значит ID нашего жесткача возвращается результатом из этой функции, а вызовов этой функции в DreamSeeker-e ОООЧЕНЬ МНОГО! Да, и в основном они связаны с авторизацией на сервере. Т.е. для того, чтобы подделать computer_id достаточно инжектировать DLL в игру, которая хуканет функцию GetVolumeInformation, затем подделает результат этой функции и все, вуаля доступ на сервер открыт!

Планирую добавить все фичи ByondCore в мою библиотеку ByondAPI, там пока говно-код на плюсах, но сейчас проходит стадия исследования.

Скопировать ссылку
canvas123#13
jackerZz (27 February 2017 - 12:00) писал:

Кинь сорцы бульёнда если не сложно

К сожалению, в Open Source виде их нет, поэтому вы можете достать их сами, в папке с Byondом есть файл ByondCore.dll , в нем заэкспортированы все функции BYOND

Скопировать ссылку
BombanyTI#14

nurik040404 (27 February 2017 - 11:44) писал:

Обход через длл не новый. Раньше работал, но тгшники создали систему для распознавания длл. Сначала идет один коннект, он обрывается, после чего идет второй. Если твой компуктер_ид поменялся - тебе пизда.

Скопировать ссылку
canvas123#15
fey (27 February 2017 - 11:57) писал:

Содержимое цитаты отсутствует в сохранённом тексте.

Все исключительно в научных целях, хехе

Думаю это многим поможет, ведь я разрабатываю библиотеку для работы с функциями BYOND

Скопировать ссылку
jackerZz#16

А вообще обычно авторизация в таких вещах делается следующим образом: клиент авторизируется в клиентском сервере бульенда и получает код своей сессии, которая сохраняется на клиент-сервере. Когда клиент пытается зайти на какой-то сервер, то он скидывает серверу свой сикей и номер сессии. В случае если отправленный клиентом и хранящийся на клиент-сервере код сессии совпадают, то клиент попадает на сервер. Это я к тому, что зайти под другим сикеем не получится, если ты сделать это хотел

Скопировать ссылку
canvas123#17
ochen_bombanyTI (27 February 2017 - 12:02) писал:

Обход через длл не новый. Раньше работал, но тгшники создали систему для распознавания длл. Сначала идет один коннект, он обрывается, после чего идет второй. Если твой компуктер_ид поменялся - тебе пизда.

К счастью, это не проблема, тебе не нужно заменять DLL библиотеки сокетов, так что все будет чистенько

Скопировать ссылку
jackerZz#18
ochen_bombanyTI (27 February 2017 - 12:02) писал:

Обход через длл не новый. Раньше работал, но тгшники создали систему для распознавания длл. Сначала идет один коннект, он обрывается, после чего идет второй. Если твой компуктер_ид поменялся - тебе пизда.

Никто не мешает в обоих случаях использовать одинаковый компуктер_ид

Скопировать ссылку
canvas123#19
jackerZz (27 February 2017 - 12:04) писал:

А вообще обычно авторизация в таких вещах делается следующим образом: клиент авторизируется в клиентском сервере бульенда и получает код своей сессии, которая сохраняется на клиент-сервере. Когда клиент пытается зайти на какой-то сервер, то он скидывает серверу свой сикей и номер сессии. В случае если отправленный клиентом и хранящийся на клиент-сервере код сессии совпадают, то клиент попадает на сервер. Это я к тому, что зайти под другим сикеем не получится, если ты сделать это хотел

Не думаю, что с сикеем ничего не получится, да и к тому же, я к такой цели не шел.

Скопировать ссылку
canvas123#20
jackerZz (27 February 2017 - 12:04) писал:

А вообще обычно авторизация в таких вещах делается следующим образом: клиент авторизируется в клиентском сервере бульенда и получает код своей сессии, которая сохраняется на клиент-сервере. Когда клиент пытается зайти на какой-то сервер, то он скидывает серверу свой сикей и номер сессии. В случае если отправленный клиентом и хранящийся на клиент-сервере код сессии совпадают, то клиент попадает на сервер. Это я к тому, что зайти под другим сикеем не получится, если ты сделать это хотел

Изображение

В любом случае, у меня все это в распоряжении.

Скопировать ссылку
fey#21
nurik040404 (27 February 2017 - 12:04) писал:

Все исключительно в научных целях, хехе

Думаю это многим поможет, ведь я разрабатываю

для работы с функциями BYOND

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

Скопировать ссылку
canvas123#22
fey (27 February 2017 - 12:16) писал:

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

Следи за репозиторием, а так же за этой темой, возможно в скором будущем сделаю, как основной функционал запилю

Скопировать ссылку
jackerZz#23

Я конечно далеко не спец в ваших хакерских делах, никогда такого не делал, но все таки думаю, что проще было бы подменять сид в пакетах

Скопировать ссылку
canvas123#25
jackerZz (27 February 2017 - 12:36) писал:

Я конечно далеко не спец в ваших хакерских делах, никогда такого не делал, но все таки думаю, что проще было бы подменять сид в пакетах

Но и задача моя не сконцентрирована только на подмене сида, к тому же разобрать RAW-пакет дело третье.

Скопировать ссылку

Обратно в Кодинг