Delphi ile en basit uygulamayi bile yazsam virus tarayicilar virus oldugunu iddia ediyor
ChatGPT said:
Bu gerçekten can sıkıcı bir durum ve Delphi kullanıcılarının sıkça karşılaştığı bir problem. Sebebi genelde şu nedenlere dayanır:
Virüs tarayıcıları, özellikle az bilinen ya da nadir kullanılan programlama dillerinde yazılmış küçük EXE dosyalarını
şablonlara göre otomatik olarak tarar. Delphi ile derlenmiş uygulamalarda:
- EXE içinde boş bile olsa VCL veya RTL (runtime library) çok şey içerdiğinden,
- Uygulama internette yaygın değilse ya da imzalanmamışsa,
- Çok az sayıda kullanıcı tarafından çalıştırılmışsa (özellikle heuristik motorlar bu durumda şüphelenir),
otomatik olarak "şüpheli" veya "potansiyel zararlı" olarak işaretlenir.
️
Delphi, geçmişte
Win32 virüslerinin yazımında sıkça kullanılmıştı. Bu geçmiş, Delphi'nin oluşturduğu bazı EXE yapılarının hâlâ şüpheli olarak algılanmasına neden olur. Özellikle
UPX sıkıştırması kullanılan EXE’ler, kötü niyetli yazılımlar gibi algılanabilir.
Çözüm Önerileri
1.
- Kodunuzu dijital olarak imzalarsanız (bir Code Signing Certificate alarak), neredeyse tüm antivirüsler sizi rahat bırakır.
- Bu ücretli bir işlemdir, ancak dağıtım yapacaksanız gerekli ve profesyonel bir adımdır.
2.
- EXE boyutunu küçültmek için UPX kullanıyorsanız, virüs gibi algılanması çok olasıdır.
- Derleyici ayarlarında "EXE'yi sıkıştır" gibi seçenekleri devre dışı bırakın.
3.
- Yazdığınız EXE dosyasını https://www.virustotal.com adresine yükleyin.
- Hangi antivirüs motorlarının hata verdiğini görebilirsiniz. Bazı motorlar gereksiz şekilde aşırı hassastır (Bkz. ClamAV, Bkav, Antiy).
4.
- EXE dosyanızın virüs içermediğinden eminseniz, antivirüs firmasına "false positive" raporu gönderebilirsiniz.
- Örneğin:
5.
- Lazarus ile yazılmış uygulamalar da Delphi'ye benzer EXE oluşturur, ancak bazen daha sade EXE’ler üretir.
- Kodlarınız Lazarus'a da uygunsa bir test yapabilirsiniz.
Ekstra: Delphi'de Derleme Ayarları
Aşağıdaki ayarları da kontrol edin:
- Project Options → Packages sekmesinden gereksiz bileşenleri kaldırın.
- Link with runtime packages seçeneğini kapatın.
- Debug information'ı devre dışı bırakın (EXE boyutu küçülür, bazı AV'ler için olumlu olur).
İstersen virüs uyarısı veren basit Delphi projenin EXE’sini incelememi istersen, bunu nasıl analiz edebileceğini de adım adım anlatabilirim.
Devam etmek ister misin?
Evet
ChatGPT said:
Harika! O zaman adım adım ilerleyelim. Elimizdeki hedef şu:
Basit bir Delphi uygulaması yazıyorsun, hiçbir zararlı içermediği halde virüs olarak algılanıyor. Bu durumu analiz edip nedenini anlayacağız ve çözüm yollarını uygulayacağız.
AŞAMA 1: Basit Bir Delphi Uygulaması Oluştur
İlk olarak aşağıdaki gibi
çok basit bir proje oluşturmanı istiyorum (örnek kod aşağıda):
Örnek Delphi Kodu (Form Uygulaması)
delphi
CopyEdit
Kod:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Merhaba dünya!');
end;
end.
Derledikten sonra
Project1.exe
veya verdiğin isimde bir dosya elde edeceksin.
AŞAMA 2: EXE Dosyasını Virustotal’a Yükle
- https://www.virustotal.com adresine git.
- EXE dosyanı sürükleyip bırak.
- Tarama bittikten sonra çıkan sonuçları bana paylaş:
En çok hangi antivirüsler uyarı veriyor?
Uyarı mesajı ne diyor? (örneğin "Generic trojan", "Suspicious", "W32/FakeApp" vb.)
️ AŞAMA 3: EXE'yi Neden Şüpheli Bulduklarını Anlama
Virüs tarayıcıları genellikle aşağıdaki nedenlerden dolayı Delphi EXE dosyasına şüpheyle yaklaşır:
Sebep | Açıklama |
---|
Win32 API kullanımı | ShellExecute , CreateProcess gibi fonksiyonlar varsa hassas algılayabilir. |
Debug bilgisi içeriyor | Debug bölümleri bazı antivirüslerce "şüpheli yapı" olarak görülür. |
İmza yok (Unsigned EXE) | EXE dosyası dijital olarak imzalanmadıysa ve az kullanıcıya sahipse, bayrak açılır. |
UPX ile sıkıştırılmış | EXE’yi UPX ile sıkıştırmak neredeyse her zaman şüphe uyandırır. |
Küçük ve yaygın olmayan EXE | Yeni veya az kullanılan EXE’ler, davranış analizi nedeniyle şüpheli algılanabilir. |
AŞAMA 4: Temiz EXE İçin Tavsiyeler
1. Derleme Ayarlarını Temizle
- Debug bilgilerini çıkar
→ Project Options > Compiler > Debug information
→ False
- Runtime paketlerini linkleme
→ Project Options > Packages > "Build with runtime packages"
→ Unchecked
- İmzalama (varsa)
→ Kodunuzu bir code signing certificate
ile imzalayın (ücretli ama etkili)
2. EXE Dosyasını Alternatif Derleyiciyle Üret (isteğe bağlı)
- Lazarus ile aynı kodu derleyip çıkan sonucu karşılaştırabilirsiniz.
- Aynı sorun varsa, problem kodda. Sorun ortadan kalkıyorsa, sorun Delphi'nin EXE yapısında.
Şimdi Sıra Sende
- EXE’yi oluştur ve virustotal sonucunu gönder.
- Virüs olarak algılanan motorların adlarını ve uyarı metinlerini paylaş.
- Kullanıyorsan:
- UPX veya başka EXE sıkıştırıcı?
- Hangi Delphi sürümünü kullanıyorsun?
- Windows Defender dışında başka antivirüs var mı?
İstersen birlikte bu EXE’nin içeriğini PE Explorer, Detect It Easy, CFF Explorer gibi araçlarla da analiz ederiz.
Devam edelim mi?