|

Basit Bootloader Yazımı (Nasm)



admin tarafından 2019-07-06 09:43:13 tarihinde yazıldı. Tahmini okunma süresi 2 dakika, 6 saniye. 799 kere görüntülendi.




Disclaimer


The information provided in this blog post is intended for educational and informational purposes only. It is not intended to encourage or promote any illegal or unethical activities, including hacking, cyberattacks, or any form of unauthorized access to computer systems, networks, or data.

Yasal Uyarı
Bu blog yazısında sağlanan bilgiler yalnızca eğitim ve bilgilendirme amaçlıdır. Bilgisayar korsanlığı, siber saldırılar veya bilgisayar sistemlerine, ağlara veya verilere herhangi bir şekilde yetkisiz erişim de dahil olmak üzere herhangi bir yasa dışı veya etik olmayan faaliyeti teşvik etme veya reklamlama amacı taşımaz.
Yasal bilgiler için yasal sayfasını inceleyebilirsiniz .

Merhabalar

Bu yazımda sizlere Nasm ile Basit Bootloader yazımını anlatacağım şimdiden kolay gelsin :)

Nasm nedir gibi tanımsal konulara girmeyeceğim zira nasm nedir bilmiyorsanız "burada ne işim var?" diye sorgulamalısınız :D

Gerekenler

- Qemu Virtual PC ( Link : https://qemu.weilnetz.de/w64/qemu-w64-setup-20181127.exe )
- Nasm ( Link : https://www.nasm.us/pub/nasm/releasebuilds/2.14.03rc2/ )

Şimdi bunları yüklediysek asıl dananın kuyruğunun koptuğu kısma gelelim.

Öncelikle Windowsta C:\Users\kullanici_adi\AppData\Local\nasm konumuna nasm yüklenir. Burada bir boot.asm dosyası oluşturalım ve içine şunları girelim (Burada A karakteri bayt sorunundan girildi siz baytı arttırırsınız mov ah kısmında geçersiniz :) )

; AliCanBlog Bootloader
mov ah,0x0E
mov al,'A'
int 0x10
; Bootloader
jmp $
times 510-($-$$) db 0
dw 0xAA55

02.07.2019 Edit : Yazıları eklemek için "int 0x10" altına şunu ekleyin :

mov al, 'L'
int 0x10

Örneğin :

; AliCanBoot
mov ah, 0x0E ;Yazı Girişi
mov al, 'A'
int 0x10
mov al, 'L'
int 0x10
mov al, 'I'
int 0x10
mov al, 'C'
int 0x10
mov al, 'A'
int 0x10
mov al, 'N'
int 0x10
; Bootloader
jmp $
times 510-($-$$) db 0
dw 0xAA55

Alternatif Olarak :

;Alternatif Kod

; AliCanBoot
BITS 16
start:
mov ax, 07C0h
add ax, 288
mov ss, ax
mov sp, 4096
mov ax, 07C0h
mov ds, ax
mov si, metin_giris

;Yazıyı gir
call yazdir_yazi
metin_giris db 'ALICAN', 0

yazdir_yazi:
mov ah, 0Eh

.tekrar:
lodsb
cmp al, 0
je .bitti
int 10h
jmp .tekrar

.bitti
ret

; Bootloader
times 510-($-$$) db 0
dw 0xAA55

Ayrıca "%include" kullanarak farklı .asm dosyalarını birleştirebilirsiniz.

Örneğin :

%include "mem.asm"

Ayrıca C dosyalarını uygulamak için "extern" komutunu kullanıyoruz. Bu komut kmain.c dosyasını devreye sokar.

extern kmain

call komutu ile de gerekli alan çağırılır.

call kmain

kmain voidini çağırdık 

-------------------------------------------------------------------

Ardından şu komutu çalıştıralım :

nasm boot.asm -f bin -o boot.bin

Sonrasında dir komutuyla boot.bin dosyasını görebiliriz. Ardından şu komut ile Qemu programını başlatalım.

C:/qemu/qemu-system-i386 boot.bin

Şu ekran gelecek ve A değerini göreceğiz :

Anlatımım bu kadardı. Umarım Nasm hakkında aklınızdaki önyargılar kırılmıştır 

Mutlu Geliştirmeler Dilerim :)