 |
|

05.04.2024, 21:29
|
|
Познавший АНТИЧАТ
Регистрация: 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"
)
;
Т. е. проблема в координатах всё таки?
|
|
|

05.04.2024, 21:34
|
|
Познающий
Регистрация: 29.10.2023
Сообщений: 33
С нами:
1339196
Репутация:
8
|
|
Сообщение от Vintik
Т. е. проблема в координатах всё таки?
вероятнее всего я где то ошибаюсь в использовании указателя, поэтому крашит. Щас вот методом пробы запуска и крашей ищу где оно обрывается
Сообщение от Vintik
Т. е. проблема в координатах всё таки?
Я решил проблему... Она была в том, что cpedsearch - cped+оффсет, а я брал его как поинтер еще один, в итоге попадал не на тот адрес и крашило, сейчас всё норм(последняя цифра это i(я проверял так). Осталось теперь прикрутить хук директ икса(буду рад если поможешь), а затем отрисовать линии. Хотелось бы по костям рисовать, но как я не искал, функции получения координаты кости(на голом C++) нет.

|
|
|

05.04.2024, 23:35
|
|
Познавший АНТИЧАТ
Регистрация: 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++) нет.
Я думаю, что это может быть тут, но не уверен.
|
|
|

06.04.2024, 21:51
|
|
Познающий
Регистрация: 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, ничего не помогает

|
|
|

07.04.2024, 00:44
|
|
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами:
4598023
Репутация:
183
|
|
Сообщение от qwertyrus
Что я делаю не так? Все методы из инета попробовал, добавлял в папку c включениями, к исходному файлу dllmain.cpp, ничего не помогает
Ой как я это не люблю.
Вот тут есть правильное подключение Imgui.
Гайд - Работа с рендером и Directx9 [4]
Создание ASI-плагина с нуля Хуки – что это такое и как с ними работать Безопасная инициализация и работа с SAMP Работа с рендером и Directx9 Обработка событий окна + ImGui В этом гайде будет рассказано про работу с рендером в Directx9 с помощью ImGui При использовании на других ресурсах...
www.blast.hk
Попробуй сделать всё как там
|
|
|

07.04.2024, 01:20
|
|
Познающий
Регистрация: 29.10.2023
Сообщений: 33
С нами:
1339196
Репутация:
8
|
|
Сообщение от Vintik
Ой как я это не люблю.
Вот тут есть правильное подключение Imgui.
Гайд - Работа с рендером и Directx9 [4]
Создание ASI-плагина с нуля Хуки – что это такое и как с ними работать Безопасная инициализация и работа с SAMP Работа с рендером и Directx9 Обработка событий окна + ImGui В этом гайде будет рассказано про работу с рендером в Directx9 с помощью ImGui При использовании на других ресурсах...
www.blast.hk
Попробуй сделать всё как там
не помогло, стало только хуже
Сообщение от qwertyrus
не помогло, стало только хуже

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

09.04.2024, 09:49
|
|
Познающий
Регистрация: 29.10.2023
Сообщений: 33
С нами:
1339196
Репутация:
8
|
|
тему можно закрывать, всё работает
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|