
12.11.2009, 16:19
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
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..
|
|
|