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

  #1  
Старый 20.12.2023, 20:40
Sadow
Познавший АНТИЧАТ
Регистрация: 14.10.2021
Сообщений: 1,412
С нами: 2411807

Репутация: 118


По умолчанию

Как получить адрес ячейки памяти?

Я смог найти адрес указателя - server.dll+A4ABA4 и оффсет - 230

Я пытался сделать самостоятельно, но значение отличается от нужного

Код main.cpp:

C++:





[CODE]
#include
#include "memory.h"
using
namespace
std
;
PModule Base
;
memory mem
;
int
main
(
)
{
while
(
!
mem
.
Attach
(
"csgo.exe"
,
PROCESS_ALL_ACCESS
)
)
{
}
Base
=
mem
.
GetModule
(
"server.dll"
)
;
while
(
true
)
{
if
(
GetAsyncKeyState
(
VK_UP
)
)
{
int
hp
=
mem
.
Read

(
Base
.
dwBase
+
0xA4ABA4
+
0x230
)
;
cout



Код memory.h:

C++:





Код:
#include 
#include 
#include 
struct
PModule
{
DWORD dwBase
;
DWORD dwSize
;
}
;
class
memory
{
public
:
inline
bool
Attach
(
const
char
*
pName
,
DWORD dwAccess
)
{
HANDLE handle
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPPROCESS
,
NULL
)
;
PROCESSENTRY32 entry
{
}
;
entry
.
dwSize
=
sizeof
(
entry
)
;
do
if
(
!
strcmp
(
_bstr_t
(
entry
.
szExeFile
)
,
pName
)
)
{
_pId
=
entry
.
th32ProcessID
;
CloseHandle
(
handle
)
;
_process
=
OpenProcess
(
dwAccess
,
false
,
_pId
)
;
return
true
;
}
while
(
Process32Next
(
handle
,
&
entry
)
)
;
return
false
;
}
inline
PModule
GetModule
(
const
char
*
pModule
)
{
HANDLE module
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPMODULE
,
_pId
)
;
MODULEENTRY32 entry
{
}
;
entry
.
dwSize
=
sizeof
(
entry
)
;
do
if
(
!
strcmp
(
_bstr_t
(
entry
.
szModule
)
,
pModule
)
)
{
CloseHandle
(
module
)
;
return
PModule
{
reinterpret_cast

(
entry
.
hModule
)
,
entry
.
modBaseSize
}
;
}
while
(
Module32Next
(
module
,
&
entry
)
)
;
return
PModule
{
0
,
0
}
;
}
template

T
Read
(
const
DWORD dwAddress
)
{
T _read
{
}
;
ReadProcessMemory
(
_process
,
LPVOID
(
dwAddress
)
,
&
_read
,
sizeof
(
T
)
,
NULL
)
;
return
_read
;
}
template

void
Write
(
const
DWORD dwAddress
,
const
T value
)
{
WriteProcessMemory
(
_process
,
LPVOID
(
dwAddress
)
,
&
value
,
sizeof
(
T
)
,
NULL
)
;
}
void
Exit
(
)
{
CloseHandle
(
_process
)
;
}
private
:
HANDLE _process
;
DWORD _pId
;
}
;
 
Ответить с цитированием

  #2  
Старый 21.12.2023, 01:09
ARMOR
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами: 3831395

Репутация: 183


По умолчанию

void* p = *(void**)(Base.dwBase + 0xA4ABA4);

int health = *(int*)((uint32_t)p + 0x230)
 
Ответить с цитированием

  #3  
Старый 21.12.2023, 13:19
Sadow
Познавший АНТИЧАТ
Регистрация: 14.10.2021
Сообщений: 1,412
С нами: 2411807

Репутация: 118


По умолчанию

Цитата:
Сообщение от Вахтёр Марио  

void* p = *(void**)(Base.dwBase + 0xA4ABA4);
int health = *(int*)((uint32_t)p + 0x230)
Спасибо, но он мне ничего не выводил и я немного изменил код

C++:





Код:
DWORD adr
=
mem
.
Read

(
Base
.
dwBase
+
0xA4ABA4
)
;
int
hp
=
mem
.
Read

(
adr
+
0x230
)
;
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.