[GDK] Public Hook.
#1

Кто-нибудь знает как Zeex делает hook на public's? То есть чтобы в С/C++ вызывалась моя функция, а не в .amx.
А то в .amx относительный адрес на псевдо-код.

(Не вызывая нативов внутри public's)
Reply
#2

Плагин создает свою виртуальную таблицу функций. Он создаёт перехваты для amx_FindPublic, amx_Exec, в которых контролирует вызовы public-функций: если в моде функции нет, то amx_FindPublic всё равно вернёт истину (AMX_ERR_NONE), а плагин в свою очередь добавит функцию в свою виртуальную таблицу. В функции же amx_Exec просто вызывает эту функцию, учитывая значения в виртуальной таблице.

Перехват функций осуществляется в этом файле.
Reply
#3

Quote:
Originally Posted by VVWVV
View Post
Плагин создает свою виртуальную таблицу функций. Он создаёт перехваты для amx_FindPublic, amx_Exec, в которых контролирует вызовы public-функций: если в моде функции нет, то amx_FindPublic всё равно вернёт истину (AMX_ERR_NONE), а плагин в свою очередь добавит функцию в свою виртуальную таблицу. В функции же amx_Exec просто вызывает эту функцию, учитывая значения в виртуальной таблице.

Перехват функций осуществляется в этом файле.
Спасибо
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)