Чистые плюсы это в твоем понимании обмазаться асемблером? Напиши прототип и не еби мозгиПытаюсь хукнуть диалоги на чистых плюсах.
Возник попрос как записывать такое значение из стека при его вытаскивании:
Посмотреть вложение 175525
типо
Или как?C++:mov eax, [esp + -0x0C] mov eax, [esp + -0x08]
Я делаю jmp хук по гайду кинчаЧистые плюсы это в твоем понимании обмазаться асемблером? Напиши прототип и не еби мозги
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 компиль?Я делаю 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 } }
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<decltype(dialogHook)*>(pOriginalFunction)(pDialog, fastcallshit, wID, iStyle, "Kek", szText, szButton1, szButton2, bSend); //decltype потому что мне лень писать...
}
Если тебе уж нужен только 1 плагин, то закажи его.Мне для одного плагина С учить?)
Как изменить шаблон проекта в vs который нацелен на сборку dll, на тот, что собирает kernel драйвер (.sys)?
#include <iostream>
#include <algorithm>
#include <filesystem> //из-за этих инклудов не собирается прога
#include <regex> //из-за этих инклудов не собирается прога
int main()
{
using namespace std;
string sda("dadasdasdadafdfgsdf");
transform(sda.begin(), sda.end(), sda.begin(), toupper);
cout << sda;
}
не собирается прога, из-за инклудов что делать?
Посмотреть вложение 176453C++:#include <iostream> #include <algorithm> #include <filesystem> //из-за этих инклудов не собирается прога #include <regex> //из-за этих инклудов не собирается прога int main() { using namespace std; string sda("dadasdasdadafdfgsdf"); transform(sda.begin(), sda.end(), sda.begin(), toupper); cout << sda; }
transform(sda.cbegin(), sda.cend(), sda.begin(), [](unsigned char c) { return std::toupper(c); });
апкак отключить весь рендер чата в сампе r3?
то есть включая все задействоавнные кнопки (ф6, t, pgdown, pgup)
скроллбар и мышь
бампКак узнать есть ли игрок в поле видимости по ID(как пример не за стеной ли)