ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   C++ || Как работает обход OBS Bandicam и т.п (https://forum.antichat.xyz/showthread.php?t=1439706)

ANZR 08.07.2022 04:45

В чем разница в хуке девайса. Почему в одном случае OBS видит отрисовку, а в другом нет

Как вообще работает обход этих программ

F0RQU1N and 08.07.2022 10:16

ну вроде как обс из презента игры берет картинку, можно вместо презента рисовать в эндсцене например

ANZR 08.07.2022 11:05

Цитата:

Сообщение от F0RQU1N

ну вроде как обс из презента игры берет картинку, можно вместо презента рисовать в эндсцене например

Как это сделать .-.

Цитата:

Сообщение от F0RQU1N

ну вроде как обс из презента игры берет картинку, можно вместо презента рисовать в эндсцене например

У меня забавная ситуация выходит

Порой OBS захватывает что я рисую, а порой нет. Приходится игру перезапускать, если менюшка отоброзилась

UPD Меню отображается если OBS был запущен перед запуском самой игры

F0RQU1N and 08.07.2022 13:58

Цитата:

Сообщение от ANZR

У меня забавная ситуация выходит
Порой OBS захватывает что я рисую, а порой нет. Приходится игру перезапускать, если менюшка отоброзилась
UPD Меню отображается если OBS был запущен перед запуском самой игры

ну хукни эндсцену, либо презент обса

sizeoftrickster 09.07.2022 21:06

Цитата:

Сообщение от ANZR

Как это сделать .-.

Хук Present'a

Present -> 17 VTable

Reset -> 16 VTable

Нажимай на ссылку "исходника", тебе перекинет на Github или Gitlab с указанной функцией

1. Искать по паттерну -> "C7 06 ?? ?? ?? ?? 89 86 ?? ?? ?? ?? 89 86"

1.1 Из гайда Работа с рендером и Directx9 [4] bykin4stat

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 Из исходника Alpha Chat bykin4stat

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 Из исходника Alpha Chat bykin4stat

C++:





Код:

DWORD pDevice
=
*
reinterpret_cast

(
0xC97C28
)
;
void
*
*
vTable
=
*
reinterpret_cast

(
pDevice
)
;



2.2 Из исходника ultra wallhack bysc6ut


Время: 23:06