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

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

Репутация: 183


По умолчанию

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

Привет, хотел перевести на плюсы вот эту запись.

memory lua:





Код:
mem
.
setint8
(
0x969152
,
1
,
false
)


На с++ получилось что такое:

функция для записи в память:





Код:
template

void
writeMem
(
DWORD address
,
T value
)
{
DWORD oldProtect
=
0
;
VirtualProtectEx
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
sizeof
(
value
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
WriteProcessMemory
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
&
value
,
sizeof
(
value
)
,
0
)
;
VirtualProtectEx
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
sizeof
(
value
)
,
oldProtect
,
NULL
)
;
}


дальше вызываю в коде:

вызов функции в коде:





Код:
unsigned
char
driveOnWater
=
1
;
writeMem

(
0x969152
,
driveOnWater
)
;


Ну и не работает кароче. Изменяю память в цикле.
C++:





Код:
template

void
WriteMemory
(
std
::
uintptr_t address
,
T value
,
bool
protect
=
true
)
{
unsigned
long
oldProt
;
if
(
protect
)
VirtualProtect
(
reinterpret_cast

(
address
)
,
sizeof
(
T
)
,
0x04
,
&
oldProt
)
;
*
reinterpret_cast

(
address
)
=
value
;
if
(
protect
)
VirtualProtect
(
reinterpret_cast

(
address
)
,
sizeof
(
T
)
,
oldProt
,
&
oldProt
)
;
}


Usage:

C++:





Код:
WriteMemory
(
0x969152
,
'\x01'
)
;
 
Ответить с цитированием