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

  #1  
Старый 07.09.2021, 21:53
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

kthook​

x86 библиотека для хуков с полной поддержкой функторов, лямбд с захватами и прочих

Примеры кода:​

C++:





Код:
int
CFASTCALL
func1
(
float
a
,
float
b
)
{
print_info
(
a
,
b
)
;
a
=
50
;
b
=
100
;
return
5
;
}
int
main
(
)
{
// func_ptr is pointer to function
auto
func_ptr
=
&
func1
;
// func_type is int(CFASTCALL*)(float, float)
using
func_type
=
decltype
(
&
func1
)
;
// Creating simple hook object with function type is template parameter and function pointer in constructor
kthook
::
kthook_signal

hook
{
func_ptr
}
;
// Connecting lambda callback that receiving function arguments by references
hook
.
before
+=
[
]
(
const
auto
&
hook
,
float
&
a
,
float
&
b
)
{
print_info
(
a
,
b
)
;
return
true
;
}
;
/*
    [operator () at 31]: a = 30; b = 20
    [func1 at 16 ]: a = 30; b = 20
    */
func1
(
30.f
,
20.f
)
;
}


C++:





Код:
int
main
(
)
{
auto
func_ptr
=
&
func1
;
using
func_type
=
decltype
(
&
func1
)
;
kthook
::
kthook_simple_t

hook
{
func_ptr
}
;
hook
.
before
.
connect
(
[
]
(
const
auto
&
hook
,
float
&
a
,
float
&
b
)
{
print_info
(
a
,
b
)
;
// changing arguments
a
=
50.f
,
b
=
30.f
;
return
true
;
}
)
;
// connect after callback
hook
.
after
.
connect
(
[
]
(
const
auto
&
hook
,
int
&
return_value
,
float
&
a
,
float
&
b
)
{
print_info
(
a
,
b
)
;
print_return_value
(
return_value
)
;
// changing return_value
return_value
=
20
;
return
true
;
}
)
;
/*
    [operator () at 31]: a = 30; b = 20
    [func1 at 16 ]: a = 50; b = 30
    [operator () at 34]: a = 50; b = 30
    [operator () at 34]: return_value = 5;
    [main at 20]: return_value = 20;
    */
auto
ret_val
=
func1
(
30.f
,
20.f
)
;
print_return_value
(
ret_val
)
}


Остальные примеры можно найти на гитхабе

Download & Source:

GitHub - kin4stat/kthook

Contribute to kin4stat/kthook development by creating an account on GitHub.

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





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


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




ANTICHAT ™ © 2001- Antichat Kft.