TUTORIAL BOOTLOADER IN ASSEMBLY
Вставка
- Опубліковано 5 лип 2024
- SOURCE CODE
github.com/MATTIAloyoutuber/b...
ECCO I MIEI SOCIAL
mrtech159?i...
github.com/MATTIAloyoutuber
/ @malwaretester4._57
/ discord
www.tiktok.com/@mattialoyt?_t... - Наука та технологія
: (
A problem has occurred
first?
SPIEGAZIONE DA COPILOT AI(NON SO SPIEGARE)
### Intestazione
```assembly
BITS 16
ORG 0x7C00
```
- **BITS 16**: Il codice viene scritto per un processore a 16 bit.
- **ORG 0x7C00**: Il BIOS carica il programma all'indirizzo di memoria 0x7C00.
### Inizio del Programma
```assembly
start:
xor ax, ax
mov ds, ax
mov es, ax
```
- **xor ax, ax**: Azzera il registro AX.
- **mov ds, ax** e **mov es, ax**: Imposta i segmenti di dati (DS) ed extra (ES) a 0.
### Imposta il Segmento Video
```assembly
mov bx, 0xB800
mov es, bx
```
- **mov bx, 0xB800**: BX viene impostato all'indirizzo del segmento video.
- **mov es, bx**: Imposta ES all'indirizzo del segmento video.
### Pulisci lo Schermo e Avvia l'Animazione
```assembly
call clear_screen
call animate_colors
```
- **call clear_screen**: Pulisce lo schermo.
- **call animate_colors**: Avvia l'animazione dei colori.
### Loop Infinito
```assembly
hang:
jmp hang
```
- **jmp hang**: Resta bloccato qui per sempre.
### Funzione per Pulire lo Schermo
```assembly
clear_screen:
mov di, 0
mov cx, 2000
mov ax, 0x0720
rep stosw
ret
```
- **mov di, 0**: Inizia dal primo carattere dello schermo.
- **mov cx, 2000**: Ci sono 2000 spazi sullo schermo (80 colonne x 25 righe).
- **mov ax, 0x0720**: AX contiene uno spazio (0x20) con l'attributo di colore bianco su nero (0x07).
- **rep stosw**: Riempie lo schermo con spazi bianchi.
- **ret**: Torna al programma principale.
### Funzione per l'Animazione dei Colori
```assembly
animate_colors:
mov cx, 2000
mov di, 0
.next_frame:
call get_random_byte
and al, 0x0F
mov ah, al
mov al, 0xDB
stosw
loop .next_frame
call delay
jmp animate_colors
```
- **mov cx, 2000**: 2000 spazi da riempire.
- **mov di, 0**: Inizia dal primo carattere.
- **.next_frame**: Inizia un nuovo fotogramma dell'animazione.
- **call get_random_byte**: Ottiene un byte casuale.
- **and al, 0x0F**: Mantiene solo la parte bassa del byte (0-15).
- **mov ah, al**: Imposta il colore casuale.
- **mov al, 0xDB**: Imposta il carattere a un blocco pieno (0xDB).
- **stosw**: Scrive il carattere e il colore sullo schermo.
- **loop .next_frame**: Ripete fino a riempire lo schermo.
- **call delay**: Aggiunge un ritardo.
- **jmp animate_colors**: Ripete l'animazione.
### Funzione per Ottenere un Byte Casuale
```assembly
get_random_byte:
in al, 0x40
ret
```
- **in al, 0x40**: Ottiene un byte casuale dalla porta di I/O 0x40.
- **ret**: Torna alla funzione chiamante.
### Funzione di Ritardo
```assembly
delay:
mov cx, 0xFFFF
.delay_loop:
loop .delay_loop
ret
```
- **mov cx, 0xFFFF**: Imposta un grande valore per il contatore.
- **.delay_loop**: Loop di ritardo.
- **loop .delay_loop**: Decrementa CX e ripete il loop fino a zero.
- **ret**: Torna alla funzione chiamante.
### Fine del Settore di Boot
```assembly
times 510-($-$$) db 0
dw 0xAA55
```
- **times 510-($-$$) db 0**: Riempie fino a 510 byte con zeri.
- **dw 0xAA55**: Segno di fine settore di boot.
In sintesi, questo programma pulisce lo schermo e poi riempie continuamente lo schermo con blocchi colorati casuali, creando un'animazione.
Ah tipo quella di ripper?
@@inside2000-D no
@@inside2000-D Ripper butta giù l'mbr e basta non ha l'mbr gdi
@@MalwareLab150 no intendevo gli effetti
@@inside2000-Dno , gli effetti sono solo in C# ( Ripper è creato SOLO con C#)