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

loganhackerdff

Известный
868
519
как в imgui сделать чтоб камера не крутилась когда курсором двигаю
курсор вывожу через ImGui::GetIO().MouseDrawCursor = 1
 

loganhackerdff

Известный
868
519
Изучаю тут с++, столкнулся с проблемой обычного калькулятора
C++:
int main() {
   int num1, num2, num3;

   cin >> num1;
   cout << "\n";
   cin >> num2;
   num3 = sum1 + sum2;
   cout << "\n" << num1 << " + " << num2 " = " num3;
    return 0;
}
1 - какой проблемой
2 - у тебя переменные num1 num2 num3, а на 7й строке уже sum1 sum2
3 - вместо cout << "\n"; можно писать cout << endl;
 

Warflex

Участник
158
17
C++:
int main() {
   int num1, num2, sum;
   int simb;
   cin >> num1;
   cin >> simb;
   cin >> num2;
   sum = num1 << simb << num2;
   cout << "\n" << num1 << simb << num2 << " = " << sum;
   cin.get();
   return 0;
}
simb - знак переменная, как его правильно выразить?
 
Последнее редактирование:

loganhackerdff

Известный
868
519
поставил простой хук на RPC Create3d text label, чтоб он перезаписывал дистанцию видимости, но почемуто крашит
C++:
bool CALLBACK incRPC(stRakNetHookParams* p)
{
    if (bDistUp)
    {
        if (p->packetId == RPC_ScrCreate3DTextLabel)
        {
            
            float dist;
            p->bitStream->SetReadOffset(144);
            p->bitStream->Read(dist);
            p->bitStream->ResetReadPointer();
            if (dist == 5.0)
            {
                p->bitStream->SetWriteOffset(144);
                dist = 15.0;
                p->bitStream->Write(dist);
                p->bitStream->ResetWritePointer();
            }
        }
    }
    return true;
}
почему то затирает всё после дистанции, ну чо за приколы
C++:
bool CALLBACK rpchook(stRakNetHookParams* p)
{
    if (p->packetId == RPC_ScrCreate3DTextLabel)
    {
        p->bitStream->SetWriteOffset(144);
        p->bitStream->Write((float)15.0);
    }
    
    return true;
}
 
Последнее редактирование:

ucciModd

Новичок
18
2
1. Как выгрузить asi/dll?
2. Почему геймстейт выводит неправильно?
1588169223051.png

Структуру (R3) взял с самп апи (https://github.com/BlastHackNet/SAMP-API)
 
Последнее редактирование:

loganhackerdff

Известный
868
519
возможно ли сделать невидимый на фрапсе вх на SF, рисуя через методы SF.getRender?
я пытался через vmthookmanager хукать девайс который создавал для созданного окна, но крашило
по тупому я делал както
 
Последнее редактирование:

Blood

Известный
45
1
if (params->packetId == 151) 151 incoming rpc, можно его полное название?
 

manukhov

Известный
125
131
Ошибка LNK2019 ссылка на неразрешенный внешний символ "extern "C" struct HDC__ * __stdcall GetDC(struct HWND__ *)" (?GetDC@@$$J14YGPAUHDC__@@PAUHWND__@@@Z) в функции "void __clrcall `dynamic initializer for 'hdc''(void)" (???__Ehdc@@YMXXZ@?A0xa98138a8@@$$FYMXXZ)

Юникод на многобайтовую кодировку менял, не помогло. На странице ошибки слишком размыто и инфы конкретной я не нашел

Memory.h:
#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>
#include <memory.h>
#include <memory>


DWORD GetProcId(const char* procName)
{
    DWORD procId = 0;
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnap != INVALID_HANDLE_VALUE)
    {
        PROCESSENTRY32 procEntry;
        procEntry.dwSize = sizeof(procEntry);

        if (Process32First(hSnap, &procEntry))
        {
            do
            {
                if (!strcmp(procEntry.szExeFile, procName))
                {
                    procId = procEntry.th32ProcessID;
                    break;
                }
            } while (Process32Next(hSnap, &procEntry));

        }
    }
    CloseHandle(hSnap);
    return procId;
}

uintptr_t GetModuleBaseAddress(DWORD procId, const char* modName)
{
    uintptr_t modBaseAddr = 0;
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId);
    if (hSnap != INVALID_HANDLE_VALUE)
    {
        MODULEENTRY32 modEntry;
        modEntry.dwSize = sizeof(modEntry);
        if (Module32First(hSnap, &modEntry))
        {
            do
            {
                if (!strcmp(modEntry.szModule, modName))
                {
                    modBaseAddr = (uintptr_t)modEntry.modBaseAddr;
                    break;
                }
            } while (Module32Next(hSnap, &modEntry));
        }
    }
    CloseHandle(hSnap);
    return modBaseAddr;
}

uintptr_t moduleBase = GetModuleBaseAddress(GetProcId("gta_sa.exe"), "samp.dll");
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, GetProcId("gta_sa.exe"));
HDC hdc = GetDC(FindWindowA(NULL, "GTA:SA:MP"));

template<typename T> T RPM(SIZE_T address) {
   
    T buffer;

  
    ReadProcessMemory(hProcess, (LPCVOID)address, &buffer, sizeof(T), NULL);


    return buffer;
}
 

SR_team

like pancake
BH Team
4,802
6,474
Ошибка LNK2019 ссылка на неразрешенный внешний символ "extern "C" struct HDC__ * __stdcall GetDC(struct HWND__ *)" (?GetDC@@$$J14YGPAUHDC__@@PAUHWND__@@@Z) в функции "void __clrcall `dynamic initializer for 'hdc''(void)" (???__Ehdc@@YMXXZ@?A0xa98138a8@@$$FYMXXZ)

Юникод на многобайтовую кодировку менял, не помогло. На странице ошибки слишком размыто и инфы конкретной я не нашел

Memory.h:
#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>
#include <memory.h>
#include <memory>


DWORD GetProcId(const char* procName)
{
    DWORD procId = 0;
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnap != INVALID_HANDLE_VALUE)
    {
        PROCESSENTRY32 procEntry;
        procEntry.dwSize = sizeof(procEntry);

        if (Process32First(hSnap, &procEntry))
        {
            do
            {
                if (!strcmp(procEntry.szExeFile, procName))
                {
                    procId = procEntry.th32ProcessID;
                    break;
                }
            } while (Process32Next(hSnap, &procEntry));

        }
    }
    CloseHandle(hSnap);
    return procId;
}

uintptr_t GetModuleBaseAddress(DWORD procId, const char* modName)
{
    uintptr_t modBaseAddr = 0;
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId);
    if (hSnap != INVALID_HANDLE_VALUE)
    {
        MODULEENTRY32 modEntry;
        modEntry.dwSize = sizeof(modEntry);
        if (Module32First(hSnap, &modEntry))
        {
            do
            {
                if (!strcmp(modEntry.szModule, modName))
                {
                    modBaseAddr = (uintptr_t)modEntry.modBaseAddr;
                    break;
                }
            } while (Module32Next(hSnap, &modEntry));
        }
    }
    CloseHandle(hSnap);
    return modBaseAddr;
}

uintptr_t moduleBase = GetModuleBaseAddress(GetProcId("gta_sa.exe"), "samp.dll");
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, GetProcId("gta_sa.exe"));
HDC hdc = GetDC(FindWindowA(NULL, "GTA:SA:MP"));

template<typename T> T RPM(SIZE_T address) {
 
    T buffer;


    ReadProcessMemory(hProcess, (LPCVOID)address, &buffer, sizeof(T), NULL);


    return buffer;
}
dbghelp и gdi32 в линкере подключи
 

Dark_Knight

Me, me and me.
Друг
4,078
2,096
Я делал, но способ крайне тупой. Записывать из события окна WM_CHAR значения в строку и после каждой записи производить поиск подстроки нужной и если результат истинный, то активировал нужный кусок кода и очищал строку. Так же делал фильтрацию на длинную строки в 32 символа, чтобы не забивать память.
Если строка была длинее 32 символов, то удалял первый символ из неё.
 
  • Нравится
Реакции: 4el0ve4ik