HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 18.09.2021, 14:26
bottom_text
Постоянный
Регистрация: 28.06.2018
Сообщений: 676
С нами: 4145990

Репутация: 118


По умолчанию

Цитата:
Сообщение от 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
)
;


Ну и не работает кароче. Изменяю память в цикле.
unsigned char driveOnWater = 1;

*reinterpret_cast(0x969152) = driveOnWater;

попробуй
 
Ответить с цитированием

  #2  
Старый 18.09.2021, 14:37
#Northn
Флудер
Регистрация: 10.08.2017
Сообщений: 2,659
С нами: 4609424

Репутация: 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
)
;


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

mem.setint8(0x969152, 1, false)
последний аргумент -- false, соответственно протекцию снимать не нужно.

Значит, тебе достаточно просто использовать это:

C++:





Код:
*
reinterpret_cast

(
0x969152
)
=
1
;


А так, если ты хочешь повторить код как на луа:

C++:





Код:
template

void
writeMem
(
uintptr_t address
,
T value
,
bool
unprotect
=
false
)
{
DWORD old_protection
;
auto
address_
=
reinterpret_cast

(
address
)
;
if
(
unprotect
)
VirtualProtect
(
address_
,
sizeof
(
value
)
,
PAGE_EXECUTE_READWRITE
,
&
old_protection
)
;
memcpy
(
&
value
,
address_
,
sizeof
(
value
)
)
;
if
(
unprotect
)
VirtualProtect
(
address_
,
sizeof
(
value
)
,
old_protection
,
&
old_protection
)
;
}
 
Ответить с цитированием

  #3  
Старый 18.09.2021, 15:25
Musaigen
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами: 4272230

Репутация: 183


По умолчанию

Цитата:
Сообщение от #Northn  

последний аргумент -- false, соответственно протекцию снимать не нужно.
Значит, тебе достаточно просто использовать это:

C++:





Код:
*
reinterpret_cast

(
0x969152
)
=
1
;


А так, если ты хочешь повторить код как на луа:

C++:





Код:
template

void
writeMem
(
uintptr_t address
,
T value
,
bool
unprotect
=
false
)
{
DWORD old_protection
;
auto
address_
=
reinterpret_cast

(
address
)
;
if
(
unprotect
)
VirtualProtect
(
address_
,
sizeof
(
value
)
,
PAGE_EXECUTE_READWRITE
,
&
old_protection
)
;
memcpy
(
&
value
,
address_
,
sizeof
(
value
)
)
;
if
(
unprotect
)
VirtualProtect
(
address_
,
sizeof
(
value
)
,
old_protection
,
&
old_protection
)
;
}

Ты в value записуешь байты из _address?
 
Ответить с цитированием

  #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'
)
;
 
Ответить с цитированием

  #5  
Старый 22.09.2021, 14:35
Silence Scripts
Новичок
Регистрация: 26.06.2021
Сообщений: 25
С нами: 2570124

Репутация: 8
По умолчанию

Как сделать рендер объектов как на скрине в asi?

sa-mp-093-min.pngSilence Scripts · 22 Сен 2021 в 13:35' data-fancybox="lb-post-847848" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/115211/" style="cursor: pointer;" title="sa-mp-093-min.png">

sa-mp-094-min.pngSilence Scripts · 22 Сен 2021 в 13:35' data-fancybox="lb-post-847848" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/115212/" style="cursor: pointer;" title="sa-mp-094-min.png">
 
Ответить с цитированием

  #6  
Старый 24.09.2021, 22:30
loganhackerdff
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами: 4633764

Репутация: 148


По умолчанию

Всем ку, у кого-то есть аналог convertGameScreenCoordsToWindowScreenCoords из lua?
 
Ответить с цитированием

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

Репутация: 183


По умолчанию

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

Всем ку, у кого-то есть аналог convertGameScreenCoordsToWindowScreenCoords из lua?
C++:





Код:
constexpr
auto
kRwEngineScreenW
=
0x00C17044
;
constexpr
auto
kRwEngineScreenH
=
0x00C17048
;
constexpr
auto
kGameScreenW
=
640.f
;
constexpr
auto
kGameScreenH
=
448.f
;
Vec2
gameScreenToWindow
(
Vec2 point
)
{
const
int
sx
=
*
reinterpret_cast

(
kRwEngineScreenW
)
;
const
int
sy
=
*
reinterpret_cast

(
kRwEngineScreenH
)
;
Vec2 result
{
}
;
result
.
x
=
(
point
.
x
/
kGameScreenW
)
*
sx
;
result
.
y
=
(
point
.
y
/
kGameScreenH
)
*
sy
;
return
result
;
}
 
Ответить с цитированием

  #8  
Старый 24.09.2021, 22:40
loganhackerdff
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами: 4633764

Репутация: 148


По умолчанию

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

C++:





Код:
constexpr
auto
kRwEngineScreenW
=
0x00C17044
;
constexpr
auto
kRwEngineScreenH
=
0x00C17048
;
constexpr
auto
kGameScreenW
=
640.f
;
constexpr
auto
kGameScreenH
=
448.f
;
Vec2
gameScreenToWindow
(
Vec2 point
)
{
const
int
sx
=
*
reinterpret_cast

(
kRwEngineScreenW
)
;
const
int
sy
=
*
reinterpret_cast

(
kRwEngineScreenH
)
;
Vec2 result
{
}
;
result
.
x
=
(
point
.
x
/
kGameScreenW
)
*
sx
;
result
.
x
=
(
point
.
y
/
kGameScreenH
)
*
sy
;
return
result
;
}

id текстдравов улетают в лево вверх

C++:





Код:
auto
onScreenPos
{
gameScreenToWindow
(
{
pTextdraw
->
m_data
.
m_fX
,
pTextdraw
->
m_data
.
m_fY
}
)
}
;
ImGui
::
GetForegroundDrawList
(
)
->
AddText
(
{
onScreenPos
.
x
,
onScreenPos
.
y
}
,
0xFFFFFFFF
,
tos
(
i
)
)
;




kGameScreenW и kGameScreenH попробовал заменить, не помогли
 
Ответить с цитированием

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

Репутация: 183


По умолчанию

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

id текстдравов улетают в лево вверх

C++:





Код:
auto
onScreenPos
{
gameScreenToWindow
(
{
pTextdraw
->
m_data
.
m_fX
,
pTextdraw
->
m_data
.
m_fY
}
)
}
;
ImGui
::
GetForegroundDrawList
(
)
->
AddText
(
{
onScreenPos
.
x
,
onScreenPos
.
y
}
,
0xFFFFFFFF
,
tos
(
i
)
)
;


kGameScreenW и kGameScreenH попробовал заменить, не помогли
как минимум там мой проеб в том, что result.x два раза подряд(уже исправил)
 
Ответить с цитированием

  #10  
Старый 25.09.2021, 10:37
loganhackerdff
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами: 4633764

Репутация: 148


По умолчанию

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

как минимум там мой проеб в том, что result.x два раза подряд(уже исправил)
блинб не заметил, всё отлично работает
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.