Bu sayfadaki yazılar
Sayfanın metni
Sayfa 37
DOSYALARINIZIN KENARLARI HALA ISIRILIYOR. AÇGÖZLÜ VİRÜSLER YAYILMAYA DEVAM EDİYOR. AMIGA
DÜNYASI OKUYANLAR GAYET 'COOL İŞLERİNE DEVAM EDİYOR. YA ÖTEKİLER?
Geçen aylarda size SADDAM VİRÜS belasını anlatmış ve nasıl kurtulacağınızı yazmıştık. Ayrıca çıkacak olan bazı virüsler hakkında kısa haberler vermiştik. Bu ayda size bazı yeni virüsler ve virüs killer'lar hakkında bilgiler vereceğiz. İlk önce yeni virüsler hakkında kısa açıklayıcı bilgiler. Ve SADDAM VİRÜS hakkında tam açıklama.
REVENGE BOOTLOADER: Daha önceki 'REVENGE OF LAMER EXTERMINATOR' virüsü, programcısı tarafından yazılmış boot virüsüdür. Hakkında fazla bir bilgimiz yoktur. Sadece yapısı itibariyle formatlama yapan bir boot block virüsüdür. Son çıkan virüs olan Revence Bootloader için gelecek sayılarımızda daha detaylı bilgiler vereceğiz. SMILY CANCER MI:
Adından da anlaşıldığı gibi şakaçı bir virüstür. Belirtileri, değişen CLI renkleri ve belli bir resetten sonra aktif olan mouse belirteci. Değişen mouse, şapka giymiş bir smiley halini alıyor. Daha sonrada altından scroll (kayan yazı) geçmeye başlıyor. Burada bu ekibin daha yeni işe başladığını ve bundan sonra başka virüsleri piyasaya süreceklerini belirtiyorlar. SMILY CANCER bir link (file) virüsüdür, 's' directory'sindeki startup-sequence'in ilk dosyasına yerleşir. Henüz extra bir zararını görmedim. "VT 2.21" virüskiller'i ile öldürülebiliyor.
SADDAM VİRÜS: Geçen ayların korkulu rüyası. Duyduğum kadarıyla İstanbul'da bir çok işyerini karıştırmış. Şimdi size virüsün çalışma mantığı ve zararları hakkında tam açıklamayı verelim.
Saddam virüsü bir link (file) virüsüdür. Kendini öteki örnekleri gibi startup-sequence'taki bir dosyaya bağlamaz. Sistemin otomatik olarak okuduğu 'L' directory'sindeki diskvalidator'a bulaşır. Sürücülere takılan her diskette, bu dosya otomatik olarak aktif hale gelir yani okunur. Virüs böylece takılan her diskete bulaşır. Eğer diskette 'L' directory'si yoksa directory'yi yaratır ve içine kendisini 'disk-validator' olarak kaydeder. Bulaştığı disketlerde öteki dosyalar ile arasında bir bağıntı kurar. Kendisinin silinmesi halinde, o dosyalan çalışmaz hale getirir. Her aktif hale geldiğinde disketin kırkıncı track'lannın bazı yerlerine 'IRAK' yazar. Kırkıncı track'lar directory trackları olduğu için, bunların herbiri bir dosyanızı bozar. Tabii ki bu hareketle kendisini diskete daha da iyi bulaştırır. Disket kullanıldıkça yerini sağlamlaştırır. Bu virüsten kurtulmak için NUKE SADDAM KILLER'i kullanabilirsiniz. "VT 2.21" her zaman iyi sonuç vermiyor. Çoğu kez virüsü silmiş gibi yapıp silmiyor. En iyi çözüm "NUKE 1.3b". Bu killer, Sad-damı yok etmekle kalmayıp disketeki bozuk track 'lan da tamir ediyor. Harddisk kullanıcıları için bir kurtuluş yok. Tek çare 'FORMAT DHO:'.... Umarız harddisk kullanıcıları için bir killer gelir. Merak etmeyin. Bu durumda sizi hemen haberdar edeceğiz.
Ayrıca yakında THE MASTER VİRÜS KILLER'ın yeni versiyonu çıkacak. Bu versiyonda büyük olasılıkla 'SADDAM KİLLER' da olacak.
Bu bilgileri nereden bulduğumu soran mektuplar alıyorum. Virüsler hakkında bilgileri yabancı dergilerden çevirmiyorum. Sadece hobilerim arasında virüsleri incelemek gelir. Virüslü disketleri kartuş ya da çeşitli monitör programları ile incelerim. Bu işlemde bana yardımcı olan HÜ-SEYİN YEŞİLBAŞ vardır.
Bu dert burada bitmiyor. Belki gelecek ay değişik bir virüs datalarınızı bozabilir. Disket kullanıcılan için çareler bulunabilir, ama harddisk kullanıcıları için bu problem çok kötü. Bu sebeple harddisk kullanıcılarının dikkatli olmasını tavsiye ederim. Virüssüz günler dilerim.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 36
Burada da 'deneme' ismi altında yeni bir dosya açıyoruz. Open() içerisindeki MODE_NEWFILE macrosu, bize açılacak olan file'ın yeni bir file olduğunu belirtiyor. Tabii ki bu, Open() fonksiyonunun mod parametresi oluyor. Eğer eski bir file üzerinde işlem yapacaksak, MODE_OLDFILE macrosunu kullanmalıyız.
Daha sonra, aynı şekilde dosyanın açılıp açılmadığını kontrol ederek eğer açılmadıysa programdan çıkıyoruz.
Write(file,"0123456789",10); satırında ise, 10 karakterlik bir diziyi "deneme' dosyasına yazıyor ve;
Close(file); CloseLibrary(DosBase); ile dosyayı ve dos.library'yi kapıyoruz. Diğer Read() ve Seek() fonksiyonlarını da aynı şekilde bu program içerisinde kullanabilirsiniz.
Örnek programımız ve input/output işlemleri burada sona eriyor. Böylece Amiga'da kullanabileceğimiz bütün dosyalama işlemlerini de öğrenmiş bulunuyoruz.
Artık Amiga'da grafik işlemlerine gire- biliriz. Bu ay ilk olarak Amiga'da Screen (ekran) açılımını öğreneceğiz. Şimdi ör- nek programımızı vererek konuya girelim; #include <stdio.h> ümclude #graphics/gfx.h> ffînclude #intuition/intuition.h>
sturuct GfxBase *GfxBase; sturuct IntuitionBase *IntuitionBase;
sturuct Screen *scr; sturuct RastPort *rp;
sturuct NevvScreen nw={ 0.0.320,200,4,0,1 ,NULL, CUSTOMSC- REEN,NULL,NULL,NULL,NULL };
main()
IntuitionBase= OpenLibrary ("intuition.- library" ,0); ıf(IntuitionBase==NULL) {
printf("intuitionbase error!\n"); return(l); I
GfxBase = OpenLibrary ("graphics.lib- rary", 0); if(GfxBase==NULL) {
printf("gfxbase error!\n"); CloseLibrary(IntuitionBase); return(l); I
scr=OpenS creen(&nw); if(scr==NULL) {
printf("screen error!\n"); CloseLibrary(GfxBase);
CloseLibrary(IntuitionBase); return(l); ' }
rp=&(scr->RastPort);
Move(rp,100,100); Text(rp,"Amiga Dünyası", 13);
Delay(lOO);
CloseScreen(scr); CloseLibrary(GfxBase); CloseLibrary(IntuitionBase); return(O);
} Buradaki örneğimizle, Amiga'da bir screen açıyoruz ve Text() grafik komutu sayesinde de 'Amiga Dünyası' yazı dizisini, Move() komutu ile ekranın 100'e 100'lük koordinatına yerleştiriyoruz. Programımızın yaptığı iş kısaca böyle. Bu ekranı açtıktan sonra, siz de ekranınızı istediğiniz gibi kullanabilirsiniz. Şimdi programımızı daha derinlemesine inceleyelim:
#include <stdio.h> #include <graphics/gfx.h> #include <intuition/intuition.h> ile grafik ve intuition için gerekli olan yapılar ve macrolar tanımlanarak program derlenmeye hazırlanıyor. Daha sonra, struct GfxBase *GfxBase; struct IntuitionBase *IntuitionBase; satırları ile GfxBase ve IntuitionBase sistem yapıları bir pointer olarak tanımlanıyor. Burada dikkat edilecek husus; GfxBase ve IntuitionBase yapıları pointer olarak tanımlanırken, farklı bir isim kullanılmaması. Aksi takdirde derleyici grafik ve intuition kullanan rutinleri ana programa bağlarken (link sırasında), hata gösterecektir. Bu pointerler sistemin standart yapılarıdır ve değiştirilemezler.
Bir sonraki satırlarda ise; struct Screen *scr; struct RastPort *rp; bulunmaktadır, scr, bizim ekran açıldıktan sonra kullanacağımız, ekranla ilgili bilgileri saklayan yapı değişkenimizdir. Bu değişken vasıtasıyla ekranın hangi hafıza bloğunda bulunduğunu, mouse pozisyonunu ve buna benzer birçok bilgiyi kontrol edebiliriz. Daha sonra, struct NewScreen nw={0,0,320,200,4,0,1,NULL,CUSTOMSCREEN,NULL,NULL,NULL,NULL}; satırları bulunmaktadır. NewScreen, bizim yeni ekranımızın yapı değişkenidir ve bu da Amiga sisteminin standart yapılarındandır. Biz bu yapı yardımıyla ekran özelliklerimizi sisteme bildiririz ve ekranımızı açarız. Buradaki 'nw' değişkeni de, bu yapı özelliğinde tanımlanarak ilk değerleri alır. İlk değerlerimiz sırasıyla; x başlangıç (LeftEdge), y başlangıç (TopEdge), genişlik (Width), uzunluk (Height), bitplane sayısı (Depth), kalem rengi (DetailPen), kağıt rengi (BlockPen), ekran görünümü (ViewMode), ekran tipi (Type), ekranın kullanacağı font ismi (TextAttr), ekran ismi (DefaultTitle), ekranda kullanılacak olan kutular (Gadgets) ve ekranın plane düzeni (bitmap) dir. Bu yapı da, gfx.h içinde aşağıdaki gibi tanımlanmaktadır. struct NewScreen
{ SHORTLeftEdge,TopEdge,Widlraieight, Depth; UBYTE DetailPen, BlockPen; USHORT VievvModes; USHORTType; struct TextAttr *Font; UBYTE *DefaultTitle; struct Gadget *Gadgets; struct BitMap *CustomBitMap;
};
Bir sonraki satırlarda ise, ana programa başlanır. GfxBase ve IntuitionBase library'leri açılarak, eğer bir hata yoksa;
scr=OpenScreen(&nw); satırına gelinir. 'nw' bizim ekranla ilgili bilgilerin saklandığı yapımızdır. OpenScreen() fonksiyonu ile bu ekran açılır ve 'scr' değişkenine, ekranla ilgili bilgilerin saklandığı yapı adresi aktarılır. Eğer ekranımız açılamazsa, NULL makrosuyla geri döner ve library'ler kapanarak programdan çıkılır. Ekran açıldıktan sonra ise, rp=&(scr->RastPort); ile açılan ekranımızın hafıza yapısıyla ilgili bilgilerin saklandığı RastPort değişkeninin adresi, 'rp' değişkenine aktarılır. Ve daha sonra,
Move(rp,100,100); Text(rp, "Amiga Dünyası", 13); ile logomuz yazılır. Delay() ile bir süre bekledikten sonra, açılan ekranımız ve library'ler kapanarak, programdan hatasız olarak çıktığımızı belirten;
return(0); satırı ile programımızdan çıkarız.
Programımızı bir kez daha inceledikten ve yazılımını da kavradıktan sonra artık deneyebilirsiniz. Derleme işlemleri ise kısaca (Aztec C V3.6a için!):
cc +l prog.c -o prog.o -lc32 şeklindedir. Editör yardımıyla programımızı yazın ve siz de üzerinde oynayın.
Şimdilik bu kadar. Gelecek ay yeni örneklerle buluşmak üzere hepinize iyi çalışmalar dilerim.