
16.08.2019, 22:47
|
|
Познавший АНТИЧАТ
Регистрация: 22.02.2017
Сообщений: 1,474
С нами:
4852492
Репутация:
88
|
|
Сообщение от Stiopko
Здарова, сделал я структуру для хука, но она почему-то не ставит хук, хотя просто функция работала нормально, как можно решить?
C++:
Код:
struct
Hook
{
DWORD addr
=
NULL
;
byte
*
data
=
nullptr
;
size_t size
=
NULL
;
Hook
(
const
DWORD
&
addr
,
const
DWORD
&
func
,
const
size_t
&
size
=
5
)
{
this
->
data
=
new
byte
[
size
]
;
this
->
size
=
size
;
this
->
addr
=
addr
;
DWORD dwProt
=
PAGE_EXECUTE_READWRITE
;
VirtualProtect
(
(
void
*
)
addr
,
size
,
dwProt
,
&
dwProt
)
;
memcpy
(
data
,
(
void
*
)
addr
,
size
)
;
memset
(
(
void
*
)
(
addr
-
4
)
,
0x90
,
size
-
4
)
;
*
(
byte
*
)
(
addr
)
=
0xE9
;
// jmp
*
(
unsigned
int
*
)
(
addr
+
1
)
=
func
-
(
addr
+
5
)
;
VirtualProtect
(
(
void
*
)
addr
,
size
,
dwProt
,
NULL
)
;
}
~
Hook
(
)
{
if
(
data
!=
nullptr
)
{
DWORD dwProt
=
PAGE_EXECUTE_READWRITE
;
VirtualProtect
(
(
void
*
)
addr
,
size
,
dwProt
,
&
dwProt
)
;
memcpy
(
(
void
*
)
addr
,
data
,
size
)
;
VirtualProtect
(
(
void
*
)
addr
,
size
,
dwProt
,
NULL
)
;
delete
[
]
data
;
}
}
}
;
C++:
[CODE]
void
injectCall
(
char
*
mainaddrress
,
char
*
target
,
size_t bytes
=
5
)
{
DWORD protection
=
PAGE_READWRITE
;
VirtualProtect
(
mainaddrress
,
bytes
,
protection
,
&
protection
)
;
*
mainaddrress
=
0xE8
;
*
reinterpret_cast
(
mainaddrress
+
1
)
=
reinterpret_cast
(
target
)
-
(
reinterpret_cast
(
mainaddrress
)
+
5
)
;
for
(
size_t i
=
5
;
i
(
mainaddrress
+
1
)
=
reinterpret_cast
(
target
)
-
(
reinterpret_cast
(
mainaddrress
)
+
5
)
;
for
(
size_t i
=
5
;
i
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|