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

  #7  
Старый 22.03.2021, 23:41
Vintik
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами: 4598023

Репутация: 183


По умолчанию

Цитата:
Сообщение от Разраб ИИ  

Спасибо за ответ , я вам очень признателен , теперь буду юзать VirtualProtectEx ну или просто переделаю ReadProcessMemory c встроенным VirtualProtectEx в нее🥸🤠 это должно уменьшить код ) .
[S]Про стиль общения это маска дабы общение было приятным[/S] ( 🥷[S]я не такой[/S]🥷 ) . 🤩 🥰 😀
Вот такое есть готовое решение с использованием шаблонов (template). Просто в начало кода закинуть эти функции.

C++:





Код:
template

T
readMem
(
DWORD address
)
{
T buffer
;
DWORD oldProtect
=
0
;
VirtualProtectEx
(
process
,
(
void
*
)
address
,
sizeof
(
buffer
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
ReadProcessMemory
(
process
,
(
void
*
)
address
,
&
buffer
,
sizeof
(
buffer
)
,
0
)
;
VirtualProtectEx
(
process
,
(
void
*
)
address
,
sizeof
(
buffer
)
,
oldProtect
,
NULL
)
;
return
buffer
;
}
template

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


Использовать его вот так:

C++:





Код:
auto
money
=
readMem

(
0xB6F5F0
)
;
// int – тип данных. обязательно надо указывать


(этот код запишет в moneyтвоё состояние, в смысле сколько денег)

Или вот так:

C++:





Код:
auto
CPed
=
readMem

(
0xB6F5F0
)
;
// DWORD указывать, чтобы знать какой тип данных надо считать.
float
health
=
55.0
;
writeMem

(
CPed
+
0x540
,
health
)
;
// float так же обязательно надо указывать.


(а этот изменит твоё здоровье до 55 единиц)

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

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