Arkadaslar eminimki bir cogumuz bir trojanin calisma mantigini merak ediyordur. WAlla Ne yalan Söyleyim 100 kişiden 98 kişi istiyor 2 kişide anlamadığı için SilemiYOr
Yani nasil olurda uzaktaki(remote) bir bilgisayar ile baglanti kuruluyor diye... Az cok
ogrendigim bir kac seyi paylasmak istedim. Simdi trojan adli programciklar bilindigi
gibi 2 parcadan olusmaktadir. [Öncelikle]
1 - Client(Istemci)
2 - Server(Sunucu)
Olay sudur : server yuklenmis oldugu bilgisayarda serversocket paketi ile bir port
acar ornk : 5110
ve client yani istemci de internette bu serverin yuklenmis oldugu bilgisayarin ip
numarasina istem paket yollar ve cevap bekler : Cevap geldigi zaman iki makine
arasinda iletisim kurulmus olur. Simdi bu olayin delphi de nasil yapildigini
anlatmaya calisacagim.
Server.
Ilk oncelikle formumuza bi tane serversocket [Internet/ServerSocket] adli component
yerlestiriyoruz. Daha sonra TForm1.FormCreate yord***** yani formumuzun acilis
yord***** bir takim ozellikler belirliyoruz.. ornegin simdi ilk oncelikle mantik
olarak bizim yapmamiz gereken ne? tabiiki serversockete bir port belirlemek. dedigim
gibi bunu form yuklenme sirasina koycaz. bunun icin yani port acmak icin
"serversocket1.port:=5110;" diyoruz. daha sonra serversocketi aktif hale
getiriyoruz.. "serversocket1.active:=true;". ve bu islemleri gerceklestirdikten
sonra programi create edip calistirisak serverimizi kurmus oluyoruz. evet iste
server bundan ibarettir. Simdi bunu ustunu cizerek soyluyorum Trojan yazmak olay
degil! Herkes trojan yazar. ve trojan yazmak haddinden fazla basittir. yapmaniz
gereken tek sey uc bes kod yazmak. Onemli olan o trojani gelistirmek ve cesitli
fonksiyon eklemektir.
Neyse sira geldi clientsocketten gelen paketleri istemleri serverde uygulayama.
simdi clientten gelen mesajlar serverde serversocket1.socket.receivetext();
fonksiyonunda saklidir. Ornegin clientten biz
clientsocket1.socket.sendtext(&l039;slm&l039;; diye istem yollarsak bu serverde
serversocket1.socket.receivetext(); fonks. da saklanir. Simdi basit bir chat
hazirlayalim trojanimizda. Oncelikle gelen mesajlari okumak icin serversocke
componentine tiklayip Object Inspector Penceresinden Events e oradan OnClientRead i
gelelim cift tiklayalim.. Simdi orada ornegin soyle bir mantik belirleyelim. Diyelim
ki clientten gelen mesajlarin tamamini direct olarak memo1 nesnesine aktaralim.
bunun icin yapmamiz gereken onclientread kismina
memo1.lines.add(Socket.ReceiveText); yazmaktir. bu sekilde clientsocketten gelen
butum mesajlar memo1 nesnesine eklenecektir..
Client.
Bir trojanda tahmin edebileceginiz gibi onemli olan serverin fonksiyonlaridir. biz
mesela clientten server socket.sendtext(&l039;pc_kapat&l039;; diye paket attigimizda bu
server tarafindan yorumlanir. yani soyle olur server.socket.receivetext de derizki
if socket.receivetext=&l039;pc_kapat&l039; then
begin
socket.sendtext(&l039;pc kapatiliyor...&l039;;
// pc kapatma islemleri
end;
end.
bunu serverin read kismina yazarsak
clientten pc_kapat istemi gonderildiginde direct bilgisyari kapatacaktir. Simdi biz
basit bir chat hazirliyorduk. dedigim gibi gelen mesajlar receivetext(); te saklanir
mesaj yollamak icinde sendtext(); i kullaniriz.
clientin de read olayi vardir yani serverden gelen mesajlari okur. clientin read
kismina ornegin memo1.lines.add(socket.receivetext) yazarsak direct serverden gelen
mesajlari okuruz..
iste olay bu kadar. trojan budur. Dedigim gibi trojan yazmak is degil. onemli olan
onu gelistirmek. istemleri ve cevaplari cogaltmak