
22.04.2017, 14:10
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
Сообщение от BlackKnigga
Tools -> Options -> Projects and Solutions -> VC++ Project Settings -> Build Timing
Нашел в гугле с первого запроса. Проверяй
Верю на слово, я же не чекаю каждую страницу, а читаю превьюхи
Пытаюсь сделать хук на входящие сообщения, проблема старая - не могу нормально считать строки. Думал проблема в том что буффер значительно больше строки, решил вычесть отступ в два байта (согласно логу рэклоггера) из общего размера пакета, чтобы получить размер строки, которая там будет находиться (ею кончается пакет, как я понял)
Но мне не разрешает выставлять переменную в качестве размера другой переменной.
Если же поставить как раньше - размер в 144 байта, будет выводиться пустая строка в чат
Сил уже нет никаких с этими строками воевать, скажите что я не так делаю-то, фыр
C++:
Код:
bool
CALLBACK
irpc
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
101
)
{
params
->
bitStream
->
ResetReadPointer
(
)
;
int
qwe
=
params
->
bitStream
->
GetNumberOfBitsUsed
(
)
;
int
qq
=
(
qwe
-
16
)
;
params
->
bitStream
->
IgnoreBits
(
16
)
;
int
ww
=
BITS_TO_BYTES
(
qq
)
;
char
ttt
[
ww
]
;
params
->
bitStream
->
Read
(
ttt
)
;
std
::
string
str
(
ttt
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
555555
,
"%s"
,
ttt
)
;
//byte packId;
//params->bitStream->Read(packId);
//D3DCOLOR color;
//params->bitStream->Read(color);
}
return
true
;
}
|
|
|

22.04.2017, 15:10
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами:
6935116
Репутация:
183
|
|
Сообщение от Снежок
Пытаюсь сделать хук на входящие сообщения, проблема старая - не могу нормально считать строки. Думал проблема в том что буффер значительно больше строки, решил вычесть отступ в два байта (согласно логу рэклоггера) из общего размера пакета, чтобы получить размер строки, которая там будет находиться (ею кончается пакет, как я понял)
Но мне не разрешает выставлять переменную в качестве размера другой переменной.
Если же поставить как раньше - размер в 144 байта, будет выводиться пустая строка в чат
Сил уже нет никаких с этими строками воевать, скажите что я не так делаю-то, фыр
C++:
Код:
bool
CALLBACK
irpc
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
101
)
{
params
->
bitStream
->
ResetReadPointer
(
)
;
int
qwe
=
params
->
bitStream
->
GetNumberOfBitsUsed
(
)
;
int
qq
=
(
qwe
-
16
)
;
params
->
bitStream
->
IgnoreBits
(
16
)
;
int
ww
=
BITS_TO_BYTES
(
qq
)
;
char
ttt
[
ww
]
;
params
->
bitStream
->
Read
(
ttt
)
;
std
::
string
str
(
ttt
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
555555
,
"%s"
,
ttt
)
;
//byte packId;
//params->bitStream->Read(packId);
//D3DCOLOR color;
//params->bitStream->Read(color);
}
return
true
;
}
C++:
Код:
D3DCOLOR color
=
-
1
;
int
length
=
0
;
char
message
[
256
]
{
0
}
;
param
->
bitStream
->
Read
(
color
)
;
param
->
bitStream
->
Read
(
length
)
;
param
->
bitStream
->
Read
(
message
,
length
)
;
|
|
|

22.04.2017, 15:20
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
Сообщение от MISTER_GONWIK
C++:
Код:
D3DCOLOR color
=
-
1
;
int
length
=
0
;
char
message
[
256
]
{
0
}
;
param
->
bitStream
->
Read
(
color
)
;
param
->
bitStream
->
Read
(
length
)
;
param
->
bitStream
->
Read
(
message
,
length
)
;
Ну, согласно логгеру, там негде поместиться цвету и длине, серьёзно
Вот так выглядит лог сообщения в чат, когда я отправляю единицу:
Код:
Код:
[13:52:27.700] > [RPC Recv] RPC_Chat[101](length: 4 bytes, 32 bits)
> dump:
0000 00 00 01 31 ...1
Или первые два байта это цвет, а третий - длина?
Ответь пожалуйста, очень важно, я хочу наконец разобраться в теме
|
|
|

22.04.2017, 15:23
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами:
6935116
Репутация:
183
|
|
Сообщение от Снежок
Ну, согласно логгеру, там негде поместиться цвету и длине, серьёзно
Вот так выглядит лог сообщения в чат, когда я отправляю единицу:
Код:
Код:
[13:52:27.700] > [RPC Recv] RPC_Chat[101](length: 4 bytes, 32 bits)
> dump:
0000 00 00 01 31 ...1
Или первые два байта это цвет, а третий - длина?
Ответь пожалуйста, очень важно, я хочу наконец разобраться в теме
ты чёт какой-то левый рпс ловишь, так-то над эт:
C++:
Код:
if
(
param
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrClientMessage
)
// id: 93
{
.
.
}
p.s. возможно у тебя старый раклоггер
|
|
|

22.04.2017, 15:26
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от MISTER_GONWIK
ты чёт какой-то левый рпс ловишь, так-то над эт:
p.s. возможно у тебя старый раклоггер
Если он ловит входящие сообщения от сервера, то РПЦ не правильный. Если только сообщения, которые он отправил в чат без команды, то верный ид. Для исходящих команд другой РПЦ.
|
|
|

22.04.2017, 15:26
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами:
6935116
Репутация:
183
|
|
и на будущее,
C++:
Код:
.
.
->
ResetReadPointer
(
)
;
уже не нужно использовать
Сообщение от Dark_Knight
Если он ловит входящие сообщения от сервера, то РПЦ не правильный. Если только сообщения, которые он отправил в чат без команды, то верный ид. Для исходящих команд другой РПЦ.
если чё, то
именно
C++:
Код:
RPC_ScrClientMessage
нужен для этого
|
|
|

22.04.2017, 15:21
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от Снежок
Пытаюсь сделать хук на входящие сообщения, проблема старая - не могу нормально считать строки. Думал проблема в том что буффер значительно больше строки, решил вычесть отступ в два байта (согласно логу рэклоггера) из общего размера пакета, чтобы получить размер строки, которая там будет находиться (ею кончается пакет, как я понял)
Но мне не разрешает выставлять переменную в качестве размера другой переменной.
Если же поставить как раньше - размер в 144 байта, будет выводиться пустая строка в чат
Сил уже нет никаких с этими строками воевать, скажите что я не так делаю-то, фыр
C++:
Код:
bool
CALLBACK
irpc
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
101
)
{
params
->
bitStream
->
ResetReadPointer
(
)
;
int
qwe
=
params
->
bitStream
->
GetNumberOfBitsUsed
(
)
;
int
qq
=
(
qwe
-
16
)
;
params
->
bitStream
->
IgnoreBits
(
16
)
;
int
ww
=
BITS_TO_BYTES
(
qq
)
;
char
ttt
[
ww
]
;
params
->
bitStream
->
Read
(
ttt
)
;
std
::
string
str
(
ttt
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
555555
,
"%s"
,
ttt
)
;
//byte packId;
//params->bitStream->Read(packId);
//D3DCOLOR color;
//params->bitStream->Read(color);
}
return
true
;
}
Первое. Не надо юзать иды при чтении РПЦ. Большинство просто не помнят все иды на изусть и не удобно так читать. Юзай значение с eNum.
Второе. Код вообще не правильный. Если irpc это входящие РПЦ, то если мне память не изменяет, то он только исходящий, но может быть и входящим тоже. Прочекаешь
Третье. Вот тебе страница со структурами РПЦ. https://docs.google.com/spreadsheets/d/1iIxEk7yR8r7ZLGiSAL4ndtz_N1k0p3Wt7TE5bei6ztU/edit#gid=1
Четвертое. Вот тебе рабочий код и пример как вообще строки надо читать.
Код:
Код:
if (params->packetId == RPCEnumeration::RPC_ServerCommand) {
DWORD len;
char command[256];
BitStream *bs = params->bitStream;
bs->ResetReadPointer();
bs->Read(len);
bs->Read(command, len);
command[len] = '\0';
}
|
|
|

22.04.2017, 15:25
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
Сообщение от Dark_Knight
Второе. Код вообще не правильный. Если irpc это входящие РПЦ, то если мне память не изменяет, то он только исходящий, но может быть и входящим тоже. Прочекаешь
В собейтовом .ini смотрел, он там одновременно и входящий и исходящий, ид и название идентичны
За справочку и пример огромное спасибо.
Сообщение от MISTER_GONWIK
p.s. возможно у тебя старый раклоггер
отсюда логгер качал, тот что для 0.3.7
|
|
|

23.04.2017, 13:46
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
У меня вопрос. Таким образом я могу преобразовать чар в строку для одной конкретной функции, чтобы не выделять переменную?
Если нет, то что я делаю таким образом?
SF->getSAMP()->getChat()->AddChatMessage(555555, "%s", string(command))
|
|
|

23.04.2017, 13:51
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами:
6935116
Репутация:
183
|
|
Сообщение от Снежок
У меня вопрос. Таким образом я могу преобразовать чар в строку для одной конкретной функции, чтобы не выделять переменную?
Если нет, то что я делаю таким образом?
SF->getSAMP()->getChat()->AddChatMessage(555555, "%s", string(command))
C++:
Код:
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
555555
,
"%s"
,
string
(
command
)
.
c_str
(
)
)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|