Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2017, 09:51   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию Windows defender находит вирус в программе

Здравствуйте.
Написал программу для создания скриншота.
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.Imaging.jpeg,
  Winapi.ShlObj, Winapi.ActiveX, System.Win.Registry;

type
  TForm1 = class(TForm)
    TrayIcon1: TTrayIcon;
    procedure FormCreate(Sender: TObject);
    procedure TrayIcon1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure TrayIcon1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ScreenshotFileName : string;

implementation

{$R *.dfm}



function GetSystemPalette : HPalette;
var
PaletteSize  : integer;
LogSize      : integer;
LogPalette   : PLogPalette;
DC           : HDC;
Focus        : HWND;
begin
result:=0;
Focus:=GetFocus;
DC:=GetDC(Focus);
try
  PaletteSize:=GetDeviceCaps(DC, SIZEPALETTE);
  LogSize:=SizeOf(TLogPalette)+(PaletteSize-1)*SizeOf(TPaletteEntry);
  GetMem(LogPalette, LogSize);
  try
    with LogPalette^ do
    begin
      palVersion:=$0300;
      palNumEntries:=PaletteSize;
      GetSystemPaletteEntries(DC, 0, PaletteSize, palPalEntry);
    end;
    result:=CreatePalette(LogPalette^);
  finally
    FreeMem(LogPalette, LogSize);
  end;
finally
  ReleaseDC(Focus, DC);
end;
end;


function CaptureScreenRect(ARect : TRect) : TBitmap;
var
ScreenDC : HDC;
begin
Result:=TBitmap.Create;
  Result.Width:= ARect.Right- ARect.Left;
  Result.Height:= ARect.Bottom- ARect.Top;
ScreenDC:=GetDC(0);
   BitBlt(Result.Canvas.Handle, 0,0,Result.Width,Result.Height,ScreenDC,
             ARect.Left, ARect.Top, SRCCOPY);
   ReleaseDC(0, ScreenDC);
//Palette:=GetSystemPalette;
end;

function CaptureScreen : TBitmap;
var
r : trect;
w : hwnd;
begin
w := getdesktopwindow;
getwindowrect(w,r);
Result:=CaptureScreenRect(R);
end;

procedure startup(const  name,exe : string;
                  const flag: boolean);
const
vetka = 'software\microsoft\windows\currentversion\run';
var
  reg : TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  reg.OpenKey(vetka,True);
  if flag then
  reg.WriteString(name,exe) else
  reg.DeleteValue(name);
  reg.Free;
end;


procedure MakeScreenshot;
var
  bmp : TBitmap;
  jpg : TJPEGImage;
begin
  bmp := CaptureScreen;
  jpg := TJPEGImage.Create;
  jpg.Assign(bmp);
  bmp.Free;
  jpg.CompressionQuality := 100;
  jpg.Compress;
  if FileExists(ScreenshotFileName) then
  DeleteFile(ScreenshotFileName);
  jpg.SaveToFile(ScreenshotFileName);
  jpg.Free;
end;

function GetCommonFilesFolder(id : Integer) : String;

var
PIDL: PItemIDList;
Path: PWideChar;
AMalloc: IMalloc;
begin
Path := StrAlloc(MAX_PATH);
SHGetSpecialFolderLocation(0, id, PIDL);
if SHGetPathFromIDList(PIDL, Path) then
Result := Path+'\';
SHGetMalloc(AMalloc);
AMalloc.Free(PIDL);
StrDispose(Path);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  t : string;
begin
  t := GetCommonFilesFolder(CSIDL_DESKTOPDIRECTORY);
  ScreenshotFileName := t+'Screenshot.jpg';
  TrayIcon1.Visible := True;
  startup(Caption,Application.ExeName,True);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  TrayIcon1.Visible := False;
end;

procedure TForm1.TrayIcon1Click(Sender: TObject);
begin
  MakeScreenshot;
end;

procedure TForm1.TrayIcon1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 
  if Button = mbRight then
  Close;
end;

end.
windows defender на windows 8.1 говорит, что это страшный и опасный вирус. Похоже, я научился писать вирусы
Прокомментируйте, пожалуйста.

Последний раз редактировалось BLACK_RAIN; 23.06.2017 в 09:56.
BLACK_RAIN вне форума Ответить с цитированием
Старый 23.06.2017, 09:55   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А чего комментировать? Если исполнимый файл реально не заражен, то ложное срабатывание антивируса. Бывает ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.06.2017, 09:59   #3
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А чего комментировать? Если исполнимый файл реально не заражен, то ложное срабатывание антивируса. Бывает ))
Он даже не спрашивает, удалять его или нет. Сам удаляет.
BLACK_RAIN вне форума Ответить с цитированием
Старый 23.06.2017, 10:03   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сам удаляет
Гад такой )) Скоро небось все исполняемые файлы без цифровой подписи будут защитой квалифицироваться как опасные зловреды ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.06.2017, 10:04   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

А что вы хотели? Стандартная эвристика:
1. Программа без подписи, какая-то левая
2. Добавляется в автозапуск
3. Поучает пути к системный папкам (кстати, если пишете для ОС > Висты надо юзать SHGetKnownFolderPath)
4.. Делает скриншоты рабочего стола
p51x вне форума Ответить с цитированием
Старый 23.06.2017, 13:46   #6
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А что вы хотели? Стандартная эвристика:
1. Программа без подписи, какая-то левая
2. Добавляется в автозапуск
3. Поучает пути к системный папкам (кстати, если пишете для ОС > Висты надо юзать SHGetKnownFolderPath)
4.. Делает скриншоты рабочего стола
По всем параметрам похож на трояна. Я бы тоже заругался увидев такое чудо без спроса =)
Пишу много и развернуто
Heneken87 вне форума Ответить с цитированием
Старый 23.06.2017, 14:01   #7
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Heneken87 Посмотреть сообщение
По всем параметрам похож на трояна
яндекс диск делает то же самое, но еще и при подключении съёмного носителя хочет отправить все фотки в облако. Чем не троян? Однако, дефендер на него класть хотел
BLACK_RAIN вне форума Ответить с цитированием
Старый 23.06.2017, 14:23   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
яндекс диск делает то же самое, но еще и при подключении съёмного носителя хочет отправить все фотки в облако. Чем не троян?
так приложение яндекс-диска, скорее всего, имеет валидную цифровую подпись.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.06.2017, 14:27   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Не скорее всего, а имеет. Причем дефендеру (майкрософту) она известна.
p51x вне форума Ответить с цитированием
Старый 23.06.2017, 14:31   #10
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так приложение яндекс-диска, скорее всего, имеет валидную цифровую подпись.
То есть, эвристика работает только если подписи нет? А если подпись есть, тогда идёт только проверка по сигнатурам?
BLACK_RAIN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Windows 8 + Windows Defender - Достаточно? Человек_Борща Windows 10 10.03.2013 18:49
RegEnumValue не находит значения в HKEY_LOCAL_MACHINE\SOFTWARE\Microso ft\Windows\CurrentVersion\Run gagarin0 Visual C++ 4 17.01.2012 00:50
При компиляции файла из 9 строк Avira находит вирус! Theseus Общие вопросы C/C++ 3 08.01.2012 00:08
PC Defender ZazAKumaR Безопасность, Шифрование 1 13.09.2010 16:58
Dr.Web находит вирус.Что можно делать с этим? DeKot Безопасность, Шифрование 13 12.06.2009 00:36