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

sc6ut

неизвестный
Модератор
382
1,075
когда делаю http запрос в длл библиотеке, то он остается в строках процесса. есть ли возможность как-либо скрыть его?
 

sc6ut

неизвестный
Модератор
382
1,075
Вроде хук
C++:
void CALLBACK WndProc_hooked(HWND &hwnd, UINT &Message, WPARAM &wparam, LPARAM &lparam) {
    switch (Message) {
    case WM_KEYUP:
        if (wparam == '9') {
            // ...
        }
        break;
    default:
        break;
    }
}

static hook wndproc(reinterpret_cast<LRESULT(CALLBACK*)(HWND,UINT,WPARAM,LPARAM)>(0x747EB0), WndProc_hooked);
я не знаю, конечно, какой хукер ты юзаешь, но в хукнутой функции у тебя почему-то стоят референсы вместо просто параметров, вместо LRESULT - void, и нет вызова оригинальной функции, поэтому игра ломается. вот тебе пример рабочего хука с помощью MinHook:
C++:
#include <Windows.h>
#include "MinHook.h"
#pragma comment(lib, "libMinHook-x86-v120-mt.lib") // либу выбираешь под версию тулсета и рантайм либу

WNDPROC origWndProc = nullptr; // создаём прототип для сохранения оригинального вндпрока

LRESULT __stdcall HOOKED_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    // твой код
    return origWndProc(hWnd, uMsg, wParam, lParam); // вызываем оригинальный вндпрок чтобы не сломать игру
}

// иницилиазируем минхук (1 раз)
MH_Initialize();
// создаем и включаем хук
MH_CreateHook(reinterpret_cast<LPVOID>(0x747EB0), &HOOKED_WndProc, reinterpret_cast<LPVOID*>(&origWndProc));
MH_EnableHook(reinterpret_cast<LPVOID>(0x747EB0));
 
  • Нравится
Реакции: etereon и Ya Zaregalsya

imring

Ride the Lightning
Всефорумный модератор
2,355
2,516
но в хукнутой функции у тебя почему-то стоят референсы вместо просто параметров, вместо LRESULT - void, и нет вызова оригинальной функции, поэтому игра ломается
вот хук, который использовался - https://github.com/allwanttokissme/Yet-another-hook-library. если тип возвращаемого значения void, то будет вызываться оригинальная функция (https://github.com/allwanttokissme/Yet-another-hook-library/blob/master/hook.h#L327, https://github.com/allwanttokissme/Yet-another-hook-library/blob/master/hook.h#L342)
 
  • Нравится
Реакции: sc6ut

Sana_Minotazaki

Участник
75
2
1 - Как исправить это в Visual Studio 2019?
C:\Новая папка\SFPlugin\SFPlugin\SFPlugin.vcxproj : warning : Невозможно найти средства сборки для Visual Studio 2012 - Windows XP (v110_xp). Установите Visual Studio 2012 - Windows XP (v110_xp), чтобы выполнить сборку с использованием средств сборки Visual Studio 2012 - Windows XP (v110_xp).
2 - Как я могу отправить сообщение в чат не используя SF Api?
 

sc6ut

неизвестный
Модератор
382
1,075
Как исправить это в Visual Studio 2019?
в настройках проекта выбери установленый тулсет и винсдк
2 - Как я могу отправить сообщение в чат не используя SF Api?
перед использованием проверь загруженость сампа
C++:
void add_chat_message(DWORD dwColor, LPCSTR szString, ...)
{
    va_list ap;

    char msg[/* SAMP_MAX_CHAT_MESSAGE */ 144] = { 0 };

    va_start(ap, szString);
    vsprintf_s(msg, szString, ap);
    va_end(ap);

    DWORD base = reinterpret_cast<DWORD>(GetModuleHandleW(L"samp.dll"));
    DWORD ptr_chat_info = base + /* SAMP_PTR_CHAT_INFO */ 0x21A0E4;
    DWORD ptr_function = base + /* SAMP_PTR_FUNC_ADDTOCHATWND */ 0x64010;

    __asm
    {
        mov eax, dword ptr[ptr_chat_info]
        mov ecx, dword ptr[eax]
        push 0
        push dwColor
        push 0
        lea eax, msg
        push eax
        push 8
        call ptr_function
    }
}
 
  • Нравится
Реакции: Vintik и bottom_text

Sana_Minotazaki

Участник
75
2
в настройках проекта выбери установленый тулсет и винсдк

перед использованием проверь загруженость сампа
C++:
void add_chat_message(DWORD dwColor, LPCSTR szString, ...)
{
    va_list ap;

    char msg[/* SAMP_MAX_CHAT_MESSAGE */ 144] = { 0 };

    va_start(ap, szString);
    vsprintf_s(msg, szString, ap);
    va_end(ap);

    DWORD base = reinterpret_cast<DWORD>(GetModuleHandleW(L"samp.dll"));
    DWORD ptr_chat_info = base + /* SAMP_PTR_CHAT_INFO */ 0x21A0E4;
    DWORD ptr_function = base + /* SAMP_PTR_FUNC_ADDTOCHATWND */ 0x64010;

    __asm
    {
        mov eax, dword ptr[ptr_chat_info]
        mov ecx, dword ptr[eax]
        push 0
        push dwColor
        push 0
        lea eax, msg
        push eax
        push 8
        call ptr_function
    }
}
Можешь подробнее объяснить, если можно скриншотами, как включить тулсет и винсдк, вчера скачал студию, и вообще не понимаю че да как там
 

sc6ut

неизвестный
Модератор
382
1,075
Можешь подробнее объяснить, если можно скриншотами, как включить тулсет и винсдк, вчера скачал студию, и вообще не понимаю че да как там
пкм по названию проекту - настройки. выбираешь установленый тулсет (у меня это v141), применяешь настройки. после чего выбираешь версию winsdk (у меня это 10.0.17763.0), применяешь настройки.
1610523487032.png
1610523496235.png
1610523546623.png
1610523579337.png
1610523642673.png
 
  • Нравится
Реакции: Sana_Minotazaki

kin4stat

mq-team
Всефорумный модератор
2,730
4,712
пкм по названию проекту - настройки. выбираешь установленый тулсет (у меня это v141), применяешь настройки. после чего выбираешь версию winsdk (у меня это 10.0.17763.0), применяешь настройки.
ПКМ по решению -> перенацелить решение
MTA-стайл - асм вместо тайпдефа
А зачем...
Ассемблером выебнуться типа?
 
  • Нравится
Реакции: sc6ut