Другое С/С++ Вопрос - Ответ

0x73616D

Активный
140
43
Can someone provide a clear, direct and concise example code of an OnCloseDialog hook? (.ASI)

Может ли кто-нибудь предоставить ясный, прямой и краткий пример кода перехватчика OnCloseDialog? (.ASI)
 
  • Нравится
Реакции: Vintik

Rvmsitow

Новичок
12
1
Патч samp.dll | CreateVehicle

Здравствуйте, я хотел бы обойти ограничение на модели транспортных средств между 400 и 611 в SA:MP 0.3DL, есть идеи?

СПАСИБО !
 

вайега52

Налуашил состояние
Модератор
2,998
3,123
Can someone provide a clear, direct and concise example code of an OnCloseDialog hook? (.ASI)

Может ли кто-нибудь предоставить ясный, прямой и краткий пример кода перехватчика OnCloseDialog? (.ASI)
Попробуй что-то подобное (показал на примере kthook)
C++:
#include <Windows.h>

#include "kthook/kthook.hpp"



// edx - bypass MSVC
kthook::kthook_simple<void(__fastcall*)(void* pDialog, void* edx, char button);>(CDialogCloseHook);



void __fastcall CDialogCloseHooked(const decltype(CDialogCloseHook)& hook, void* pDialog, void* edx, char button)
{
    // code
    return hook.get_trampoline()(pDialog, edx, button);
}


// install hoook (after initialization of SAMP)
CDialogCloseHook.set_cb(&CDialogCloseHooked);
auto sampHandle = reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll"));
// 0x6C040 - R1
CDialogCloseHook.set_dest(sampHandle + 0x6C040);
CDialogCloseHook.install();
 
  • Нравится
Реакции: 0x73616D

g305noobo

Известный
Модератор
364
659
можно ли как-то проверить иниацилизацию сампа без хуков/потоков?
 

вайега52

Налуашил состояние
Модератор
2,998
3,123
можно ли как-то проверить иниацилизацию сампа без хуков/потоков?
не совсем понимаю как это должно выглядеть. ты либо проверяешь (скорее всего в потоке), что значение инициализировалось (например CNetGame), либо хукаешь функцию, которая вызывается после/во время инициализации
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,760
4,891
Попробуй что-то подобное (показал на примере kthook)
C++:
#include <Windows.h>

#include "kthook/kthook.hpp"



// edx - bypass MSVC
kthook::kthook_simple<void(__fastcall*)(void* pDialog, void* edx, char button);>(CDialogCloseHook);



void __fastcall CDialogCloseHooked(const decltype(CDialogCloseHook)& hook, void* pDialog, void* edx, char button)
{
    // code
    return hook.get_trampoline()(pDialog, edx, button);
}


// install hoook (after initialization of SAMP)
CDialogCloseHook.set_cb(&CDialogCloseHooked);
auto sampHandle = reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll"));
// 0x6C040 - R1
CDialogCloseHook.set_dest(sampHandle + 0x6C040);
CDialogCloseHook.install();
edx bypass в ктхуке не нужен, хотя и с ним работать будет
 
  • Нравится
  • Вау
Реакции: etereon и вайега52

0x73616D

Активный
140
43
Попробуй что-то подобное (показал на примере kthook)
C++:
#include <Windows.h>

#include "kthook/kthook.hpp"



// edx - bypass MSVC
kthook::kthook_simple<void(__fastcall*)(void* pDialog, void* edx, char button);>(CDialogCloseHook);



void __fastcall CDialogCloseHooked(const decltype(CDialogCloseHook)& hook, void* pDialog, void* edx, char button)
{
    // code
    return hook.get_trampoline()(pDialog, edx, button);
}


// install hoook (after initialization of SAMP)
CDialogCloseHook.set_cb(&CDialogCloseHooked);
auto sampHandle = reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll"));
// 0x6C040 - R1
CDialogCloseHook.set_dest(sampHandle + 0x6C040);
CDialogCloseHook.install();
great! would it be possible to get an example without KtHook?
 

Rvmsitow

Новичок
12
1
Можешь почитать данную статью: link
can u help me please with my question ?

thanks you ! :)
 

вайега52

Налуашил состояние
Модератор
2,998
3,123
can u help me please with my question ?

thanks you ! :)
возможно это оно: https://www.blast.hk/threads/90249/
 

chebocsar

Новичок
6
0
почему русские символы каверкаются? локализация подключена в чем тогда проблема , никак не пойму(visual studio)
Код:
#include <iostream>
#include<locale>
using namespace std;

void passportIndentification()
{

setlocale(LC_ALL, "rus");

int age;

string name;
cout << "Введите свое имя" << endl;
cin >> name;
string surname;
cout << "Введите свою фамилию" << endl;
cin >> surname;
cout << "Введите свой возвраст" << endl;
cin >> age;
string nation;
cout << "Введите свою нацию" << endl;
cin >> nation;
string from;
cout << "Введите свою страну" << endl;
cin >> from;
string town;
cout << "Введите свой город" << endl;
cin >> town;


cout << "Ваше имя: " << name << endl;
cout << "Ваша фамилия: " << surname << endl;
cout << "Ваш возвраст: " << age << endl;
cout << "Ваша нация: " << nation << endl;
cout << "Ваша страна: " << from << endl;
cout << "Ваш город: " << town << endl;

}
int main() {
passportIndentification();

return 0;
}