- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
var
SysPath, WinPath, DrivePart, AppPath, CMDLine, AppName, AppExt:widestring;
P:Integer;
USBDrive:Boolean;
begin
Result:=True;
SetLength(SysPath,300);
SetLength(SysPath, GetSystemDirectoryW(PWideChar(SysPath), 300));
SysPath:=IncludeTrailingPathDelimiter(SysPath);
SysPath:=WideLowerCase(SysPath);
SetLength(WinPath,300);
SetLength(WinPath, GetWindowsDirectoryW(PWideChar(WinPath), 300));
WinPath:=IncludeTrailingPathDelimiter(WinPath);
WinPath:=WideLowerCase(WinPath);
DrivePart:=ExtractFileDrive(lpCurrentDirectory);
DrivePart:=ExtractFileDir(DrivePart);
DrivePart:=wideLowerCase(DrivePart);
AppName:=ExtractFileName(lpApplicationName);
AppName:=wideLowerCase(AppName);
AppExt:=ExtractFileExt(AppName);
AppExt:=wideLowerCase(AppExt);
AppPath:=ExtractFilePath(lpApplicationName);
AppPath:=wideLowerCase(AppPath);
CMDLine:=lpCommandLine;
CMDLine:=Utf8Decode(Utf8StringReplace(UTF8Encode(CMDLine),#34,'',[rfReplaceAll]));
P:=utf8Pos(utf8encode(string(lpApplicationName)), utf8encode(CMDline));
if P >0 then
Delete(CMDline, P, Length(lpApplicationName));
CMDLine:=Trim(CMDLine);
//CMDLine:=LowerCase(CMDLine);
USBDrive:=IsUSBDevice(DrivePart);
if (WideSameText(AppPath, SysPath) or WideSameText(AppPath, WinPath)) then
begin
if ((wideSameText(AppName,'wscript.exe')) or (wideSameText(AppName, 'cscript.exe')) or (wideSameText(AppName, 'mshta.exe'))) then
begin
// script blocked
if CMDLine <> '' then
if MessageBoxW(0,PWideChar(UTF8Decode(Format('Использование скриптов может повредить Ваш компьютер! %s%s%s', [#13#10#13#10'Приложение: '+lpApplicationName,#13#10'Файл: '+CmdLine,#13#10#13#10'Вы действительно хотите выполнить данный скрипт?']))),PWideChar(UTF8Decode('Rast Security: заблокирован скрипт!')),mb_yesno or mb_iconexclamation) <> IDYES then Exit;
TrueCreateProcessW(lpApplicationName, lpCommandLine, lpProcessAttributes,
lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment,
lpCurrentDirectory, lpStartupInfo, lpProcessInformation);
end
else if ((wideSameText(AppName, 'rundll32.exe')) or (wideSameText(AppName, 'cmd.exe')) or (wideSameText(AppName, 'hh.exe')) or (wideSameText(AppName, 'reg.exe')) or (wideSameText(AppName, 'regedit.exe'))) then
begin
// app launching
if USBDrive then
begin
if (CMDLine <> '') then
if Copy(CMDLine,1,28)='Shell32.DLL,ShellExec_RunDLL' then
begin
if MessageBoxW(0,PWideChar(UTF8Decode('Проводник пытается выполнить автозапуск! Данную функцию используют многие вредоносные программы.'+#13#10+'Мы настоятельно рекомендуем Вам не разрешать исполнение сценария и проверить устройство антивирусом.'+#13#10+'Разрешить исполнение?')),PWideChar(UTF8Decode('Rast Security: автозапуск заблокирован')),mb_yesno or mb_iconexclamation)<> IDYES then Exit;
end
else
if MessageBoxW(0,PWideChar(UTF8Decode(Format('Легитимное (заслуживающее доверия) приложение пытается исполнить неизвестную программу на сменном диске. %s%s%s', [#13#10#13#10'Приложение: '+lpApplicationName,#13#10'Файл: '+CmdLine,#13#10#13#10'Разрешить доступ?']))),PWideChar(UTF8Decode('Rast Security: заблокирован ланчер')),mb_yesno or mb_iconexclamation) <> IDYES then Exit;
end;
TrueCreateProcessW(lpApplicationName, lpCommandLine, lpProcessAttributes,
lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment,
lpCurrentDirectory, lpStartupInfo, lpProcessInformation);
end
else
TrueCreateProcessW(lpApplicationName, lpCommandLine, lpProcessAttributes,
lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment,
lpCurrentDirectory, lpStartupInfo, lpProcessInformation);
end
else
//begin
//if not masking app
//end;
if USBDrive then