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

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

Репутация: 183


По умолчанию

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

Короче я нашел свою ошибку и исправил её, кое-где передавал вместо значения pointer'а адресс, короче теперь вывод координаты, но крашит сразу после первой(начинал с нулевого индекса дабы проверить на себе(выше изачально были выведены мои координаты):

я даже сделал кучу проверок на != nullptr, бессполезно...

C++:





Код:
DWORD
*
cpedsearch
=
(
DWORD
*
)
(
cped
+
i
*
0x7c4
)
;
if
(
cpedsearch
!=
nullptr
)
{
float
*
health
=
(
float
*
)
(
*
cpedsearch
+
0x540
)
;
if
(
health
!=
nullptr
)
{
if
(
*
health
=
4.0f
)
{
DWORD
*
pointercoords
=
(
DWORD
*
)
(
*
cpedsearch
+
0x14
)
;
if
(
pointercoords
!=
nullptr
)
{
float
*
hisx
=
(
float
*
)
(
*
pointercoords
+
0x30
)
;
float
*
hisy
=
(
float
*
)
(
*
pointercoords
+
0x34
)
;
float
*
hisz
=
(
float
*
)
(
*
pointercoords
+
0x38
)
;
if
(
hisx
!=
nullptr
&&
hisy
!=
nullptr
&&
hisz
!=
nullptr
)
{
std
::
vector

onscreen
=
world_to_screen
(
ViewMatrix
,
*
hisx
,
*
hisy
,
*
hisz
)
;
std
::
string strValue
=
std
::
to_string
(
*
hisx
)
+
" "
+
std
::
to_string
(
*
hisy
)
+
" "
+
std
::
to_string
(
*
hisy
)
+
" "
+
std
::
to_string
(
i
)
;
const
char
*
str1
=
strValue
.
c_str
(
)
;
printf
(
str1
)
;
printf
(
"\n"
)
;

Т. е. проблема в координатах всё таки?
 
Ответить с цитированием

  #22  
Старый 05.04.2024, 21:34
qwertyrus
Познающий
Регистрация: 29.10.2023
Сообщений: 33
С нами: 1339196

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

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

Т. е. проблема в координатах всё таки?
вероятнее всего я где то ошибаюсь в использовании указателя, поэтому крашит. Щас вот методом пробы запуска и крашей ищу где оно обрывается

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

Т. е. проблема в координатах всё таки?
Я решил проблему... Она была в том, что cpedsearch - cped+оффсет, а я брал его как поинтер еще один, в итоге попадал не на тот адрес и крашило, сейчас всё норм(последняя цифра это i(я проверял так). Осталось теперь прикрутить хук директ икса(буду рад если поможешь), а затем отрисовать линии. Хотелось бы по костям рисовать, но как я не искал, функции получения координаты кости(на голом C++) нет.

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

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

Репутация: 183


По умолчанию

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

Осталось теперь прикрутить хук директ икса(буду рад если поможешь), а затем отрисовать линии.
Сам недавно разбирался, вот тема:

AmazingRP / d3d9 hook

Хочу рисовать поверх окна Амазинг РП (КРМП). Проблема в том, что оверлей Стима / Дискорда почему-то там не работает (монопольный режим мб какой-то, я хз) Я хочу сделать .dll-ку, чтобы хукнуть d3d9 EndScene Это мне вообще чё надо делать? Искать адреса что хукать? Или какой метод... Если да, то...

www.blast.hk


А вот нужный тебе код:

C++:





Код:
#include "MinHook.h"
std
::
uintptr_t
find_device
(
std
::
uint32_t
Len
)
{
static
std
::
uintptr_t base
=
[
]
(
std
::
size_t Len
)
{
std
::
string
path_to
(
MAX_PATH
,
'\0'
)
;
if
(
auto
size
=
GetSystemDirectoryA
(
(
LPSTR
)
path_to
.
data
(
)
,
MAX_PATH
)
)
{
path_to
.
resize
(
size
)
;
path_to
+=
"\\d3d9.dll"
;
std
::
uintptr_t dwObjBase
=
reinterpret_cast

(
LoadLibraryA
(
path_to
.
c_str
(
)
)
)
;
while
(
dwObjBase
++

(
dwObjBase
+
0x00
)
==
0x06C7
&&
*
reinterpret_cast

(
dwObjBase
+
0x06
)
==
0x8689
&&
*
reinterpret_cast

(
dwObjBase
+
0x0C
)
==
0x8689
)
{
dwObjBase
+=
2
;
break
;
}
}
return
dwObjBase
;
}
return
std
::
uintptr_t
(
0
)
;
}
(
Len
)
;
return
base
;
}
void
*
get_function_address
(
int
VTableIndex
)
{
return
(
*
reinterpret_cast

(
find_device
(
0x128000
)
)
)
[
VTableIndex
]
;
}
HRESULT
(
__stdcall
*
IDirect3DDevice9__Present
)
(
LPDIRECT3DDEVICE9 pDevice
,
CONST RECT
*
pSrcRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindow
,
CONST RGNDATA
*
pDirtyRegion
)
;
HRESULT __stdcall
IDirect3DDevice9__Present_Hook
(
LPDIRECT3DDEVICE9 pDevice
,
CONST RECT
*
pSrcRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindow
,
CONST RGNDATA
*
pDirtyRegion
)
{
// do something...
return
IDirect3DDevice9__Present
(
pDevice
,
pSrcRect
,
pDestRect
,
hDestWindow
,
pDirtyRegion
)
;
}
HRESULT
(
__stdcall
*
IDirect3DDevice9__Reset
)
(
LPDIRECT3DDEVICE9 pDevice
,
D3DPRESENT_PARAMETERS
*
pPresentationParameters
)
;
HRESULT __stdcall
IDirect3DDevice9__Reset_Hook
(
LPDIRECT3DDEVICE9 pDevice
,
D3DPRESENT_PARAMETERS
*
pPresentationParameters
)
{
// do something...
return
IDirect3DDevice9__Reset
(
pDevice
,
pPresentationParameters
)
;
}
DWORD WINAPI
InitializeAndLoad
(
LPVOID hModule
)
{
MH_CreateHook
(
get_function_address
(
17
)
,
&
IDirect3DDevice9__Present_Hook
,
reinterpret_cast

(
&
IDirect3DDevice9__Present
)
)
;
MH_EnableHook
(
get_function_address
(
17
)
)
;
MH_CreateHook
(
get_function_address
(
16
)
,
&
IDirect3DDevice9__Reset_Hook
,
reinterpret_cast

(
&
IDirect3DDevice9__Reset
)
)
;
MH_EnableHook
(
get_function_address
(
16
)
)
;
return
0
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD ul_reason_for_call
,
LPVOID lpReserved
)
{
switch
(
ul_reason_for_call
)
{
case
DLL_PROCESS_ATTACH
:
{
DisableThreadLibraryCalls
(
hModule
)
;
MH_Initialize
(
)
;
CreateThread
(
0
,
0
,
&
InitializeAndLoad
,
hModule
,
0
,
0
)
;
break
;
}
case
DLL_PROCESS_DETACH
:
{
MH_DisableHook
(
get_function_address
(
17
)
)
;
MH_DisableHook
(
get_function_address
(
16
)
)
;
MH_RemoveHook
(
get_function_address
(
17
)
)
;
MH_RemoveHook
(
get_function_address
(
16
)
)
;
break
;
}
}
return
1
;
}




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

но как я не искал, функции получения координаты кости(на голом C++) нет.
Я думаю, что это может быть тут, но не уверен.
 
Ответить с цитированием

  #24  
Старый 06.04.2024, 21:51
qwertyrus
Познающий
Регистрация: 29.10.2023
Сообщений: 33
С нами: 1339196

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

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

Сам недавно разбирался, вот тема:

AmazingRP / d3d9 hook

Хочу рисовать поверх окна Амазинг РП (КРМП). Проблема в том, что оверлей Стима / Дискорда почему-то там не работает (монопольный режим мб какой-то, я хз) Я хочу сделать .dll-ку, чтобы хукнуть d3d9 EndScene Это мне вообще чё надо делать? Искать адреса что хукать? Или какой метод... Если да, то...

www.blast.hk


А вот нужный тебе код:

C++:





Код:
#include "MinHook.h"
std
::
uintptr_t
find_device
(
std
::
uint32_t
Len
)
{
static
std
::
uintptr_t base
=
[
]
(
std
::
size_t Len
)
{
std
::
string
path_to
(
MAX_PATH
,
'\0'
)
;
if
(
auto
size
=
GetSystemDirectoryA
(
(
LPSTR
)
path_to
.
data
(
)
,
MAX_PATH
)
)
{
path_to
.
resize
(
size
)
;
path_to
+=
"\\d3d9.dll"
;
std
::
uintptr_t dwObjBase
=
reinterpret_cast

(
LoadLibraryA
(
path_to
.
c_str
(
)
)
)
;
while
(
dwObjBase
++

(
dwObjBase
+
0x00
)
==
0x06C7
&&
*
reinterpret_cast

(
dwObjBase
+
0x06
)
==
0x8689
&&
*
reinterpret_cast

(
dwObjBase
+
0x0C
)
==
0x8689
)
{
dwObjBase
+=
2
;
break
;
}
}
return
dwObjBase
;
}
return
std
::
uintptr_t
(
0
)
;
}
(
Len
)
;
return
base
;
}
void
*
get_function_address
(
int
VTableIndex
)
{
return
(
*
reinterpret_cast

(
find_device
(
0x128000
)
)
)
[
VTableIndex
]
;
}
HRESULT
(
__stdcall
*
IDirect3DDevice9__Present
)
(
LPDIRECT3DDEVICE9 pDevice
,
CONST RECT
*
pSrcRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindow
,
CONST RGNDATA
*
pDirtyRegion
)
;
HRESULT __stdcall
IDirect3DDevice9__Present_Hook
(
LPDIRECT3DDEVICE9 pDevice
,
CONST RECT
*
pSrcRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindow
,
CONST RGNDATA
*
pDirtyRegion
)
{
// do something...
return
IDirect3DDevice9__Present
(
pDevice
,
pSrcRect
,
pDestRect
,
hDestWindow
,
pDirtyRegion
)
;
}
HRESULT
(
__stdcall
*
IDirect3DDevice9__Reset
)
(
LPDIRECT3DDEVICE9 pDevice
,
D3DPRESENT_PARAMETERS
*
pPresentationParameters
)
;
HRESULT __stdcall
IDirect3DDevice9__Reset_Hook
(
LPDIRECT3DDEVICE9 pDevice
,
D3DPRESENT_PARAMETERS
*
pPresentationParameters
)
{
// do something...
return
IDirect3DDevice9__Reset
(
pDevice
,
pPresentationParameters
)
;
}
DWORD WINAPI
InitializeAndLoad
(
LPVOID hModule
)
{
MH_CreateHook
(
get_function_address
(
17
)
,
&
IDirect3DDevice9__Present_Hook
,
reinterpret_cast

(
&
IDirect3DDevice9__Present
)
)
;
MH_EnableHook
(
get_function_address
(
17
)
)
;
MH_CreateHook
(
get_function_address
(
16
)
,
&
IDirect3DDevice9__Reset_Hook
,
reinterpret_cast

(
&
IDirect3DDevice9__Reset
)
)
;
MH_EnableHook
(
get_function_address
(
16
)
)
;
return
0
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD ul_reason_for_call
,
LPVOID lpReserved
)
{
switch
(
ul_reason_for_call
)
{
case
DLL_PROCESS_ATTACH
:
{
DisableThreadLibraryCalls
(
hModule
)
;
MH_Initialize
(
)
;
CreateThread
(
0
,
0
,
&
InitializeAndLoad
,
hModule
,
0
,
0
)
;
break
;
}
case
DLL_PROCESS_DETACH
:
{
MH_DisableHook
(
get_function_address
(
17
)
)
;
MH_DisableHook
(
get_function_address
(
16
)
)
;
MH_RemoveHook
(
get_function_address
(
17
)
)
;
MH_RemoveHook
(
get_function_address
(
16
)
)
;
break
;
}
}
return
1
;
}




Я думаю, что это может быть тут, но не уверен.
Что я делаю не так? Все методы из инета попробовал, добавлял в папку c включениями, к исходному файлу dllmain.cpp, ничего не помогает


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

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

Репутация: 183


По умолчанию

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

Что я делаю не так? Все методы из инета попробовал, добавлял в папку c включениями, к исходному файлу dllmain.cpp, ничего не помогает
Ой как я это не люблю.

Вот тут есть правильное подключение Imgui.

Гайд - Работа с рендером и Directx9 [4]

Создание ASI-плагина с нуля Хуки – что это такое и как с ними работать Безопасная инициализация и работа с SAMP Работа с рендером и Directx9 Обработка событий окна + ImGui В этом гайде будет рассказано про работу с рендером в Directx9 с помощью ImGui При использовании на других ресурсах...

www.blast.hk


Попробуй сделать всё как там
 
Ответить с цитированием

  #26  
Старый 07.04.2024, 01:20
qwertyrus
Познающий
Регистрация: 29.10.2023
Сообщений: 33
С нами: 1339196

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

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

Ой как я это не люблю.
Вот тут есть правильное подключение Imgui.

Гайд - Работа с рендером и Directx9 [4]

Создание ASI-плагина с нуля Хуки – что это такое и как с ними работать Безопасная инициализация и работа с SAMP Работа с рендером и Directx9 Обработка событий окна + ImGui В этом гайде будет рассказано про работу с рендером в Directx9 с помощью ImGui При использовании на других ресурсах...

www.blast.hk


Попробуй сделать всё как там
не помогло, стало только хуже



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

не помогло, стало только хуже


создал новый, чистый проект, скомпилировало, но крашит при разворачивании игры сразу(инжект, разворачиваю - бамс и краш)...
 
Ответить с цитированием

  #27  
Старый 09.04.2024, 09:49
qwertyrus
Познающий
Регистрация: 29.10.2023
Сообщений: 33
С нами: 1339196

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

тему можно закрывать, всё работает
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.