Umut Tosun

I love low level stuffs and cyber security

Kernel Fonksiyonları Nasıl Disassemble Edilir?

15 Sep 2016 » Reverse Engineering

NOT:Kernel Debugging sırasında yapacağınız bir şey sisteminize zarar verebilir, o yüzden Sanal Makinede ve dikkatli bir şekilde kullanmanız gerekiyor. Sisteminizde oluşan sorunlar için sorumluluk kabul etmiyorum, bu yazımda sadece kernel fonksiyonlarını nasıl disassemble edileceğini gösteriyorum.

İlk olarak bir kernel debugger’ a ihtiyacımız var. Bunun için Microsoft’un ücretsiz olarak sunduğu “W_indbg”_  debuggerını kullanacağız.

Buraya tıklayarak Microsoft‘un yazmış olduğu, Windbg‘ın nasıl yükleneceğini anlatan blog yazısına ulaşabilirsiniz.

Windows’u Kernel Debugging’e Hazırlamak

Windbg‘ı yükledikten sonra yapmamız gereken şey Wingdbg‘ın kernel debugging seçeneğini kullanabilmek için Windows‘un kernel debugging ayarını aktif hale getirmek.

Bunun için Command Prompt’u administratör yetkileriyle çalıştırıyoruz ve “bcdedit /debug on” komutunu çalıştırıyoruz. Ayarlarımızın aktif hala gelmesi için Windows‘u yeniden başlatıyoruz.

Kernel Disassemble

Kernel Fonksiyonlarını Disassemble Etme

Windbg‘ı kernel debugging modunda çalıştırmak için Windbg‘ı a_dministratör_ y_etkileriyle_ çalıştırıyoruz.

Daha sonra File menüsünden Kernel Debug seçeneğini seçiyoruz. Nerede kernel debugging yapacağımızı seçmemiz için ufak bir pencere açılıyor. Biz localde yapacağımız için local i seçiyoruz ve OK‘ e basıp terminalimizi açıyoruz.

Artık terminalimiz açık, kernel fonksiyonlarını disassemble etmeye başlayabiliriz. Fonksiyonları disassemble etmek için yazacağımız komut:

uf nt!FonksiyonIsmi

Bu şekilde uf komutu ile disassemble edebiliyoruz.

Örnek olarak KeInitThread fonksiyonunu disassemble edelim.

Kernel Disassemble

Gördüğünüz gibi amacımıza ulaşmış bulunuyoruz. Artık istediğimiz fonksiyonu disassemble edebiliriz. Umarım yardımcı olmuşumdur.