SR_team
05.05.2016, 18:17
UPD 23.10.2017: Ну и УГ, не юзайте это. Лучше тащите хуки из этого шаблона: Prime-Hack | AsiPlugin(https://dl.prime-hack.net/AsiPlugin/) (https://www.blast.hk/redirect/aHR0cHM6Ly9kbC5wcmltZS1oYWNrLm5ldC9Bc2lQbHVnaW4v)
Написал небольшой класс для управления хуками.
Функции класса:
Поиск участка кода, по его части.
Использование:
Код:
DWORD ret = FindPattern(DWORD dwAddress, DWORD dwLen, BYTE *bMask, char * szMask)
где dsAddress - начальный аддрес поиска. Например GetModuleHandle(samp.dll), для поиска функций в samp.dll
dwLen - размер адресного пространство (как далеко искать). Например для поиска статичных функций в samp.dll, можно указать ее размер.
bMask - часть кода искомой функции
szMask - маска кода (x - байт должен быть такой же как в bMask, ? - байт может быть любой)
ret - адрес искомого участка кода
Создает хук.
Использование:
Код:
DWORD ret = CreateHOOK(DWORD dwAddress, DWORD dwFunc, TypeHOOK type, size_t len)
где dwAddress - адрес кода, на который необходимо поставить хук.
dwFunc - функция на которую будет ссылаться хук
type - тип хука
Jump - обычный переход, оригинальный код будет вызываться после выхода из вашей функции
Call - вызов вашей функции, оригинальный код не будет вызываться после выхода из вашей функции
Call_s - вызов вашей функции, оригинальный код будет вызываться после выхода из вашей функции
len - количество заменяемых байт (не меньше 5)
ret - адрес выхода из функции, у Jump хуков в конце должен быть переход на этот адрес, для вызова оригинального кода, этот же адрес используется для удаления хука (сделано это в связи с тем, что на 1 адрес можно нацепить несколько хуков)
Удаляет хук.
Использование:
Код:
bool ret = RemoveHOOK(DWORD dsAddress)
где dwAddress - адрес который вернула функция создания хука
ret - результат операции:
false - хук не существует, удален ранее, или создан не через данный класс
true - хук успешно удален
При вызове деструктора все хуки удаляются.
Весь сок в том, что хуки можно ставить друг на друга, пока не кончится память.
Копиригхт:
функция memcpy_safe и memset_safe взяты из соба
функция поиска участка кода была давно найдена где-то в интернетах, кажется на unkowncheats.me
Написал небольшой класс для управления хуками.
Функции класса:
Поиск участка кода, по его части.
Использование:
Код:
DWORD ret = FindPattern(DWORD dwAddress, DWORD dwLen, BYTE *bMask, char * szMask)
где dsAddress - начальный аддрес поиска. Например GetModuleHandle(samp.dll), для поиска функций в samp.dll
dwLen - размер адресного пространство (как далеко искать). Например для поиска статичных функций в samp.dll, можно указать ее размер.
bMask - часть кода искомой функции
szMask - маска кода (x - байт должен быть такой же как в bMask, ? - байт может быть любой)
ret - адрес искомого участка кода
Создает хук.
Использование:
Код:
DWORD ret = CreateHOOK(DWORD dwAddress, DWORD dwFunc, TypeHOOK type, size_t len)
где dwAddress - адрес кода, на который необходимо поставить хук.
dwFunc - функция на которую будет ссылаться хук
type - тип хука
Jump - обычный переход, оригинальный код будет вызываться после выхода из вашей функции
Call - вызов вашей функции, оригинальный код не будет вызываться после выхода из вашей функции
Call_s - вызов вашей функции, оригинальный код будет вызываться после выхода из вашей функции
len - количество заменяемых байт (не меньше 5)
ret - адрес выхода из функции, у Jump хуков в конце должен быть переход на этот адрес, для вызова оригинального кода, этот же адрес используется для удаления хука (сделано это в связи с тем, что на 1 адрес можно нацепить несколько хуков)
Удаляет хук.
Использование:
Код:
bool ret = RemoveHOOK(DWORD dsAddress)
где dwAddress - адрес который вернула функция создания хука
ret - результат операции:
false - хук не существует, удален ранее, или создан не через данный класс
true - хук успешно удален
При вызове деструктора все хуки удаляются.
Весь сок в том, что хуки можно ставить друг на друга, пока не кончится память.
Копиригхт:
функция memcpy_safe и memset_safe взяты из соба
функция поиска участка кода была давно найдена где-то в интернетах, кажется на unkowncheats.me