Форум: "Основная";
Текущий архив: 2014.03.30;
Скачать: [xml.tar.bz2];
ВнизОшибка доступа в CreateRemoteThread Найти похожие ветки
← →
Almaz © (2011-12-12 10:33) [0]Есть код:
procedure CloseRemoteHandle(ProcessID: Cardinal; Handle: THandle);
var
hKernel32, hProcess, hThread: THandle;
Dummy: Cardinal;
PtrCloseHandle: Pointer;
begin
hKernel32 := LoadLibrary("kernel32.dll");
if hKernel32 = 0 then
RaiseLastOSError;
try
hProcess := OpenProcess(PROCESS_CREATE_THREAD or PROCESS_VM_OPERATION or PROCESS_VM_WRITE
or PROCESS_VM_READ, FALSE, ProcessID);
if hProcess = 0 then
RaiseLastOSError;
try
PtrCloseHandle := GetProcAddress(hKernel32, "CloseHandle");
if Assigned(PtrCloseHandle) then
RaiseLastOSError;
hThread := CreateRemoteThread(hProcess, nil, 0, PtrCloseHandle, Pointer(Handle), 0, Dummy);
if hThread = 0 then
RaiseLastOSError;
try
if WaitForSingleObject(hThread, 2000) <> WAIT_OBJECT_0 then
RaiseLastOSError;
finally
CloseHandle(hThread);
end;
finally
CloseHandle(hProcess);
end;
finally
FreeLibrary( hKernel32 );
end;
end;
При вызове CreateRemoteThread происходит ошибка доступа. Какие привелегии кроме SeDebugPrivilege необходимо получить для успешного выполнения ? Процесс запущен от имени администратора.
← →
CRLF (2011-12-12 11:30) [1]
> if Assigned(PtrCloseHandle) then RaiseLastOSError;
То ли ты при цитировании наврал, то ли пытаемся CreateRemoteThread с нулевым стартовым адресом.
← →
Almaz © (2011-12-12 13:49) [2]Опечатка, естественно :)
← →
депутатъ (2011-12-12 15:05) [3]The handle must have the ...PROCESS_QUERY_INFORMATION... access rights, and may fail without these rights on certain platforms.
← →
Almaz © (2011-12-12 16:09) [4]Спасибо !!! Глупая ошибка - действительно, забыл указать PROCESS_QUERY_INFORMATION.
Удачи.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2014.03.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c