
12.11.2009, 16:19
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
Щас преписал в более красивый вид..
Пашет тоже нормально.
Там вполне возможно он не мог найти адрес ntdll.dll из которой брал функцию NtQuerySystemInformation. Такое редко но может быть. Так что пусть попробует этот код. Если и он незаработает значит у него какаято защита установлена или вирь.
Код:
const
DRIVER_INFORMATION = 11;
type
TDriverInfo = packed record
Address : DWORD;
Unknown1 : DWORD;
Unknown2 : DWORD;
EntryIndex : DWORD;
Unknown4 : DWORD;
Name: array [0..MAX_PATH + 3] of Char;
end;
TDriverQueryInfo = packed record
Count : integer;
Unknown1 : DWORD;
Unknown2 : DWORD;
Drv : array [0..0] of TDriverInfo;
end;
PDriverQueryInfo = ^TDriverQueryInfo;
function NtQuerySystemInformation (infoClass: DWORD; buffer: Pointer; bufSize: DWORD; returnSize: PDword): DWORD; stdcall; external 'ntdll.dll';
procedure GetInstallDriver;
var
NeedByte : dword;
Info : PDriverQueryInfo;
x : integer;
begin
NtQuerySystemInformation(DRIVER_INFORMATION, nil, 0, @NeedByte);
Info := AllocMem(NeedByte * 2);
NtQuerySystemInformation(DRIVER_INFORMATION, Info, NeedByte * 2, @NeedByte);
for x := 0 to Info^.Count-1 do
begin
Writeln(Format('| $%-5s | %-48s |', [IntToHex(Info^.Drv[x].Address, 8), Info^.Drv[x].Name]));
end;
FreeMem(Info);
end;
begin
GetInstallDriver();
readln;
end.
Последний раз редактировалось slesh; 12.11.2009 в 16:25..
|
|
|