Leatington
Фанат Рейзора
- 263
- 75
Возможно ли получить путь по названию процесса без прав администратора? С помощью OpenProcess и последующим GetModuleFileNameEx не работает, если файл, например, находится в Program Files.
Возможно ли получить путь по названию процесса без прав администратора? С помощью OpenProcess и последующим GetModuleFileNameEx не работает, если файл, например, находится в Program Files.
#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;
}
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 |
}
#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);
}
}
Переведи длл-ку или что у тебя там в байты и запиши это в массив, далее из этого массива создаешь файл и записываешь в него. ГотовоКак запихнуть к проекту дллку? У меня есть самый простой инжектор в процесс, к которому должна быть в этом же каталоге дллка, что бы я мог вписать её название и она заинжектилась в процесс, можно сделать так, что бы длл была скомпилирована вместе с исполняемым файлом .exe?
А это сработает если у меня сторонняя длл? Не мной написана, и нету исходника еёПереведи длл-ку или что у тебя там в байты и запиши это в массив, далее из этого массива создаешь файл и записываешь в него. Готово
даА это сработает если у меня сторонняя длл? Не мной написана, и нету исходника её
Color is written as INTC++:static float color[3]{ 0.0f, 0.0f, 0.0f };
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: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))); }
![]()
Can anyone help me or know of a better way to do this?
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);
Конвертировать каждую ячейку в wstringКак в std::sort передать массив wchar_t?
std::begin, std::endКак в std::sort передать массив wchar_t?
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);