Текущий архив: 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.49 MB
Время: 0.041 c