ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   разобранные raknet пакеты радмира(crmp) (https://forum.antichat.xyz/showthread.php?t=1457287)

Cake_ 10.11.2022 00:04

прив, еще летом я реверсил основные пакеты для авторизации на сервер через раксамп / взаимодействия с интерфейсом, но желания писать бота уже не было.

так как гении начали продавать это за 15к - заливаю бесплатно. Ниже найдете текстовик который я заполнял во время реверса и функции с отправкой/обработкой пакетов, краткое объяснения шагов захода.

Цитата:


@@packet name: SendDialogResponse
@@type: outbound
[#]parameters:
[1]uint8_t packetId
[2]uint16_t signalType // !!desirable value!! == 2
[3]uint32_t Unk
[4]uint32_t descriptorLength // !!desirable value!! == 16
[5]char descriptor // !!desirable value!! == "OnDialogResponse"
[6]uint32_t Unk
[7]uint32_t Unk
[8]uint16_t Unk
[9]uint16_t button
[10]uint8_t Unk
[11]uint16_t Unk
[12]uint32_t listItem
[13]uint8_t Unk
[14]uint32_t answerbackLength
[15]char answerback

================================================== ================================================== ===============================

@@packet name: SendHardwareSpecifications (Handshake)
@@type: outbound
@@comment: отправляется при получении пакета #34(ID_CONNECTION_REQUEST_ACCEPTED)
[#]parameters: // !!test values!!
[1]uint8_t packetId; // 215
[2]uint16_t signalType; // 1
[3]uint32_t Unk; // 51
[4]uint8_t Unk; // 0
[5]uint32_t str1_length; // 30
[6]char str1; // WD-WCC6Y2XZN97N190449674902806
[7]uint32_t str2_length; // 40
[8]char str2; // 1528FEE466C3A51C875E9D652EFA307F4B7725BE

================================================== ================================================== ======================================

@@packet name: SendAuthenticationQuery
@@type: outbound
@@comment: отправляется при нажатии кнопки подключения(с ввёденым паролем в инпут боксе)
[#]parameters: // !!test values!!
[1]uint8_t packetId; // 215
[2]uint16_t signalType; // 2
[3]uint32_t Unk; // 0
[4]uint32_t descriptor_length; // 18
[5]char descriptor; // OnPlayerStartLogin
[6]uint32_t Unk; // 2
[7]uint8_t Unk; // 115
[8]uint32_t str_pass_length; // 6
[9]char str_pass[6]; // 123123

================================================== ================================================== ======================================

@@packet name: ConfirmBrowserInitialization
@@type: outbound
@@comment: отправляется после Handshake'а
[#]parameters: // !!test values!!
[1]uint8_t packetId // 215
[2]uint16_t signalType // 2
[3]uint32_t Unk // 0
[4]uint32_t descriptor_length // 22
[5]char descriptor // EndedInitializeBrowser
[6]uint32_t unk // 0

================================================== ================================================== ===============================

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

сниппеты использования:





Код:

#define ID_RADMIR_MESSAGE    215
// processnetwork
case
ID_RADMIR_MESSAGE
:
Packet_RadmirMsg
(
pkt
)
;
break
;
void
CBot
::
Packet_RadmirMsg
(
Packet
*
p
)
{
RakNet
::
BitStream
bsPacket
(
(
unsigned
char
*
)
p
->
data
,
p
->
length
,
false
)
;
uint32_t
uiStrLength
;
char
szStr
[
0x1000
]
;
bsPacket
.
ResetReadPointer
(
)
;
bsPacket
.
IgnoreBits
(
64
)
;
bsPacket
.
Read
(
uiStrLength
)
;
if
(
uiStrLength

Send
(
&
bsData
,
HIGH_PRIORITY
,
UNRELIABLE_SEQUENCED
,
0
)
;
}
// отправляется через 1.5 - 3 сек после получении пакета #34(ID_CONNECTION_REQUEST_ACCEPTED)
void
CChiefBot
::
SendHandshake
(
void
)
{
RakNet
::
BitStream bsHandshake
;
bsHandshake
.
Write
(
(
uint8_t
)
215
)
;
bsHandshake
.
Write
(
(
uint16_t
)
1
)
;
bsHandshake
.
Write
(
(
uint32_t
)
51
)
;
bsHandshake
.
Write
(
(
uint8_t
)
0
)
;
bsHandshake
.
Write
(
(
uint32_t
)
30
)
;
bsHandshake
.
Write
(
"WD-WCC6Y2XZN97N190449674902806"
,
30
)
;
bsHandshake
.
Write
(
(
uint32_t
)
40
)
;
bsHandshake
.
Write
(
"1528FEE466C3A51C875E9D652EFA307F4B7725BE"
,
40
)
;
m_pRakClient
->
Send
(
&
bsHandshake
,
HIGH_PRIORITY
,
RELIABLE
,
NULL
)
;
RakNet
::
BitStream bsBrowser
;
bsBrowser
.
Write
(
(
uint8_t
)
215
)
;
bsBrowser
.
Write
(
(
uint16_t
)
2
)
;
bsBrowser
.
Write
(
(
uint32_t
)
0
)
;
bsBrowser
.
Write
(
(
uint32_t
)
22
)
;
bsBrowser
.
Write
(
"EndedInitializeBrowser"
,
22
)
;
bsBrowser
.
Write
(
(
uint32_t
)
0
)
;
m_pRakClient
->
Send
(
&
bsBrowser
,
HIGH_PRIORITY
,
RELIABLE
,
NULL
)
;
}
// использование в void CBot::Packet_RadmirMsg( Packet* p )
void
CChiefBot
::
SendAuthenticationQuery
(
void
)
{
RakNet
::
BitStream bsAuthQuery
;
bsAuthQuery
.
Write
(
(
uint8_t
)
215
)
;
bsAuthQuery
.
Write
(
(
uint16_t
)
2
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
0
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
18
)
;
bsAuthQuery
.
Write
(
"OnPlayerStartLogin"
,
18
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
2
)
;
bsAuthQuery
.
Write
(
(
uint8_t
)
115
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
6
)
;
bsAuthQuery
.
Write
(
"123123"
,
6
)
;
m_pRakClient
->
Send
(
&
bsAuthQuery
,
HIGH_PRIORITY
,
RELIABLE
,
NULL
)
;
}



на этом всё.

kwedle 10.11.2022 01:26

@FakeSince что с лицом?

манку хлебал 10.11.2022 02:59

Ты проделал нереально сложную работу, результаты которой выложил в открытый доступ, красавчик. Расскажи как ты научился реверсить это все, если конечно не секрет

Михаил Бластов 10.11.2022 13:42

Цитата:

Сообщение от Cake_

гении начали продавать это за 15к

бля, что в этом такого? реверс не быстро происходит. а продавать начали еще в марте если что

Sargon 10.11.2022 13:58

Цитата:

Сообщение от Михаил Бластов

реверс не быстро происходит

дело нескольких минут

Михаил Бластов 10.11.2022 14:31

Цитата:

Сообщение от Sargon

дело нескольких минут

нет

kru_tin 10.11.2022 15:35

Цитата:

Сообщение от Sargon

дело нескольких минут

при условии что ты знаешь как устроена структура пакета)))))

Sekondr For 10.11.2022 21:22

Цитата:

Сообщение от Cake_

прив, еще летом я реверсил основные пакеты для авторизации на сервер через раксамп / взаимодействия с интерфейсом, но желания писать бота уже не было.
так как гении начали продавать это за 15к - заливаю бесплатно. Ниже найдете текстовик который я заполнял во время реверса и функции с отправкой/обработкой пакетов, краткое объяснения шагов захода.

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

сниппеты использования:





Код:

#define ID_RADMIR_MESSAGE    215
// processnetwork
case
ID_RADMIR_MESSAGE
:
Packet_RadmirMsg
(
pkt
)
;
break
;
void
CBot
::
Packet_RadmirMsg
(
Packet
*
p
)
{
RakNet
::
BitStream
bsPacket
(
(
unsigned
char
*
)
p
->
data
,
p
->
length
,
false
)
;
uint32_t
uiStrLength
;
char
szStr
[
0x1000
]
;
bsPacket
.
ResetReadPointer
(
)
;
bsPacket
.
IgnoreBits
(
64
)
;
bsPacket
.
Read
(
uiStrLength
)
;
if
(
uiStrLength

Send
(
&
bsData
,
HIGH_PRIORITY
,
UNRELIABLE_SEQUENCED
,
0
)
;
}
// отправляется через 1.5 - 3 сек после получении пакета #34(ID_CONNECTION_REQUEST_ACCEPTED)
void
CChiefBot
::
SendHandshake
(
void
)
{
RakNet
::
BitStream bsHandshake
;
bsHandshake
.
Write
(
(
uint8_t
)
215
)
;
bsHandshake
.
Write
(
(
uint16_t
)
1
)
;
bsHandshake
.
Write
(
(
uint32_t
)
51
)
;
bsHandshake
.
Write
(
(
uint8_t
)
0
)
;
bsHandshake
.
Write
(
(
uint32_t
)
30
)
;
bsHandshake
.
Write
(
"WD-WCC6Y2XZN97N190449674902806"
,
30
)
;
bsHandshake
.
Write
(
(
uint32_t
)
40
)
;
bsHandshake
.
Write
(
"1528FEE466C3A51C875E9D652EFA307F4B7725BE"
,
40
)
;
m_pRakClient
->
Send
(
&
bsHandshake
,
HIGH_PRIORITY
,
RELIABLE
,
NULL
)
;
RakNet
::
BitStream bsBrowser
;
bsBrowser
.
Write
(
(
uint8_t
)
215
)
;
bsBrowser
.
Write
(
(
uint16_t
)
2
)
;
bsBrowser
.
Write
(
(
uint32_t
)
0
)
;
bsBrowser
.
Write
(
(
uint32_t
)
22
)
;
bsBrowser
.
Write
(
"EndedInitializeBrowser"
,
22
)
;
bsBrowser
.
Write
(
(
uint32_t
)
0
)
;
m_pRakClient
->
Send
(
&
bsBrowser
,
HIGH_PRIORITY
,
RELIABLE
,
NULL
)
;
}
// использование в void CBot::Packet_RadmirMsg( Packet* p )
void
CChiefBot
::
SendAuthenticationQuery
(
void
)
{
RakNet
::
BitStream bsAuthQuery
;
bsAuthQuery
.
Write
(
(
uint8_t
)
215
)
;
bsAuthQuery
.
Write
(
(
uint16_t
)
2
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
0
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
18
)
;
bsAuthQuery
.
Write
(
"OnPlayerStartLogin"
,
18
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
2
)
;
bsAuthQuery
.
Write
(
(
uint8_t
)
115
)
;
bsAuthQuery
.
Write
(
(
uint32_t
)
6
)
;
bsAuthQuery
.
Write
(
"123123"
,
6
)
;
m_pRakClient
->
Send
(
&
bsAuthQuery
,
HIGH_PRIORITY
,
RELIABLE
,
NULL
)
;
}



на этом всё.

Братанчик его можно было бы оформить ешо короче и оптимизирование( а Ладна тут и написано.Я тупой кароче)

kin4stat 11.11.2022 01:36

Цитата:

Сообщение от манку хлебал

Ты проделал нереально сложную работу

Ахуеть какая нереально сложная работа посмотреть строки в хекс эдиторе лол. Тут половина полей названа unk, хотя там интуитивно понятно почти со всеми полями за что оно отвечает

Михаил Бластов 11.11.2022 01:38

слушайте, раз вы тут пиздец какие крутые реверсеры - зареверсите пакетики интерфейсов аризоны и cef в общем


Время: 20:26