windows,

WDK Tips-VS Studio Kurulumu ve sonrasında karşılaşılan problemler ve çözümleri

Yavuz Han Yavuz Han Follow Jul 07, 2020 · 6 mins read
WDK Tips-VS Studio Kurulumu ve sonrasında karşılaşılan problemler ve çözümleri
Share this

Herkese selamlar,

Windows 7 üzerinde KMDF programlama ve C++ projeleri yazmak için Windows’a WDK ve SDK’yi kurup, Visual Studio’ya entegre olduğunu görmem gerekiyordu. Fakat hem kurma aşamasında hem de kurduktan sonra bazı problemler ile kaşrılaştım. Bu yazımda karşılaştığım problemlerin çözümleri üzerine olacak.

VcRuntimeDebug ve Code 8007000E hatasının Çözümü

Askerlik sebebiyle belli bir süre Pc den uzak kalmıştım. Geldikten sonra da bazı sebeplerden ötürü Windows Kernel Explotation için kurduğum labımı silmişitm bu yüzden tekrardan kurmam gerekiyordu. Benim açımdan en önemli kısım Visual Studio kurma işlemiydi. İlk olarak gerekli VM’leri kurdum ve sıra VS Studio kısmına gelmişti. Maalesefki daha önce almadığım hataları almıştım.

İlk olarak aldığım hata yukarıdaki resimde de gördüğünüz üzere vc runtime debug x86.msi hatası oldu. Pek çok yerde araştırmama rağmen hatta VM’yi tekrardan kurup tekrardam denememe rağmen herhangi bir sonuç çıkmadı. Stackoverflow ve MSDN forumlarında belirtilen izlenebilecek tüm yolları denemiştim fakat olmamıştı. Bunun yanında kurulum aşamasında bu kısmı atla dediğim zamanda karşıma VScore adında ayrı bir hata ile de karşılaşmıştım. İlk hatayı çözemediğim için bu hatayı da detaylıca araştırmadım.

Bunlarla uğraşırken aklıma VM’de kurulu olan Win7x86Sp1‘i güncelleme fikri geldi. Çünkü daha önce karşılaştığım bazı sorunları güncelleme yaparak halletmiştim. Güncellemeleri kontrol etmek istediğimde ise yukarıdaki resimde gördüğünüz Code 8007000E hatası ile karşılaştım. Bu hatanın açıklamasına baktığımda Windows’un güncellemeleri denetlemeye çalıştığı fakat deneyetleyemediği gibi belirtiliyordu. Araştırmalardan sonra çözüm yolu şu şekilde :

  • İlk olarak IE11 indiriyoruz:
  • Daha sonra yüklemeyi gerçekleştirip, tekrardan başlatıyoruz.
  • İkinci olarak KB3102810 güncelleştirmesini indiriyoruz.
  • Daha sonra kurulum yapmadan tekrar başlatıyoruz. Tekrar başlattıktan sonra yükleme işlemini halledip, yine tekrardan başlatıyoruz.
  • Üçüncü olarak W+R ile Run komutuna gidip, services.msc yazıp ilgili kısma gidiyoruz. Burada Windows Update’i bulup, servisi durduruyoruz. Daha sonra C:\Windowsdizinine gidip SoftwareDistribution adlı klasörü siliyoruz.
  • Daha sonra tekrardan başlatıyoruz ve Windows Update servisini kontrol edip, çalıştığından emin oluyoruz.

Yukarıdaki adımlardan sonra Windows Update servisimiz tekrardan aktif hale gelmiş oluyor ve yükleme ile ilgili herhangi bir sıkıntımız kalmıyor.

Windows7x86’da KMDF için doğru WDK ve SDK seçimi

Geçtiğimiz zamanlarda Windows Kernel Exploit için lab ortamımı kurmaya çalışıyordum ve kurdum da diyebilirim. Daha sonraları da herhangi bir problemle karşılaşmadığımı belirtmek isterim. Aslında ana problemim VS Studio’yu kurmaktan ziyade doğru WDK ve SDK seçimini yapmaktı. Açıkcası bu bilgiye ulaşmam biraz zamanımı aldı diyebilirim çünkü pek çok kişi ve web sitesi bu tarz bir ayrıntıyı paylaşma gereksinimi nedense duymamıştı. Gördüğüm tüm bilgilerde Windows 10 SDK ve WDK’yı yükleyin sonra da yürüyün yürüyebileceğiniz kadar diyorlardı :) Aşağıdaki adımları takip ettiğimiz takdirde herhangi bir problem kalmayacaktır :

1- İlk olarak Visual Studio Community 2015 with updates yüklüyoruz.

2- İkinci olarak Windows SDK Version 1607 yüklemesini gerçekleştiriyoruz.

3- Son olarakta Windows WDK 1607 and Windows WDK 1703 kurulumunu gerçekleştiriyoruz.

Tüm bu adımlardan sonra Kernel Driver kodlama kısmına geçebilirsiniz.

Test Certificate Hatası ve çözümü

Kernel Mode Driver ile ilgili programlama yapıp, derleme yaptığımız zaman "invalid argument "sertifikaismi.crt" for property test certificate" adında bir hata alabilirsiniz ki ben aldım açıkcası. Bununla ilgili olarak bulduğum en iyi çözümün yeni bir sertifika oluşturmak olduğunu size söyleyebilirim. Bunuda yaparken :

  • Project-> Properties-> Driver Signing kısmına gidiyoruz.

  • Burada Test Certificate -> Create Test Certificate* seçip, yeni bir sertifika oluşturuyoruz.

Böylece problemi halletmiş olup, derlemeyi sıkıntısız bir şekilde yapabiliyoruz.

Hedef Platform Seçme

Bu problem genel olarak açık kaynak bir projeyi alıp, derlediğimiz zaman başımıza geliyor desem yanlış olmaz. Mesela Github üzerinden bir projeyi indirdiğimiz bazı zamanlar kendimiz derlememiz gerekiyor. Bazı projelerin derlenmiş versiyonları yer alıyor fakat maalesef herkesin makinesinde aynı sonuca ulaşılmıyor. Bu yüzden kendimizin yapacağı derleme işleminin daha faydalı olabileceğini düşünüyorum. Problemi şu şekilde halledebiliyoruz :

  • Project -> Properties -> Driver Settings -> Target OS kısmına geçiyoruz.

  • Burada hangi işletim sistemini kullanıyorsak onu seçiyoruz ve Platform kısmını da Desktop olarak seçiyoruz.

Böylece derleme işlemi yaparken en azından bununla ilgili veya buna bağlı olabilecek herhangi bir hata almayacaksınızdır.

Windows.h’ Hatasının Çözümü

Sürücü programlama yaparken gerekli dosyalarımızı yüklediğimiz halde -SDK, WDK vs- programlamaya başladıktan sonra ‘Windows.h’ kütüphanesi ile ilgili hata almamız içten bile değil. Bu sadece VS Studio 2015’de değil bir üst ve daha alt versiyonlarında da görülüyor.

Her ne kadar Stack Overflow veya benzeri sitelerde, herşeyi en baştan yapıp tekrardan deneyin diyen kullanıcılar çıksa da epey vakit alabilecek bir yöntem. Ki olup-olmayacağı da kesin değildildi. Bu yüzden daha mantıklı çözüm bulan kullanıcıların çözümüne zorda olsa ulaştım. İlgili projemizi başlattıktan sonra #include <Windows.h> diye belirttiğiniz zaman, hata almış alacaksınız. Gerekli hatayı aldıktan sonra yüklenilen dosyalara baktığımda Windows.h dosyasının yüklenmiş olduğunu fark ediyoruz.. Çözüm olarakta;

Project–>Project Properties–>VC++ Directories–>Include Directories

Bu kısma geldiğimiz zaman Edit yapıp, kullandığımız SDK versiyonun Program Files içerisindeki yerini ve versiyonun olduğu klasörü buluyoruz. Windows.h dosyası ise um klasörü içerisinde yer alıyor.

Sonrasında Tamam butonuna tıklayıp, Apply diyoruz. Daha sonrasında ise problemimizi halletmiş oluyoruz.

“cannot find or open the file” Hatasının Çözümü

Bu WDK’dan ziyade c++ ile ilgili kodlama yaparken karşılaştığım bir hataydı. Kodlama kısmını bitirip, debug işlemine koyulduğum zaman aşağıdaki hatalarla karşılaştım:

  • Cannot find or open the PDB file

  • Cannot find or open the kernel32.dll file

  • Cannot find or open the kernalbase.dll FILE

Yukarıdakiler sadece belli bir kısmı ve yukarıdakiler gibi benzeri bir takım dosyaların eksikliğinden dolayı debug ettikten sonra kodların çalışmadığını gördüm.

İlk olarak bilgisayarınıza veya VM üzerinde çalışıyorsanız ilgili sanal makinemize Symbol dosyalarını yüklememiz gerekecek. Bu yüzden ilk önce Windbg’ında yer aldığı Windows 10 SDK’yi yüklüyoruz. Kurulum esnasında kullandığınız makineye göre bazı ek güncelleştirme yada yazılımlar yükleyebiliyorsunuz. Windbg’yi yükledikten sonra ek olarak Symbols’ı path olarak eklememiz gerekecektir.

Computer-->>Properties-->>Advanced System Settings-->>Environment Variables-->>New User Variable

Daha sonra aşağıdaki kısmı ekliyoruz.

Variable Name: _NT_SYMBOL_PATH
Variable Value: SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols

İkinci olarakta bu Symbol path’ı Visual Studio üzerinde belirtmemiz gerekiyor. Visual Studio’yu açtıktan sonra

Debug-->Options-->Debugging-->Symbols

gittiğimizde ilk olarak Catche Symbols in this directory kısmından Path‘ı belirtiyoruz. Daha sonra da Symbol File locations bölümünden hem bu yaptğımızı seçiyoruz, hemde microsoft symbol servers kısmını seçiyoruz. Daha sonra da kaydet deyip, ilgili kısmı kapatıyoruz.

Burada tavsiyem ilk önce VS Studio’yu yeniden başlatmanız olacaktır. Sonrasında Debug işlemini başlattığınız an VS Studio otomatik olarak var olmayan symbol dosyalarını algılayıp, otomatik olarak eklemesini yapacaktır.

Yavuz Han
Yavuz Han Follow
Security Researcher | Low Level