Показать сообщение отдельно

  #2  
Старый 12.07.2020, 02:41
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Назрело у меня пару вопросов

Первое:

Структура SAMP R3 Выглядит следующим образом:

Цитата:
Сообщение от Спойлер  




Каким образом в ulPort попадает порт, у которого оффсет 1388?

Второе:

Как на хукнутом RakClientInterface реализовать перехват входящих RPC как в s0beit'е. Т.е. условно если сервер пытается сетнуть мне хп, у меня в чат вывелось, что сервер мне пытается поставить мне хп. Или например нопить входящие RPC.

Третье:

Почему-то при вызове addChatMessage в основном потоке, работает, а при вызове этой же функции в где-нибудь в другом месте крашит.

Потоки:





Код:
void
test
(
char
*
szParams
)
{
pSAMP
->
addMessageToChat
(
0xFFFFFFFF
,
"addMessageToChat causes exception in gta_sa.exe(samp.dll)"
)
;
}
void
mainThread
(
void
*
pvParams
)
{
if
(
pSAMP
)
{
while
(
!
pSAMP
->
tryInit
(
)
)
{
Sleep
(
100
)
;
}
pSAMP
->
addMessageToChat
(
0xFFFFFFFF
,
"addMessageToChatWorks here!"
)
;
pSAMP
->
addClientCommand
(
"test"
,
test
)
;
}
}


addMessageToChat:





Код:
void
SAMPFramework
::
addMessageToChat
(
D3DCOLOR cColor
,
const
char
*
szMsg
,
.
.
.
)
{
if
(
g_Chat
==
nullptr
)
return
;
void
(
__thiscall
*
AddToChatWindowBuffer
)
(
const
void
*
_this
,
int
iType
,
char
*
szText
,
char
*
szPrefix
,
DWORD cColor
,
DWORD cPrefixColor
)
=
(
void
(
__thiscall
*
)
(
const
void
*
,
int
,
char
*
,
char
*
,
DWORD
,
DWORD
)
)
(
dwSAMPAddr
+
SAMP_FUNC_ADDTOCHATWND
)
;
if
(
szMsg
==
NULL
)
return
;
va_list ap
;
char
tmp
[
512
]
;
memset
(
tmp
,
0
,
512
)
;
va_start
(
ap
,
szMsg
)
;
vsnprintf
(
tmp
,
sizeof
(
tmp
)
-
1
,
szMsg
,
ap
)
;
va_end
(
ap
)
;
return
AddToChatWindowBuffer
(
(
void
*
)
g_Chat
,
8
,
tmp
,
NULL
,
cColor
,
0x00
)
;
}


Само исключение:

Код:
Вызвано исключение по адресу 0x0A279392 (samp.dll) в gta_sa.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00000007.
Стек вызовов пустой
 
Ответить с цитированием