Просмотр полной версии : C++ || Как работает обход OBS Bandicam и т.п
В чем разница в хуке девайса. Почему в одном случае OBS видит отрисовку, а в другом нет
Как вообще работает обход этих программ
F0RQU1N and
08.07.2022, 10:16
ну вроде как обс из презента игры берет картинку, можно вместо презента рисовать в эндсцене например
ну вроде как обс из презента игры берет картинку, можно вместо презента рисовать в эндсцене например
Как это сделать .-.
ну вроде как обс из презента игры берет картинку, можно вместо презента рисовать в эндсцене например
У меня забавная ситуация выходит
Порой OBS захватывает что я рисую, а порой нет. Приходится игру перезапускать, если менюшка отоброзилась
UPD Меню отображается если OBS был запущен перед запуском самой игры
F0RQU1N and
08.07.2022, 13:58
У меня забавная ситуация выходит
Порой OBS захватывает что я рисую, а порой нет. Приходится игру перезапускать, если менюшка отоброзилась
UPD Меню отображается если OBS был запущен перед запуском самой игры
ну хукни эндсцену, либо презент обса
sizeoftrickster
09.07.2022, 21:06
Как это сделать .-.
Хук Present'a
Present -> 17 VTable
Reset -> 16 VTable
Нажимай на ссылку "исходника", тебе перекинет на Github или Gitlab с указанной функцией
1. Искать по паттерну -> "C7 06 ?? ?? ?? ?? 89 86 ?? ?? ?? ?? 89 86"
1.1 Из гайда Работа с рендером и Directx9 [4] (https://www.blast.hk/threads/113060/) bykin4stat (https://www.blast.hk/members/161331/)
C++:
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
(
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
]
;
}
1.2 Из исходника (https://www.blast.hk/redirect/aHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20va2luNHN0YXQvOTNmMT dhNDBlNWUxMTMwOGFhNzMzZjM3NTBiODRhYWIjZmlsZS1tYWlu LWNwcC1MNjY) Alpha Chat (https://www.blast.hk/threads/76448/) bykin4stat (https://www.blast.hk/members/161331/)
C++:
DWORD
FindDevice
(
DWORD Len
)
{
DWORD dwObjBase
=
0
;
char
infoBuf
[
MAX_PATH
]
;
GetSystemDirectoryA
(
infoBuf
,
MAX_PATH
)
;
strcat_s
(
infoBuf
,
MAX_PATH
,
"\\d3d9.dll"
)
;
dwObjBase
=
(
DWORD
)
LoadLibraryA
(
infoBuf
)
;
while
(
dwObjBase
++
(
VTable
[
VTableIndex
]
)
;
}
;
2. По гташному адресу
2.1 Из исходника (https://www.blast.hk/redirect/aHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20va2luNHN0YXQvOTNmMT dhNDBlNWUxMTMwOGFhNzMzZjM3NTBiODRhYWIjZmlsZS1tYWlu LWNwcC1MOTk) Alpha Chat (https://www.blast.hk/threads/76448/) bykin4stat (https://www.blast.hk/members/161331/)
C++:
DWORD pDevice
=
*
reinterpret_cast
(
0xC97C28
)
;
void
*
*
vTable
=
*
reinterpret_cast
(
pDevice
)
;
2.2 Из исходника (https://gitlab.com/samp-plugins/ultrawh/-/blob/main/src/dx9.cpp#L48) ultra wallhack (https://www.blast.hk/threads/130055/) bysc6ut (https://www.blast.hk/members/406860/)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot