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

g305noobo

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

вайега52

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

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,757
4,895
Попробуй что-то подобное (показал на примере 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?
 

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;
}
 

moreveal

Известный
994
734
почему русские символы каверкаются? локализация подключена в чем тогда проблема , никак не пойму(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;
}
с консолью трабл скорее, пробуй что-нибудь отсюда
 

vmprotect

Известный
394
279
почему русские символы каверкаются? локализация подключена в чем тогда проблема , никак не пойму(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;
}
с локализацией все хорошо, попробуй другую консоль
 

cheboxarov.coding

Новичок
13
18
почему русские символы каверкаются? локализация подключена в чем тогда проблема , никак не пойму(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;
}
Код:
#include <iostream>
#include<locale>
#include <io.h>
#include <fcntl.h>

using namespace std;

void passportIndentification()
{

    _setmode(_fileno(stdin), _O_U16TEXT);
    _setmode(_fileno(stdout), _O_U16TEXT);
    setlocale(LC_ALL, "rus");

    int age;

    wstring name;
    wcout << L"Введите свое имя" << endl;
    wcin >> name;

    wstring surname;
    wcout << L"Введите свою фамилию" << endl;
    wcin >> surname;

    wcout << L"Введите свой возвраст" << endl;
    wcin >> age;
    wstring nation;
    wcout << L"Введите свою нацию" << endl;
    wcin >> nation;
    wstring from;
    wcout << L"Введите свою страну" << endl;
    wcin >> from;
    wstring town;
    wcout << L"Введите свой город" << endl;
    wcin >> town;


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

}
int main() {
passportIndentification();

return 0;
}
 
  • Эм
Реакции: Z3roKwq