
30.08.2023, 11:35
|
|
Флудер
Регистрация: 19.06.2022
Сообщений: 2,997
С нами:
2055431
Репутация:
3
|
|
если кто-то подменяет вмт условного ракклиента, то я смогу вызвать виртуальный метод, по указателю на ракклиент (CNetGame + 0x3C9)?
|
|
|

30.08.2023, 11:37
|
|
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами:
4012500
Репутация:
138
|
|
Сообщение от why ega
если кто-то подменяет вмт условного ракклиента, то я смогу вызвать виртуальный метод, по указателю на ракклиент (CNetGame + 0x3C9)?
Ну да ты просто сам хук вызовешь
|
|
|

06.09.2023, 21:41
|
|
Участник форума
Регистрация: 20.12.2021
Сообщений: 290
С нами:
2315345
Репутация:
48
|
|
Помогите переписать no gears с луа
Lua:
Код:
if
isCharInAnyCar
(
PLAYER_PED
)
then
header
=
getCarModel
(
storeCarCharIsInNoSave
(
PLAYER_PED
)
)
header
=
memory
.
getint32
(
header
*
0x4
+
0xA9B0C8
,
false
)
header
=
memory
.
getint16
(
header
+
0x4A
,
false
)
memory
.
setint8
(
header
*
0xE0
+
0xC2B9DC
+
0x74
,
1
,
false
)
end
пробовал
C++:
Код:
typedef
unsigned
long
Uint
;
inline
Uint
bit_set
(
Uint number
,
Uint n
)
{
return
number
|
(
(
Uint
)
1
getSAMP
(
)
->
getVehicles
(
)
->
sampVehicle
[
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
data
->
inCarData
.
vehicleId
]
->
gtaVehicle
->
base
.
model_alt_id
;
car_model
=
readUInt32FromMemory
(
reinterpret_cast
(
car_model
*
0x4
+
0xA9B0C8
)
)
;
car_model
=
readUInt16FromMemory
(
reinterpret_cast
(
car_model
+
0x4A
)
)
;
bit_set
(
(
car_model
*
0xE0
+
0xC2B9DC
+
0x74
)
,
1
)
;
}
но результата не дало
|
|
|

06.09.2023, 22:27
|
|
Познавший АНТИЧАТ
Регистрация: 14.07.2019
Сообщений: 1,097
С нами:
3596877
Репутация:
183
|
|
Сообщение от Z3roKwq
Помогите переписать no gears с луа
Lua:
Код:
if
isCharInAnyCar
(
PLAYER_PED
)
then
header
=
getCarModel
(
storeCarCharIsInNoSave
(
PLAYER_PED
)
)
header
=
memory
.
getint32
(
header
*
0x4
+
0xA9B0C8
,
false
)
header
=
memory
.
getint16
(
header
+
0x4A
,
false
)
memory
.
setint8
(
header
*
0xE0
+
0xC2B9DC
+
0x74
,
1
,
false
)
end
пробовал
C++:
Код:
typedef
unsigned
long
Uint
;
inline
Uint
bit_set
(
Uint number
,
Uint n
)
{
return
number
|
(
(
Uint
)
1
getSAMP
(
)
->
getVehicles
(
)
->
sampVehicle
[
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
data
->
inCarData
.
vehicleId
]
->
gtaVehicle
->
base
.
model_alt_id
;
car_model
=
readUInt32FromMemory
(
reinterpret_cast
(
car_model
*
0x4
+
0xA9B0C8
)
)
;
car_model
=
readUInt16FromMemory
(
reinterpret_cast
(
car_model
+
0x4A
)
)
;
bit_set
(
(
car_model
*
0xE0
+
0xC2B9DC
+
0x74
)
,
1
)
;
}
но результата не дало
а че за readUInt16FromMemory , покажи реализацию
|
|
|

06.09.2023, 22:32
|
|
Участник форума
Регистрация: 20.12.2021
Сообщений: 290
С нами:
2315345
Репутация:
48
|
|
Сообщение от Digger Man
а че за readUInt16FromMemory , покажи реализацию
C++:
Код:
uint16_t
readUInt16FromMemory
(
void
*
address
)
{
uint16_t
value
;
std
::
memcpy
(
&
value
,
address
,
sizeof
(
uint16_t
)
)
;
return
value
;
}
uint32_t
readUInt32FromMemory
(
void
*
address
)
{
uint32_t
value
;
std
::
memcpy
(
&
value
,
address
,
sizeof
(
uint32_t
)
)
;
return
value
;
}
с чтением и "сложением" проблем нету, как я понял дело имени в записи "итогового" адреса
|
|
|

07.09.2023, 09:25
|
|
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами:
4012500
Репутация:
138
|
|
Сообщение от Z3roKwq
C++:
Код:
uint16_t
readUInt16FromMemory
(
void
*
address
)
{
uint16_t
value
;
std
::
memcpy
(
&
value
,
address
,
sizeof
(
uint16_t
)
)
;
return
value
;
}
uint32_t
readUInt32FromMemory
(
void
*
address
)
{
uint32_t
value
;
std
::
memcpy
(
&
value
,
address
,
sizeof
(
uint32_t
)
)
;
return
value
;
}
с чтением и "сложением" проблем нету, как я понял дело имени в записи "итогового" адреса
нихуя чо ты придумал а зачем
Сообщение от Z3roKwq
Помогите переписать no gears с луа
Lua:
Код:
if
isCharInAnyCar
(
PLAYER_PED
)
then
header
=
getCarModel
(
storeCarCharIsInNoSave
(
PLAYER_PED
)
)
header
=
memory
.
getint32
(
header
*
0x4
+
0xA9B0C8
,
false
)
header
=
memory
.
getint16
(
header
+
0x4A
,
false
)
memory
.
setint8
(
header
*
0xE0
+
0xC2B9DC
+
0x74
,
1
,
false
)
end
пробовал
C++:
Код:
typedef
unsigned
long
Uint
;
inline
Uint
bit_set
(
Uint number
,
Uint n
)
{
return
number
|
(
(
Uint
)
1
getSAMP
(
)
->
getVehicles
(
)
->
sampVehicle
[
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
data
->
inCarData
.
vehicleId
]
->
gtaVehicle
->
base
.
model_alt_id
;
car_model
=
readUInt32FromMemory
(
reinterpret_cast
(
car_model
*
0x4
+
0xA9B0C8
)
)
;
car_model
=
readUInt16FromMemory
(
reinterpret_cast
(
car_model
+
0x4A
)
)
;
bit_set
(
(
car_model
*
0xE0
+
0xC2B9DC
+
0x74
)
,
1
)
;
}
но результата не дало
мб твоя функа isLocalPlayerInCar ***ня?
|
|
|

07.09.2023, 10:51
|
|
Участник форума
Регистрация: 20.12.2021
Сообщений: 290
С нами:
2315345
Репутация:
48
|
|
Сообщение от F0RQU1N and
нихуя чо ты придумал а зачем
мб твоя функа isLocalPlayerInCar ***ня?
Пхах, неа, функа нормально работает, чтение из памяти тоже, проблема именно с записью
|
|
|

07.09.2023, 23:46
|
|
Участник форума
Регистрация: 29.12.2016
Сообщений: 124
С нами:
4931888
Репутация:
213
|
|
Сообщение от Z3roKwq
Помогите переписать no gears с луа
Lua:
Код:
if
isCharInAnyCar
(
PLAYER_PED
)
then
header
=
getCarModel
(
storeCarCharIsInNoSave
(
PLAYER_PED
)
)
header
=
memory
.
getint32
(
header
*
0x4
+
0xA9B0C8
,
false
)
header
=
memory
.
getint16
(
header
+
0x4A
,
false
)
memory
.
setint8
(
header
*
0xE0
+
0xC2B9DC
+
0x74
,
1
,
false
)
end
пробовал
C++:
Код:
typedef
unsigned
long
Uint
;
inline
Uint
bit_set
(
Uint number
,
Uint n
)
{
return
number
|
(
(
Uint
)
1
getSAMP
(
)
->
getVehicles
(
)
->
sampVehicle
[
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
data
->
inCarData
.
vehicleId
]
->
gtaVehicle
->
base
.
model_alt_id
;
car_model
=
readUInt32FromMemory
(
reinterpret_cast
(
car_model
*
0x4
+
0xA9B0C8
)
)
;
car_model
=
readUInt16FromMemory
(
reinterpret_cast
(
car_model
+
0x4A
)
)
;
bit_set
(
(
car_model
*
0xE0
+
0xC2B9DC
+
0x74
)
,
1
)
;
}
но результата не дало
C++:
Код:
auto
car
{
*
reinterpret_cast
(
0xBA18FC
)
}
;
if
(
car
)
{
auto
model_id
{
*
reinterpret_cast
(
car
+
0x22
)
}
;
auto
model
{
*
reinterpret_cast
(
model_id
*
0x4
+
0xA9B0C8
)
}
;
auto
handling_id
{
*
reinterpret_cast
(
model
+
0x4A
)
}
;
*
reinterpret_cast
(
handling_id
*
0xE0
+
0xC2B9DC
+
0x74
)
=
1
;
}
|
|
|

10.09.2023, 14:34
|
|
Участник форума
Регистрация: 20.12.2021
Сообщений: 290
С нами:
2315345
Репутация:
48
|
|
В какой то момент появилась проблема с компиляцией, искал в инете, ответов не нашел
Собственно сама проблема:
Использую: CLion + Visual Studio (компилер) + Ninja + CMake
|
|
|

10.09.2023, 16:34
|
|
Флудер
Регистрация: 19.06.2022
Сообщений: 2,997
С нами:
2055431
Репутация:
3
|
|
На что лучше стоит ставить хук по мимо конструкторов, чтобы проверить, что доступны методы ракпира? CHud:  rawRadar вызывается уже после того, как персонаж заспавнился, а проверка на CNetGame в CTimer::Update и последующая установка хука после первого вызова не хочет работать на методе RakPeer:Receive (тупо крашит, даже если юзать задержку)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|