• Страница 1 из 1
  • 1
Обнаружение запущенных крипторов
Отправлено 2015-06-14 - 5:12 PM1
Администраторы
332 сообщений
Мужчина
Код
function CheckIfCryptedPE(dwPID:DWORD):Boolean;
var
hProcess, fFile:THandle;
FileName:String;
MemData, FileData:Array[0..$400] of Byte;
ModInfo:TModuleInfo;
dwRead:DWORD;
pIDHF, pIDHM:PImageDosHeader;
pINHF, pINHM:PImageNtHeaders;
begin
Result := False;
hProcess := OpenProcess(PROCESS_VM_READ or PROCESS_VM_OPERATION OR PROCESS_QUERY_INFORMATION, False, dwPID);
if (hProcess = 0) then Exit;
FileName := GetProcessPath(dwPID);
if (FileName = '') then
begin
   Writeln('(FileName = '''')');
   CloseHandle(hProcess);
   Exit;
end;
fFile := CreateFileA(PChar(FileName), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (fFile = INVALID_HANDLE_VALUE) then
begin
   Writeln('fFile = INVALID_HANDLE_VALUE');
   CloseHandle(hProcess);
   Exit;
end;

ModInfo := GetInfo(dwPID);
if (ModInfo.lpBaseOfDll = nil) then
begin
   Writeln('(ModInfo.lpBaseOfDll = nil)');
   CloseHandle(hProcess);
   CloseHandle(fFile);
   Exit;
end;

ReadProcessMemory(hProcess, ModInfo.lpBaseOfDll, @MemData[0], $400, dwRead);
ReadFile(fFile, FileData[0], $400, dwRead, nil);
CloseHandle(fFile);
CloseHandle(hProcess);

pIDHF := @FileData[0];
pIDHM := @MemData[0];

pINHF := Pointer(Integer(pIDHF) + pIDHF^._lfanew);
pINHM := Pointer(Integer(pIDHM) + pIDHM^._lfanew);

Writeln('SizeOfImage --Memory:' + IntToHex(pINHM^.OptionalHeader.SizeOfImage, 8) + '-- File:' + IntToHex(pINHF^.OptionalHeader.SizeOfImage, 8));
Writeln('SizeOfCode --Memory:' + IntToHex(pINHM^.OptionalHeader.SizeOfCode, 8) + '-- File:' + IntToHex(pINHF^.OptionalHeader.SizeOfCode, 8));
Writeln('AddressOfEntryPoint --Memory:' + IntToHex(pINHM^.OptionalHeader.AddressOfEntryPoint, 8) + '-- File:' + IntToHex(pINHF^.OptionalHeader.AddressOfEntryPoint, 8));
Writeln('BaseOfCode --Memory:' + IntToHex(pINHM^.OptionalHeader.BaseOfCode, 8) + '-- File:' + IntToHex(pINHF^.OptionalHeader.BaseOfCode, 8));
Writeln('CheckSum --Memory:' + IntToHex(pINHM^.OptionalHeader.CheckSum, 8) + '-- File:' + IntToHex(pINHF^.OptionalHeader.CheckSum, 8));
Writeln('SizeOfHeaders --Memory:' + IntToHex(pINHM^.OptionalHeader.SizeOfHeaders, 8) + '-- File:' + IntToHex(pINHF^.OptionalHeader.SizeOfHeaders, 8));
Writeln('SizeOfHeaders --Memory:' + IntToHex(pINHM^.FileHeader.TimeDateStamp, 8) + '-- File:' + IntToHex(pINHF^.FileHeader.TimeDateStamp, 8));

if (pINHM^.OptionalHeader.CheckSum > 0) then
begin
   if pINHM^.OptionalHeader.CheckSum = pINHF^.OptionalHeader.CheckSum then Exit;
end
   else
    begin
     if ( pINHM^.FileHeader.TimeDateStamp = pINHF^.FileHeader.TimeDateStamp) then Exit;
    end;

Result := True;
end;
Профиль Личное сообщение Дом. страница icq Skype
  • Страница 1 из 1
  • 1
Поиск:
Коротко о сайте...
Вся информация на сайте
предоставлена в ознакомительных целях.
Счетчики
Sitemap
Sitemap-Forum
URL List
RSS
RSS-Forum
Подняться вверх
Все права защищены.Сделать бесплатный сайт с uCoz