Assembly Klasör ve Dosya İşlemleri - 1

DeathWarrior01

Uzman üye
14 Ocak 2021
1,731
1,070
Evren


Herkese merhaba değerli THT üyeleri.Bu konumda sizlere Assembly dilinde "Dosya ve Klasör İşlemleri - 1" adlı konuyu anlatacağım.
Anlatımımı "intel8086" komut kümesini baz alarak yapacağım.Herkese faydalı olması
dileğiyle...


Assembly Klasör ve Dosya İşlemleri - 1

Bugün İnceleyeceğimiz Başlıklar:

1 ==> Klasör oluşturma ve silme
2 ==> Klasör geçerli dizin ayarlama ve alma

3 ==> Klasör yeniden adlandırma

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

1 ==> Klasör oluşturma ve silme:

Klasör oluşturma

Assembly'de klasör oluşturmak için "ds:dx" kaydedicileri üzerinde alttaki gibi bir klasör adı belirtmemiz gerekiyor:



Burada dikkat etmemiz gereken konu sürücü kısmını boş bırakmamak.Eğer sürücü kısmını boş bırakırsak
default(varsayılan) olarak "emu8086" klasörü altında bulunan "MyBuilds" isimli
klasöre dosyalarımızı oluşturacaktır.Klasör adını yazdıktan hemen sonra bir sıfır yazdık.Sıfır'ı yazmamızın sebebi ise
klasör adının bittiği anlamına geliyor.Klasör oluşturma işlemi başarılı olursa "AX" kaydedicisi
temizlenir ve "CF=0" olur.
Klasör işlemi başarısız olursa "AX" kaydedicisine hata kodu döndürülür ve "CF=1" olur.Klasör adımızı belirtiğimize göre
artık klasörümüzü oluşturmaya başlayabiliriz.Lea komutu ile klasör adının başlangıç adresini alıyorum:


Aldıktan sonra "mov" komutu ile 8 bitlik "AH" kaydedicisine 39h değerini atıyorum:


Buradaki 39h değeri ile klasörümüzü oluşturuyoruz.Oluşturduktan sonra "int 21h" komutu ile programımızı kesme
işlemini gerçekleştiriyoruz:



Programımızı run ettik ve düzgün bir şekilde klasörümüzün istediğimiz dizine oluşturulduğunu görüyoruz:




Klasör silme

Klasör silme işlemi ise oluşturma işlemi ile neredeyse aynıdır.Tek fark sadece fonksiyon değerini değiştirmek olacaktır yani
"AH" kaydedicisi içerisine 3Ah değerini atacağız:




Unutmamak gerekirse klasör silme işleminde sileceğimiz klasörün içi boş olmalıdır.Aksi taktirde programı çalıştırdığımızda
hata verecektir.Programımızı run ettik ve aşağıda görüldüğü üzere klasörümüz silinmiş:



2 ==> Klasör geçerli dizin ayarlama ve alma:

Geçerli dizin alma

Assembly geçerli dizinleri almak için "ds:sı" kaydedicilerine ihtiyaç duyar.Bu kaydediciler içerilerine geçerli dizinleri
alırlar ve en fazla 64 bytelık veri tutabilirler.Geçerli dizinleri tutmak içinse "dl" kaydedicisi vardır.Bu kaydedicinin içerisine örnek
verecek olursak:
00h = varsayılan dizin
01h = A sürücüsü
02h = B sürücüsü
gibi değerler atılabilir.Geçerli dizini ya da dizinleri almak için "AH=47h" fonksiyonu kullanılır.Geçerli
dizin alma başarılı olursa CF=0 olur.Başarısız olursa CF=1 olur ve AX(0Fh) kaydedicisine
hata kodu döner.Hemen bir örnek vererek
pekiştirelim:



Burada 64 bytelık bir değişken oluşturduk.



Varsayılan dizinimizi aldık.



Geçerli dizinimizi alıp programımızı kestik.Program çıktısı:




Geçerli dizin ayarlama

Geçerli dizin ayarlamalarını yapmak için "ds:dx" kaydedicilerine ihtiyaç duyarız.Bu kaydediciler
içerilerine geçerli dizinleri alırlar ve aynı "geçerli dizin alma" da olduğu gibi 64 bytelık alana
ihtiyaç duyarlar.Burada bizim varsayılan klasörümüzün yolunun ve adının bulunması gerekiyor.Fonksiyon kodumuz "AH=3Bh" dır.
Kesme kodumuz ise herzaman ki gibi "int 21h" dır.Hemen bir örnek yaparak konuyu
daha iyi kavramaya çalışalım:




Burada "dl" kaydedicisinin içerisine 01h değerini atıyoruz.
Bu değer sayesinde "A" sürücüsünde geçerli dizin ayarlamak
istediğimizi belirtiyoruz.




Dosya yolumuzu ve dosya adını verdik.



Lea komutu ile "varsayilanDiziA" adlı dizinin başlangıç adresini almış olduk.



Burada "mov ah, 3Bh" komutu ile geçerli dizinimizi ayarlıyoruz.



"int 21h" komutu ile programı kesip sonlandırıyoruz.Programımızın çıktısı ise aşağıda görüldüğü
gibidir:



Yukarıda da görüldüğü üzere geçerli dizinimiz "klasor1" olmuş oluyor.Unutmadan da söyleyeyim
istediğiniz adda bir klasörü geçerli dizin olarak ayarlamak istiyorsanız
herhangi bir sürücü belirlemeniz gerekmektedir(A,B,C,D).Sürücünüzü belirledikten sonra istediğiniz bir adda klasör oluşturmanız gerekiyor.Bunu yapmazsanız programınızda
hata oluşacaktır.


3 ==> Klasör yeniden adlandırma:

Klasör yeniden adlandırma

Klasör oluşturma işlemlerinde parametre kaydedicilerimiz "ds:dx" ve "es:di" dir."ds:dx" kaydedicilerimizin
içerisine var olan klasörümüzün ismini atıyoruz."es:di" kaydedicilerimizin içerisine ise belirleyeceğimiz
yeni dosya adını atıyoruz.Fonksiyon kodumuz "AH=56h" ve kesme numaramız ise "int 21h" dır.Bir örnek vererek konuyu
açıklayıcı hale getirelim:



Emu8086 altında bulunan "C" sürücümüzün içerisine klasor1 diye bir dosya oluşturdum.



"varolanKlasorAdi" ve "yeniKlasorAdi" şeklinde iki değişken oluşturdum.
Lea komutu ile "varolanKlasorAdi" adlı değişkenimi "dx" kaydedicisi içerisine attım.
Yeniden lea komutunu kullanarak "yeniKlasorAdi" adlı değişkenimi "di" kaydedicisinin içerisine attım.
Mov ile "ah" kaydedicisinin içerisine "56h" fonksiyon numarasını attım ve bu sa yede "klasor1" adlı
varolan klasörümüzün adı "klasor1yeni" olarak değişmiş oldu."int 21h" komutu ile programımızı kesip
sonlandırdık ve programı run ettik.Hemen emu8086 altında bulunan "C" sürücüsüne gidiyoruz:



Görüldüğü üzere "klasor1" adlı klasörümüz "klasor1yeni" olarak değiştirilmiş oluyor.

Konumuzun sonuna geldik umarım açıklayıcı olmuştur.
2.bölüm yakında gelecektir beklemede kalın.Esenlikler...
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.