Показать сообщение отдельно

  #2  
Старый 31.10.2022, 22:34
RTD
Постоянный
Регистрация: 18.03.2017
Сообщений: 410
С нами: 4818548

Репутация: 133
По умолчанию

Цитата:
Сообщение от ARMOR  

Я делаю jmp хук по гайду кинча

Гайд - Хуки – что это такое и как с ними работать [2]

Хотел продолжить первый гайд, но понял что нужно объяснить что такое хуки Создание ASI-плагина с нуля Хуки – что это такое и как с ними работать Безопасная инициализация и работа с SAMP Работа с рендером и Directx9 Обработка событий окна + ImGui В этом гайде я расскажу что такое хуки, как...

www.blast.hk


Только ставлю прототип и асемблер от диалогов.

Код:

C++:





Код:
void
dialogHook
(
void
*
pDialog
,
uint16_t
wID
,
uint8_t
iStyle
,
const
char
*
szCaption
,
const
char
*
szText
,
const
char
*
szButton1
,
const
char
*
szButton2
,
BOOL bSend
)
{
AddMessageJumpQ
(
"~r~Hello from blast.hk"
,
5000
,
0
,
false
)
;
}
void
__declspec
(
naked
)
HOOK_Raw_Dialog
(
void
)
{
static
void
*
pDialog
;
static
int
wId
;
static
int
iStyle
;
static
const
char
*
szCaption
;
static
const
char
*
szText
;
static
const
char
*
szButton1
;
static
const
char
*
szButton2
;
static
BOOL bSend
;
__asm
{
// Вытаскиваем все аргументы со стека
mov eax
,
[
esp
+
-
0x0C
]
mov wId
,
eax
        mov eax
,
[
esp
+
-
0x08
]
mov iStyle
,
eax
        mov eax
,
[
esp
+
0x04
]
mov szCaption
,
eax
        mov eax
,
[
esp
+
0x08
]
mov szText
,
eax
        mov eax
,
[
esp
+
0x0C
]
mov szButton1
,
eax
        mov eax
,
[
esp
+
0x10
]
mov szButton2
,
eax
        mov eax
,
[
esp
+
0x1C
]
mov bSend
,
eax
        pushad
// Сохраняем все регистры
}
dialogHook
(
pDialog
,
wId
,
iStyle
,
szCaption
,
szText
,
szButton1
,
szButton2
,
bSend
)
;
__asm
{
popad
// вытаскиваем сохраненные регистры
// Прыгаем в трамплин для продолжения исполнения. Если не нужно продолжать исполнение - нужно поставить опкод ret
jmp pOriginalFunction
}
}

msvc компиль?

C++:





Код:
void
__fastcall
dialogHook
(
void
*
pDialog
,
void
*
fastcallshit
,
uint16_t
wID
,
uint8_t
iStyle
,
const
char
*
szCaption
,
const
char
*
szText
,
const
char
*
szButton1
,
const
char
*
szButton2
,
BOOL bSend
)
{
AddMessageJumpQ
(
"~r~Hello from blast.hk"
,
5000
,
0
,
false
)
;
reinterpret_cast

(
pOriginalFunction
)
(
pDialog
,
fastcallshit
,
wID
,
iStyle
,
"Kek"
,
szText
,
szButton1
,
szButton2
,
bSend
)
;
//decltype потому что мне лень писать...
}
 
Ответить с цитированием