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

Вниз

NtCreateProcessEx какие параметры и их тип?   Найти похожие ветки 

 
wp2 ©   (2006-09-24 22:41) [0]

Нужны параметры для этой функции.

А также как можно узнать по параметрам какая программа вызвала эту функцию.


 
Ketmar ©   (2006-09-24 22:53) [1]

DWORD __stdcall HOOK_NtCreateProcessEx(
 OUT PHANDLE ProcessHandle,
 IN ACCESS_MASK DesiredAccess,
 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
 IN HANDLE ParentProcess,
 IN BOOLEAN InheritObjectTable,
 IN HANDLE SectionHandle OPTIONAL,
 IN HANDLE DebugPort OPTIONAL,
 IN HANDLE ExceptionPort OPTIONAL,
 IN HANDLE Unknown)


>[0] wp2(c) 24-Sep-2006, 22:41
>А также как можно узнать по параметрам какая
>программа вызвала эту функцию.
"по параметрам" -- никак.


 
Орион ©   (2006-09-24 23:42) [2]

> А также как можно узнать по параметрам какая программа вызвала
> эту функцию.


Перехватом?
Но это уже не по параметрам и очень скользкая тема.


 
Ketmar ©   (2006-09-24 23:55) [3]

>[2] Орион(c) 24-Sep-2006, 23:42
>Перехватом?
>Но это уже не по параметрам и очень скользкая
>тема.
а тут и делается, имо, перехват. иначе зачем бы эту функцию применять? особенно учитывая, что в Win2K, например, её нет. %-)


 
Орион ©   (2006-09-24 23:56) [4]

> [3] Ketmar ©   (24.09.06 23:55)


Ааа. Дык зачем тогда по параметрам узнавать? В кого внедрены - тот и вызвал :)


 
Ketmar ©   (2006-09-24 23:58) [5]

>[4] Орион(c) 24-Sep-2006, 23:56
>Ааа. Дык зачем тогда по параметрам узнавать? В
>кого внедрены - тот и вызвал :)
а вдруг это KiST-перехват? драйвер -- он везде один. %-)


 
wp2 ©   (2006-09-25 00:02) [6]

Ketmar
А можно по Паскалевски :-)

С объяснением что такое, например, POBJECT_ATTRIBUTES


 
Орион ©   (2006-09-25 00:02) [7]

> [5] Ketmar ©   (24.09.06 23:58)

Тогда автора ждем :)
Хотя если у него возник такой вопрос, то драйвером тут и не пахнет.
Воть...)


 
Ketmar ©   (2006-09-25 00:06) [8]

>[1] Ketmar(c) 24-Sep-2006, 22:53
function NtCreateProcessEx (
 out ProcessHandle: THandle;
 DesiredAccess: ACCESS_MASK;
 ObjectAttributes: POBJECT_ATTRIBUTES;
 ParentProcess: THandle;
 InheritObjectTable: LongBool;
 SectionHandle: THandle;
 DebugPort: THandle;
 ExceptionPort: THandle;
 Unknown: THandle): DWORD; stdcall;

что-то вроде такого. на остальные вопросы ответит MSDN и гугль, потому как структуры документированы.


 
Орион ©   (2006-09-25 00:07) [9]

Нате))
Нашел в загашниках:

TProcessBasicInformation = record
   ExitStatus: Integer;
   PebBaseAddress: Pointer;
   AffinityMask: Integer;
   BasePriority: Integer;
   UniqueProcessID: Integer;
   InheritedFromUniqueProcessID: Integer;
 end;

function GetPathFromId(Id: DWord): string;
var
ProcessHandle: THandle;
ProcInfo: TProcessBasicInformation;
BytesRead: DWord;
Usr, Buf: DWord;
Len: Word;
Buffer: PWideChar;
begin
Result:="";
ZeroMemory(@ProcInfo, SizeOf(TProcessBasicInformation));
if GetProcessHandle(Id, ProcessHandle, PROCESS_QUERY_INFORMATION or PROCESS_VM_READ) then
begin
 if NT_SUCCESS(NtQueryInformationProcess(ProcessHandle, ProcessBasicInformation, @ProcInfo, SizeOf(TProcessBasicInformation), nil)) then
 begin
  ReadProcessMemory(ProcessHandle, Pointer(DWord(ProcInfo.PebBaseAddress)+$10), @Usr, 4, BytesRead);
  ReadProcessMemory(ProcessHandle, Pointer(Usr+$38), @Len, 2, BytesRead);
  GetMem(Buffer, Len);
  try
   ReadProcessMemory(ProcessHandle, Pointer(Usr+$3C), @Buf, 4, BytesRead);
   ReadProcessMemory(ProcessHandle, Pointer(Buf), Buffer, Len, BytesRead);
   Result:=WideCharToString(Buffer);
  finally
   FreeMem(Buffer);
  end;
  SetLength(Result, Len div 2);
 end;
 NtClose(ProcessHandle);
end;
end;


А параметр IN HANDLE ParentProcess всегда отличен от нуля?
Если да - проблема решена.


 
Ketmar ©   (2006-09-25 00:07) [10]

>[7] Орион(c) 25-Sep-2006, 00:02
>Хотя если у него возник такой вопрос, то
>драйвером тут и не пахнет.
а с чего это? теперь-то понятно, что не драйвер -- автор с сями не дружит. а до этого... я тоже пытался KiST-перехват делать. и драйвер пытался ваять. а параметров этой функции не знаю, потому что в моей Win2K её нет. %-)


 
Ketmar ©   (2006-09-25 00:09) [11]

>[9] Орион(c) 25-Sep-2006, 00:07
>А параметр IN HANDLE ParentProcess всегда отличен
>от нуля?
>Если да - проблема решена.
я сильно подозреваю, что он может быть вовсе не хэндлом процесса, вызвавшего эту функцию. иначе зачем бы его передавать?


 
Орион ©   (2006-09-25 00:09) [12]

ЗЫ функцию надо подредактировать будет, т.к. HANDLE ParentProcess - уже дескриптор процесса, а не ид.


 
Орион ©   (2006-09-25 00:12) [13]

> [11] Ketmar ©   (25.09.06 00:09)

Мне лень в МСДН лезть, тем более оффлайн версии нет :)
Вроде как автору все наводки дали. Если автор не нуб, ему достаточно этой информации. Если нуб - мы не увидим очередного мега-супер руткита с AV при загрузке %)


 
Ketmar ©   (2006-09-25 00:16) [14]

>[13] Орион(c) 25-Sep-2006, 00:12
подозреваю, что нуб. но, вроде бы, вполне адекватный. %-)


 
wp2 ©   (2006-09-25 21:23) [15]

Да не пишу я никакого драйвера!!!


 
wp2 ©   (2006-09-25 21:24) [16]

Спросить просто так что ли нельзя? ;-)

А на С++ программы я могу написать, только не очень сложные...



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

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

Наверх




Память: 0.51 MB
Время: 0.066 c
2-1169793753
WhiteBarin
2007-01-26 09:42
2007.02.11
Расскажите пожалуйста про RAISE и исключения


6-1157782302
vedm
2006-09-09 10:11
2007.02.11
TIdMultiPartFormDataStream AddFile проблема !


3-1164021718
Feds
2006-11-20 14:21
2007.02.11
Узнать тип поле таблицы?


15-1169118315
Суперинтендант
2007-01-18 14:05
2007.02.11
Помогите найти Assambler


15-1169555154
default
2007-01-23 15:25
2007.02.11
Рамка выделения штрих-пунктиром как в графических редакторах