Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Помогите исправить ошибку в коде строка if (CloseHandle(handleToProc == 0))

#include <iostream>
#include <Windows.h>
using namespace std;

int InjectDLL(DWORD, char*);
int getDLLpath(char*);
int getPID(int*);
int getProc(HANDLE*, DWORD);

int getDLLpath(char* dll)
{
std::cout << "Выбери свой DLL Файл !\n";
cin >> dll;
return 1;
}

int getPID(int* PID)
{
cout << "Выберите ID Процесса!\n";
cin >> *PID;
return 1;
}

int getProc(HANDLE* handleToProc, DWORD pid)
{
*handleToProc = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
DWORD dwLastError = GetLastError();

if (handleToProc == NULL)
{
std::cout << "Unable To Open Procces.\n";
return -1;
}
else
{
std::cout << "Процесс Запущен!!\n";
return 1;
}
}

int InjectDLL(DWORD PID, char* dll) //end function
{
HANDLE handleToProc;
LPVOID LoadLibAddr;
LPVOID baseAddr;
HANDLE remThread;
// получить длину длл
int dllLength = strlen(dll) + 1;

if (getProc(&handleToProc, PID) < 0);
return -1;

//Загрузить kernel32 в библиотеку
LoadLibAddr = (LPVOID)GetProcAddress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA");
if (!LoadLibAddr)
return -1;
baseAddr = VirtualAllocEx(handleToProc, NULL, dllLength, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if (!baseAddr)
return -1;
if (WriteProcessMemory(handleToProc, baseAddr, dll, dllLength, NULL))
//Записываем путь к DLL
return -1;
//Создаем удаленный поток

remThread = CreateRemoteThread(handleToProc, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddr, baseAddr, 0, NULL);

if (!remThread)

return -1;
WaitForSingleObject(remThread, INFINITE);

VirtualFreeEx(handleToProc, baseAddr, dllLength, MEM_RELEASE);
//Закрываем обработчик
if (CloseHandle(remThread) == 0)
{
std::cout << "Закрытие Обработки!!!";
return -1;
}
if (CloseHandle(handleToProc == 0))
{
std::cout << "Failed to close handle to target procces./n";
return -1;
}

}

По дате
По рейтингу
Аватар пользователя
Мыслитель

if (CloseHandle(handleToProc) == 0)