DLL dosya formatına kısaca bir bakış

Malware analizleri yaptığım ve inceleme yaptığım analizlerde pek çok terim bulunuyor. Bu terimlerle ilgili aralarda daha fazla araştırma yapıp, detayları da daha iyi pekiştirmeye çalışıyorum. Buna örnek vermek gerekirse PE ile ilgili yazılar diyebilirim. Bu yazıda ise DLL dosya formatıyla ilgili bilgiler vermeye çalışacağım diyebilirim.

Dynamic Link Library (DLL) nedir?

DLL, Microsoft işletim sisteminde birden fazla kullanılan programların verilerini içeren bir yazılım kütüphanesidir. Bir yürütülebilir yani exe dosyası çalıştırıldığında buraya aktarılan bir kütüphanedir de diyebiliriz.

DLL’e Genel bir bakış

Dynamic link, yazılımlar veya uygulamalar çalıştırıldığı zaman, bunları kütüphaneye (library) bağlayan bir mekanizmadır. Bu mekanizma gerçekleştirildiği zamanda kütüphaneler hiçbir şekilde uygulama içerisinde kopyalanmaz ve aynı şekilde kalır. DLL bağlantısı oluşturulduğunda değil, uygulama çalıştırıldığında bağlantı verir. Bunun haricinde bir DLL dosyası başka bir DLL bağlantısı da içerebilir.

DLL’nin Avantajları

1-) Daha az kaynak kullanır – Bir dll dosyası ana uygulama çalıştırıldığı zaman RAM’a yüklenmez ve gerekmediği sürece yer işgal etmezler. Sadece gerektiğinde yüklenilir ve çalıştırılır. Örnek vermek gerekirse MS Word dosyasını düzenlediğimiz zaman, DLL dosyası gerekli değildir. Sadece yazıcıya göndermeye karar verdiğimizde DLL, dosyanın yüklenmesine ve çalıştırılmasında rol oynar.

2-) Modüler mimarinin geliştirilmesinde yardımcı olur – Bir DLL, modüler veya birden çok sürüm gerektiren programların geliştirilmesinde yardımcı olur

3-) Kolay kurulum ve kullanım – Dll içerisinde yer alan bir işlev güncelleştirme veya düzeltmeye ihtiyac duyduğunda, DLL’nin dağıtım ve yüklenmesi sırasında DLL, herhangi bir programa ihtiyaç duymaz. Ayrıca aynı DLL dosyasını pek çok uygulama kullanıyorsa, kullanan uygulamaların tamamı bu güncelleştirme veya düzeltemeden yararlanabilir.

Önemli DLL dosyaları

Kernel32.dll –
User32.dll –
Comdlg32.dll –
Gdi32.dll –

Uzun uzun yazılar yazmak yerine kısım kısım yazmayı tercih ediyorum. Bu yüzden yazımın ikinci kısmının olacağını söylemek isterim.

Yararlanılan Kaynaklar

1-) Microsoft – https://support.microsoft.com/en-us/help/815065/what-is-a-dll