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

Leatington

Известный
258
71
Возможно ли получить путь по названию процесса без прав администратора? С помощью OpenProcess и последующим GetModuleFileNameEx не работает, если файл, например, находится в Program Files.
 

moreveal

Известный
Проверенный
852
525
Возможно ли получить путь по названию процесса без прав администратора? С помощью OpenProcess и последующим GetModuleFileNameEx не работает, если файл, например, находится в Program Files.
C++:
#include <Windows.h>
#include <iostream>
#include <TlHelp32.h>

DWORD GetProcessId(const char* processName) {
    DWORD processId = 0;
    PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(PROCESSENTRY32);
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnapshot == INVALID_HANDLE_VALUE)
    {
        std::cout << "Error: Unable to create process snapshot\n";
        return -1;
    }
    BOOL success = Process32First(hSnapshot, &pe32);
    while (success)
    {
        if (_stricmp(pe32.szExeFile, processName) == 0)
        {
            processId = pe32.th32ProcessID;
            break;
        }
        success = Process32Next(hSnapshot, &pe32);
    }
    CloseHandle(hSnapshot);
    if (processId == 0)
    {
        std::cout << "Error: Process not found\n";
        return -1;
    }
    return processId;
}

int main()
{
   
    DWORD processId = GetProcessId("notepad.exe");
    if (processId == -1) {
        std::cout << "Error: Unable to find process" << std::endl;
        return 1;
    }

    HANDLE hProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, processId);
    if (hProcess == nullptr)
    {
        std::cout << "Error: Unable to open process\n";
        return 1;
    }

    char path[MAX_PATH];
    DWORD pathLength = sizeof(path);
    BOOL success = QueryFullProcessImageName(hProcess, 0, path, &pathLength);
    if (success)
        std::cout << "Path: " << path << "\n";
    else
        std::cout << "Error: Unable to get process path\n";

    CloseHandle(hProcess);
    return 0;
}
 

!Sam#0235

Активный
122
40
What's wrong? The color should change but it doesn't.
C++:
            char piluluall[64] = { 0 };
            int pshow = (int)PEDSELF->GetHealth() + (int)PEDSELF->GetArmor();

            if ((int)pshow <= 30)
            {
                sprintf(piluluall, "%d", (int)pshow);
                pFont->Print(piluluall, D3DCOLOR_ARGB(0XFF, 255, 0, 0), 500, 400, false); // {FF0000} | R = 255 | G = 0 | B = 0 |
            }
            else if ((int)pshow > 30)
            {
                sprintf(piluluall, "%d", (int)pshow);
                pFont->Print(piluluall, D3DCOLOR_ARGB(0XFF, 255, 110, 0), 500, 400, false); // {FF6E00} | R = 255 | G = 110 | B = 0 |
            }
            else if ((int)pshow > 49)
            {
                sprintf(piluluall, "%d", (int)pshow);
                pFont->Print(piluluall, D3DCOLOR_ARGB(0XFF, 255, 180, 0), 500, 400, false); // {FFB400} | R = 255 | G = 180 | B = 0 |
            }
            else if ((int)pshow > 74)
            {
                sprintf(piluluall, "%d", (int)pshow);
                pFont->Print(piluluall, D3DCOLOR_ARGB(0XFF, 255, 255, 0), 500, 400, false); // {FFFF00} | R = 255 | G = 255 | B = 0 |
            }
            else if ((int)pshow > 99)
            {
                sprintf(piluluall, "%d", (int)pshow);
                pFont->Print(piluluall, D3DCOLOR_ARGB(0XFF, 150, 255, 0), 500, 400, false); // {96FF00} | R = 150 | G = 255 | B = 0 |
            }
            else if ((int)pshow > 124)
            {
                sprintf(piluluall, "%d", (int)pshow);
                pFont->Print(piluluall, D3DCOLOR_ARGB(0XFF, 0, 255, 0), 500, 400, false); // {00FF00} | R = 0 | G = 255 | B = 0 |
            }
            else if ((int)pshow > 149)
            {
                sprintf(piluluall, "%d", (int)pshow);
                pFont->Print(piluluall, D3DCOLOR_ARGB(0XFF, 0, 255, 255), 500, 400, false); // {00FFFF} | R = 0 | G = 255 | B = 255 |
            }
            else if ((int)pshow > 174)
            {
                sprintf(piluluall, "%d", (int)pshow);
                pFont->Print(piluluall, D3DCOLOR_ARGB(0XFF, 0, 0, 255), 500, 400, false); // {0000FF} | R = 0 | G = 0 | B = 255 |
            }
 

jenees.21

Участник
73
8
C++:
#include <kthook/kthook.hpp>

bool state = false;
kthook::kthook_simple<unsigned(__stdcall*)(void*, unsigned, unsigned, unsigned)> hook{
    0x747EB0,
    [](const auto& hook, void* hwnd, unsigned umsg, unsigned wparam, unsigned lparam) {
        if (uMsg == WM_KEYDOWN && wparam == VK_F2 && !(lparam & KF_REPEAT)) {
            state = !state;
            for (auto value : {0x5109AC, 0x5109C5, 0x5231A6, 0x52322D, 0x5233BA}) {
                unsigned old;
                VirtualProtect(reinterpret_cast<void*>(value), 1, PAGE_READWRITE, &old);
                if (state) *reinterpret_cast<unsigned char*>(value) = 0xEB;
                else *reinterpret_cast<unsigned char*>(value) = (value <= 0x5109C5) ? 0x7A : 0x75;
                VirtualProtect(reinterpret_cast<void*>(value), 1, old, &old);
            }
        }
        return hook.get_trampoline()(hwnd, umsg, wparam, lparam);
    }
}

Может кто сделать что бы работало только на ган под 24 айди и скомпилировать?
 
D

deleted-user-399997

Гость
Как запихнуть к проекту дллку? У меня есть самый простой инжектор в процесс, к которому должна быть в этом же каталоге дллка, что бы я мог вписать её название и она заинжектилась в процесс, можно сделать так, что бы длл была скомпилирована вместе с исполняемым файлом .exe?
 

EclipsedFlow

Известный
Проверенный
1,040
462
Как запихнуть к проекту дллку? У меня есть самый простой инжектор в процесс, к которому должна быть в этом же каталоге дллка, что бы я мог вписать её название и она заинжектилась в процесс, можно сделать так, что бы длл была скомпилирована вместе с исполняемым файлом .exe?
Переведи длл-ку или что у тебя там в байты и запиши это в массив, далее из этого массива создаешь файл и записываешь в него. Готово
 
D

deleted-user-399997

Гость
Переведи длл-ку или что у тебя там в байты и запиши это в массив, далее из этого массива создаешь файл и записываешь в него. Готово
А это сработает если у меня сторонняя длл? Не мной написана, и нету исходника её
 

EclipsedFlow

Известный
Проверенный
1,040
462
C++:
static float color[3]{ 0.0f, 0.0f, 0.0f };
Color is written as INT
C++:
if (!ImGui::ColorEdit3("Color", color, ImGuiColorEditFlags_PickerHueWheel))
{
  set_int_to_ini(INI_SECTION, INI_KEYR1, std::to_string(int(color[0] * 255)));
  set_int_to_ini(INI_SECTION, INI_KEYG1, std::to_string(int(color[1] * 255)));
  set_int_to_ini(INI_SECTION, INI_KEYB1, std::to_string(int(color[2] * 255)));              
}
I need some function to take the color from the .INI itself that does not cause me problems, since the function that I use takes them like this:
image.png

Can anyone help me or know of a better way to do this?
C++:
ImVec4 color = {0.0f, 0.0f, 0.0f, 0.0f};
ImGui::ColorEdit4("Color", (float*)&color, ImGuiColorEditFlags_PickerHueWheel);

ImU32 color_hex = ImColor(color);
// or
ImU32 color_hex = ImGui::GetColorU32(color);
 
  • Нравится
Реакции: !Sam#0235 и Z3roKwq

Young123

Новичок
10
0
Подскажите кто нибудь, есть какие-нибудь туторы по поиску оффсетов сампа в Ida Pro?
 
  • Эм
Реакции: Z3roKwq

!Sam#0235

Активный
122
40
I need some function to take the color from the .INI itself that does not cause me problems, is for ImGui::ColorEdit, since the function that I use takes them like this:
image.png
 

Leatington

Известный
258
71
C++:
bool srt(const wchar_t &value1, const wchar_t & value2)
{
    return (_wcsicmp((wchar_t*)value1, (wchar_t*)value2) > 0);
}
sort(*russian_names, *russian_names, srt);

Почему массив сортируется неправильно?