HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #31  
Старый 25.07.2024, 06:19
povargek
Участник форума
Регистрация: 18.03.2013
Сообщений: 102
С нами: 6921984

Репутация: 183
По умолчанию

Автору на заметку: всегда собирай статик в условиях сампа
 
Ответить с цитированием

  #32  
Старый 25.07.2024, 07:36
FYP
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,771
С нами: 6935121

Репутация: 233


По умолчанию

с этим фиксом можно крашить любыми пакетами с любыми данными, для этого нужно всего лишь пофлудить пакетами. но можно ничего и не делать, сервер сам крашнется. это из-за того, что хук в urmem туда-сюда перезаписывает инструкции при вызове оригинальной функции, а ReadBits вызывается из разных потоков и очень часто, в какой-то момент она вызовется с невалидными инструкциями в прологе в результате датарейса. для исправления надо заменить хуки на нормальные, например subhook, или сделать нормальный фикс, вместо хука пропатчив байт 0x7E по адресу 0x0804CE76 (linux 0.3.7-r2-1) на 0x76 (инструкцию jle на jbe).

а так можно пропатчить бинарник линукс сервера любой версии:

Код:
xxd -p -c0 samp03svr | sed 's/\(7e098b470801f03b07\)7e/\176/' | xxd -p -r > samp03svr_patched
 
Ответить с цитированием

  #33  
Старый 25.07.2024, 08:32
Maddy
Познающий
Регистрация: 08.04.2013
Сообщений: 35
С нами: 6891688

Репутация: 58
По умолчанию

Цитата:
Сообщение от FYP  

с этим фиксом можно крашить любыми пакетами с любыми данными, для этого нужно всего лишь пофлудить пакетами. но можно ничего и не делать, сервер сам крашнется. это из-за того, что хук в urmem туда-сюда перезаписывает инструкции при вызове оригинальной функции, а ReadBits вызывается из разных потоков и очень часто, в какой-то момент она вызовется с невалидными инструкциями в прологе в результате датарейса. для исправления надо заменить хуки на нормальные, например subhook, или сделать нормальный фикс, пропатчив байт 0x7E по адресу 0x0804CE76 (linux 0.3.7-r2-1) на 0x76 (инструкцию jle на jbe).
а так можно пропатчить бинарник линукс сервера любой версии:

Код:
xxd -p -c0 samp03svr | sed 's/\(7e098b470801f03b07\)7e/\176/' | xxd -p -r > samp03svr_patched
легенда
 
Ответить с цитированием

  #34  
Старый 25.07.2024, 08:34
timmylich.
Новичок
Регистрация: 27.12.2021
Сообщений: 3
С нами: 2305382

Репутация: 1
По умолчанию

Цитата:
Сообщение от FYP  

с этим фиксом можно крашить любыми пакетами с любыми данными, для этого нужно всего лишь пофлудить пакетами. но можно ничего и не делать, сервер сам крашнется. это из-за того, что хук в urmem туда-сюда перезаписывает инструкции при вызове оригинальной функции, а ReadBits вызывается из разных потоков и очень часто, в какой-то момент она вызовется с невалидными инструкциями в прологе в результате датарейса. для исправления надо заменить хуки на нормальные, например subhook, или сделать нормальный фикс, пропатчив байт 0x7E по адресу 0x0804CE76 (linux 0.3.7-r2-1) на 0x76 (инструкцию jle на jbe).
а так можно пропатчить бинарник линукс сервера любой версии:

Код:
xxd -p -c0 samp03svr | sed 's/\(7e098b470801f03b07\)7e/\176/' | xxd -p -r > samp03svr_patched
Спасибо.

Пока одна проблема - хостер MyArena не позволяет подгрузить свой samp03svr на сервер, придётся ждать пока они проснуться...
 
Ответить с цитированием

  #35  
Старый 25.07.2024, 09:30
Benjes
Новичок
Регистрация: 25.07.2024
Сообщений: 2
С нами: 951232

Репутация: 3
По умолчанию

Solución usando Pawn.RakNet

Pawn.RakNet:





[CODE]
IRawPacket
:
20
(
playerid
,
BitStream
:
bs
)
// 20 = ID_RPC
{
new
PacketID
,
RPC_ID
,
NumberOfBitsOfData
;
BS_ReadValue
(
bs
,
PR_UINT8
,
PacketID
,
PR_UINT8
,
RPC_ID
,
PR_CUINT32
,
NumberOfBitsOfData
)
;
printf
(
"IRawPacket -> ID_RPC: playerid: %d, RPC_ID: %d, NumberOfBitsOfData: %d"
,
playerid
,
RPC_ID
,
NumberOfBitsOfData
)
;
if
(
PacketID
==
40
||
(
NumberOfBitsOfData
>=
0x1FFFFF
||
NumberOfBitsOfData

 
Ответить с цитированием

  #36  
Старый 25.07.2024, 11:34
fzfzfz123
Новичок
Регистрация: 29.06.2024
Сообщений: 10
С нами: 987522

Репутация: 13
По умолчанию

Цитата:
Сообщение от FYP  

с этим фиксом можно крашить любыми пакетами с любыми данными, для этого нужно всего лишь пофлудить пакетами. но можно ничего и не делать, сервер сам крашнется. это из-за того, что хук в urmem туда-сюда перезаписывает инструкции при вызове оригинальной функции, а ReadBits вызывается из разных потоков и очень часто, в какой-то момент она вызовется с невалидными инструкциями в прологе в результате датарейса. для исправления надо заменить хуки на нормальные, например subhook, или сделать нормальный фикс, вместо хука пропатчив байт 0x7E по адресу 0x0804CE76 (linux 0.3.7-r2-1) на 0x76 (инструкцию jle на jbe).
а так можно пропатчить бинарник линукс сервера любой версии:

Код:
xxd -p -c0 samp03svr | sed 's/\(7e098b470801f03b07\)7e/\176/' | xxd -p -r > samp03svr_patched
это просто исправление одного бита! идеально 😆
 
Ответить с цитированием

  #37  
Старый 25.07.2024, 11:58
Nexius
Познающий
Регистрация: 29.03.2014
Сообщений: 37
С нами: 6380428

Репутация: 68
По умолчанию

Цитата:
Сообщение от pendaras  

А что ты хотел увидеть? Никто бесплатно тебе "супер рабочий" скрипт не напишет.
Как видишь, уже написали (бинарники тут). Но лично я рекомендую омп как вариант, с которым вряд ли возникнут и любые возможные прецеденты в дальнейшем, при нахождении чего-то подобного в иной раз у самп сервера.
 
Ответить с цитированием

  #38  
Старый 25.07.2024, 13:00
RazorRw
Флудер
Регистрация: 16.09.2019
Сообщений: 2,013
С нами: 3505395

Репутация: 183


По умолчанию

[QUOTE="Benjes"]

Solución usando Pawn.RakNet

Pawn.RakNet:





[CODE]
IRawPacket
:
20
(
playerid
,
BitStream
:
bs
)
// 20 = ID_RPC
{
new
PacketID
,
RPC_ID
,
NumberOfBitsOfData
;
BS_ReadValue
(
bs
,
PR_UINT8
,
PacketID
,
PR_UINT8
,
RPC_ID
,
PR_CUINT32
,
NumberOfBitsOfData
)
;
printf
(
"IRawPacket -> ID_RPC: playerid: %d, RPC_ID: %d, NumberOfBitsOfData: %d"
,
playerid
,
RPC_ID
,
NumberOfBitsOfData
)
;
if
(
PacketID
==
40
||
(
NumberOfBitsOfData
>=
0x1FFFFF
||
NumberOfBitsOfData
 
Ответить с цитированием

  #39  
Старый 25.07.2024, 13:23
Nexius
Познающий
Регистрация: 29.03.2014
Сообщений: 37
С нами: 6380428

Репутация: 68
По умолчанию

[QUOTE="Benjes"]

Solución usando Pawn.RakNet

Pawn.RakNet:





[CODE]
IRawPacket
:
20
(
playerid
,
BitStream
:
bs
)
// 20 = ID_RPC
{
new
PacketID
,
RPC_ID
,
NumberOfBitsOfData
;
BS_ReadValue
(
bs
,
PR_UINT8
,
PacketID
,
PR_UINT8
,
RPC_ID
,
PR_CUINT32
,
NumberOfBitsOfData
)
;
printf
(
"IRawPacket -> ID_RPC: playerid: %d, RPC_ID: %d, NumberOfBitsOfData: %d"
,
playerid
,
RPC_ID
,
NumberOfBitsOfData
)
;
if
(
PacketID
==
40
||
(
NumberOfBitsOfData
>=
0x1FFFFF
||
NumberOfBitsOfData
 
Ответить с цитированием

  #40  
Старый 25.07.2024, 16:17
Benjes
Новичок
Регистрация: 25.07.2024
Сообщений: 2
С нами: 951232

Репутация: 3
По умолчанию

Цитата:
Сообщение от Nexius  

Not a proper solution, the cause is not related exactly to this packet you're checking
В этот момент пришла хорошая идея 😅👌🏻

Цитата:
Сообщение от _razor  

а если пакет будет обернут в ID_TIMESTAMP?
💥
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.