C ++ CreateRemoteThread нарушение прав доступа

У меня проблема с функцией CreateRemoteThread.

Я просто создал небольшое консольное окно с просьбой указать конкретное число для выхода (чтобы оно оставалось открытым, пока я этого хочу).
Внутри этой программы есть функция, адрес которой я вычислил.

Теперь я хочу вызвать эту функцию со второй программой через CreateRemoteThread, но она всегда говорит о нарушении прав доступа. Оба компилируются одинаково.

Вот код моего удаленного вызова:

bool SetPrivileges(){
HANDLE pt; //process token
TOKEN_PRIVILEGES ptp; //process token privileges
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &pt))
{
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &ptp.Privileges[0].Luid);
ptp.PrivilegeCount = 1;
ptp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (AdjustTokenPrivileges(pt, false, &ptp, sizeof(ptp), NULL, NULL))
{
return true;
}
}

return false;}

int _tmain(int argc, _TCHAR* argv[])
{
if (SetPrivileges())
{
cout << "Enabled custom privileges" << endl;
}
else{
cout << "Could not enable custom privileges" << endl << GetLastError() << endl;
}

CodeHelper ch;
DWORD processId = ch.GetProcessId("CallMeConsole.exe");
HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS, false, processId);
DWORD Testaddress = 0x008642D0;
HANDLE thread = CreateRemoteThread(proc, NULL, 0, (LPTHREAD_START_ROUTINE)Testaddress, NULL, 0, NULL);
/*if (thread != 0)
{
WaitForSingleObject(thread, INFINITE);
CloseHandle(thread);
CloseHandle(proc);
cout << "success!" << endl;
}
else{
cout << "error" << endl;
}*/
return 0;}

Если я прав, мне просто нужно VirtualAllocEx для резервирования места в памяти, если я хочу ввести какой-то код. Но я просто хочу вызвать функцию программы.

У вас есть идеи?

Поиск действительно не помог мне.
Спасибо!

3

Решение

Для всех, у кого такая же проблема, предоставленный код вполне подходит. Просто мой пример адрес пошел не так.

В любом случае, я надеюсь, что это наполовину хороший пример того, как выполнять удаленные функции выбранной программы.

Спасибо всем.

0

Другие решения