Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.20;
Скачать: CL | DM;

Вниз

Помогите найти ошибку   Найти похожие ветки 

 
проня   (2008-03-26 10:41) [0]

При компиляции этого кода:

var
 AVPID: array[0..9] of ULONG;
 last: integer;
 h2: THANDLE;
 ph: THANDLE;
 bytesIO: ULONG;
 buf: PSYSINFOBUF;
 i, c: integer;
 cid1: CLIENT_ID;
 attr: OBJECT_ATTRIBUTES;
 csrss_id: THANDLE;
 tmp1: LBuf;
 pBuffer: PROCESSENTRY32W;
 SnapShotHandle: THANDLE;
 tbi: THREAD_BASIC_INFORMATION;
 exists: boolean;
begin
 RTL.EnableSystemPrivilege("SeDebugPrivilege", true);
 last := 0;
 pBuffer.dwSize := sizeof(PROCESSENTRY32W);
 SnapShotHandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
 if (SnapShotHandle <> INVALID_HANDLE_VALUE) then
   if Process32FirstW(SnapShotHandle, @pBuffer) then
     repeat
       if (pBuffer.szExeFile = "my.exe") then
       begin
         for i := 0 to 9 do
           exists := (AVPID[i] = pBuffer.th32ProcessID);
         if not exists then
         begin
           AVPID[last] := pBuffer.th32ProcessID;
           inc(last);
         end;
       end;
     until (not Process32NextW(SnapShotHandle, @pBuffer));
 CloseHandle(SnapShotHandle);
 csrss_id := 0;
 pBuffer.dwSize := sizeof(PROCESSENTRY32W);
 SnapShotHandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
 if (SnapShotHandle <> INVALID_HANDLE_VALUE) then
   if Process32FirstW(SnapShotHandle, @pBuffer) then
     repeat
       ExtractFileNameW(pBuffer.szExeFile, tmp1);
       if (strcmpiW(tmp1, "csrss.exe") = 0) then
       begin
         csrss_id := pBuffer.th32ProcessID;
         break;
       end;
     until (not Process32NextW(SnapShotHandle, @pBuffer));
 CloseHandle(SnapShotHandle);
 if (csrss_id = 0) then exit;

 attr.Length := sizeof(OBJECT_ATTRIBUTES);
 attr.RootDirectory := 0;
 attr.ObjectName := nil;
 attr.Attributes := 0;
 attr.SecurityDescriptor := nil;
 attr.SecurityQualityOfService := nil;

 cid1.UniqueProcess := csrss_id;
 cid1.UniqueThread := 0;
 if (ZwOpenProcess(@ph, PROCESS_ALL_ACCESS, @attr, @cid1) <> STATUS_SUCCESS) then exit;
 bytesIO := 4194304;
 buf := nil;
 ZwAllocateVirtualMemory(GetCurrentProcess(), @buf, 0, @bytesIO, MEM_COMMIT, PAGE_READWRITE);
 ZwQuerySystemInformation(SystemHandleInformation, buf, 4194304, @bytesIO);
 for c := 0 to buf^.uHandleCount - 1 do
   if (buf^.rHandleTable[c].ProcessId = csrss_id) then
   begin
     if (buf^.rHandleTable[c].ObjectTypeNumber = PsThreadType) then
     begin
       h2 := 0;
       if (ZwDuplicateObject(ph, buf^.rHandleTable[c].Handle, DWORD(-1), @h2,
         0, 0, DUPLICATE_SAME_ACCESS) = STATUS_SUCCESS) then
       begin
         ZwQueryInformationThread(h2, ThreadBasicInformation, @tbi, sizeof(tbi), @bytesIO);
         for i := 0 to last do
           if (tbi.ClientId.UniqueProcess = AVPID[i]) then ZwSuspendThread(h2, nil);
       end;
     end;
   end;
 ZwClose(ph);
 bytesIO := 0;
 ZwFreeVirtualMemory(GetCurrentProcess(), @buf, @bytesIO, MEM_RELEASE);
end;

Отказывается копмилироваться, компилятор ругается на PSYSINFOBUF, CLIENT_ID, OBJECT_ATTRIBUTES. Подключал к проекту TlHelp32 но непомогло, часть ошибок исчезла, а с этими никак не разберусь. Помогите пожалуйста.


 
DrPass ©   (2008-03-26 10:49) [1]

...а разве на ZwOpenProcess, ZwOpenProcess, ZwQuerySystemInformation и т.д. не ругается?


 
{RASkov} ©   (2008-03-26 10:50) [2]

> [0] проня   (26.03.08 10:41)


> Помогите найти ошибку

А попробуй сам написать код.... тогда и искать не нужно ничего будет.... будешь сам все знать :)


 
Riply ©   (2008-03-26 11:26) [3]

> [0] проня   (26.03.08 10:41)
> Помогите найти ошибку
> Отказывается копмилироваться

А может начать с чтения книжек ?



Страницы: 1 вся ветка

Текущий архив: 2008.04.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
2-1206269459
bagos
2008-03-23 13:50
2008.04.20
idhttp and asp


15-1204884874
matt
2008-03-07 13:14
2008.04.20
Exception Conference #07


15-1204886969
Eraser
2008-03-07 13:49
2008.04.20
WinAPI от JEDI


2-1206209803
DJ_UZer
2008-03-22 21:16
2008.04.20
При открытии новой формы


2-1206440513
031178
2008-03-25 13:21
2008.04.20
Помогите плиз...