folder Tahribat.com Forumları
linefolder Microsoft Windows Ailesi İşletim Sistemleri
linefolder [Dokuman] - Kendi Windows NT Kernelimizi Derleyelim



[Dokuman] - Kendi Windows NT Kernelimizi Derleyelim

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    Merhaba arkadaşlar, sizlere pek çoğunuzun bilmediği, ve hatta olmasına ihtimal vermediği bir olayı anlatacağım :) Windows NT 5.2 kernelini derleyeceğiz ve kendi kernelimizi test edeceğiz.

    Öncelikle hemen açıklığa kavuşturayım, evet Microsoft NT 5.2'nin kaynak kodlarını çoktan açtı, ancak sadece belirli üniversitelere ve akademik amaçlı. Tabi ki internete de düştü :)

    NT 5.2 nedir biraz daha açıklığa kavuşturmak adına, NT Kerneli versiyonları ile Windows versiyonlarını karşılaştıralım.

     

    Windows 2000 NT 5.0
    Windows XP NT 5.1
    Windows Server 2003 NT 5.2
    Windows XP 64 bit NT 5.2
    Windows Vista NT 6.0
    Windows 7 
    NT 6.1
    Windows Server 2008 NT 6.1
    Windows 8 NT 6.2

    İşte Microsoft'un akademik amaçlarla kaynaklarını açtığı kernel NT 5.2 yani Windows Server 2003 ve XP x64 işletim sistemlerinin çekirdeği.

    Dolayısıyla bu kernel'i test etmek için, sanal makinaya server 2003 ya da xp 64 kurmalıyız.  Bunları anlatmadan önce, biraz NT kerneli hakkında bilgi vereyim, böylece elimizde neyin kaynak kodu olduğu daha netleşsin.

    Windows NT kerneli aşağıdaki isimlerden birisi olabilir.

    Ntoskrnl.exe   : Tek işlemcili bilgisayarlar için

    Ntkrnlpa.exe   : Tek işlemcili bilgisayarlar için PAE destekli

    Ntkrnlmp.exe  : Çok işlemcili bilgisayarlar için

    Ntkrpamp.exe : Çok işlemcili bilgisayarlar için PAE destekli

    Sonuncusu sadece 32 bit OS lar için geçerlidir zira 64 bit OS lar için PAE ye ihtiyaç yoktur. PAE nedir derseniz tamamen konu dışı olduğu için anlatmayacağım, sadece şunu söyleyim 32 bit işlemcilerin 64 GB a kadar bellek adresleyebilmesini sağlıyor. Normalde bu sınır 4 GB dır.

    Nt kerneli gördüğünüz gibi tek bir exe dosyasından ibarettir ancak exe uzantısına aldanmayın, çift tıklayınca çalıştırabileceğiniz programlardan değil :) bir kaç katman içeren ve tüm kernel fonksiyonlarını export eden bir dosya.

    Bu arada 64 bit versiyonlarda kernel ismi değişmez ama kernelin kendisi tamamen değişir. Ayrıca bu isimler özgün isimdir, yani kendi bilgisayarınızdaki kerneli bulup (çok işlemcili pc bile olsa ntoskrnl.exe olabilir) sağ tıklayın, ayrıntılardan özgün dosya ismine bakın, kernelin asıl ismi odur.

    Bir de kısaca HAL dan bahsetmek istiyorum. Hardware abstraction layer, yani donanım soyutlama katmanı,  kernel'in farklı donanımlarda bile hiç bir değişiklik yapılmaksızın çalışmasını sağlar, yani donanımı soyutlar. Ancak burda donanımdan işlemci yani mimari anlaşılmasın. Mimari kernel'in işidir, ve her mimariye göre kernel değişir, ancak aynı mimaride (x86 örneğin) farklı anakartlar için farklı kerneller üretilmesini engeller. Yani Mimari dışındaki tüm donanım farklılıkları ile kendisi ilgilenir ve kernele standart bir arabirim sunar.

    Özetle, donanıma bağımlı olan windows bileşenleri kernel ve hal'dır. Bunlar sayesinde sistemin gerikalanı değiştirilmeksizin, windows farklı mimarilere ve donanımlara uyarlanabilir.

    Hal, kernel gibi system32 dizininde bulunur, dosya adı ise hal.dll dir. Tabi bu dosyada alelade bir dll dosyası değildir, isimler kafanızı karıştırmasın, sistemdeki en aşağı seviye kodlar bu dosyada çalışır.

    Derliyoruz...

    Peki nerede bu kaynak kodlar, öncelikle iyi haber, bildiğiniz gibi Windows'u linux'dan ayıran en önemli özelliği kolay ve kullanışlı olması.  Göreceksiniz ki, windows'un kernelini derlemek, linux da herhangi bir program kurmaktan bile daha kolay :)

    Öncelikle aşağıdaki linkten kernel kodlarını ve derleme araçlarını indirin. Evet 15 mb lık bir zip dosyasında hem kernel hem de compiler, assembler, linker vb araçlar, hemde kernel ile ilgili ayrıntılı dökümanlar mevcut.

    Ben olayı basitleştirmek adına bir build_x86.bat dosyası hazırladım,  aşağıdaki zip dosyasının içindeki WRK klasörünü C:\ dizini altına kopyalayın, C:\WRK olacak.

    http://www.multiupload.com/QHZL1QQFGA

    Dökümandaki herşey özgün olduğu gibi site de bana aittir :) Kaynak kodlara gözucuyla baktıysanız devam edelim.

    Derlemek için tek yapmanız gereken, C:\WRK dizinine gelip build_x86.bat ı çalıştırmak, derleme işlemi bir kaç dakika sürecektir, devam etmek için bir tuşa basın'ı gördüğünüzde derleme işlemi tamamlanmıştır.

    Derledik, peki kernelimiz nerde? C:\WRK\base\ntos\BUILD\EXE dizinine geliyoruz, wrkx86.exe dosyası bizim kernelimizdir.

    İsmi neden ntoskrnl.exe gibi değil diye sormayın, zira bu kernel Windows Research Kernel olarak geçiyor ve closed source değil shared source :)

    Kendi Kernelimizi Yaratalım Ve Deneyelim

    Bu bölümü bir video olarak hazırladım, 30 dakikalık ayrıntılı bir video, sıfırdan tüm adımları gösteriyor. Video da sırasıyla şunları yapıyorum.

    • Kernel'i C:\ ye çıkar
    • Kodu dökümantasyonu ve derleme araçlarını göster
    • Kernel hakkında bilgi ver
    • Yeni kurulmuş temiz bir Windows Server 2003 aç ve göster
    • Kendi derlediğimiz kernel'i ekle ve o kernelden başlat ve göster
    • Kernel'e kod ekle, bu kod sayesinde yeni kernel, içinde tahribat kelimesi geçen hiç bir dosyayı açmayacak. Sistemi bu tahribat kerneli ile başlat sonuçlarını test et.

    Evet arkadaşlar videodaki olay bu, benim kurduğum sanal makinanın linkleri aşağıda. Virtualbox varsa direkt çalıştırabilirsiniz.

    Sanal makinamız :

    http://www.sendspace.com/file/ieg2ax

    http://www.sendspace.com/file/xddi2k

     

    Son olarak video'yu koyuyorum, ilgilenenler varsa yardımcı olması dileğiyle.

    Video :

    http://video.tahribat.com/dokuman/WindowsNtKerneliDerleme.mp4 

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    All hail to Tux
    sandman
    sandman's avatar
    Kayıt Tarihi: 01/Eylül/2005
    Erkek

    100 numara olmuş.


    Mühendis kahveyi projeye dönüştüren bir insan evladıdır.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    sandman bunu yazdı:
    -----------------------------

    100 numara olmuş.


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

    Teşekkürler hocam, amaç birilerini sistem programlamaya heveslendirmek :)

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    iLLuMiNaTi
    iLLuMiNaTi's avatar
    Kayıt Tarihi: 08/Mart/2007
    Erkek

    güzel iş

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Holyzone
    Holyzone's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 13/Ekim/2008
    Erkek

    Eline, ağzına, emeğine sağlık güzel olmuş hocam :=)

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    Sağolun arkadaşlar, Windows bu kerneli dağıtmadan önce de windows 2000'in büyük bölümü leak olmuştu, bir de react os vardı reverseciler sıfırdan yazıyordu, MS birnevi mecbur kaldı diyelim :)

    Admin arkadaşlardan birisi döküman arşivine ekleyebilir mi ?

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    1-618-GR
    1-618-GR's avatar
    Kayıt Tarihi: 29/Haziran/2011
    Erkek

    Güzel iş hocam.

    Bir yerden başlamak lazım tabiî.


    Bir domino taşıyım yıktığına sevinme....
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Twitter
    Twitter's avatar
    Kayıt Tarihi: 13/Ekim/2007
    Erkek

    Abi sen sürekli konu aç sabahtan akşama kadar sıkılmadan okuyalım ya 

    senin gibileri daha çok görmek istiyoruz buralarda 

    emeğine sağlık teşekkür ettik


    Tbt Dersimliler Derneği Başkanı :)
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hunter
    j4x
    j4x's avatar
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    Süper :) döküman arşivine eklenmeli


    The king is bleeding.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek

    Teşekkürler, direkt sonucu izlemek isteyenler  26:35 ten itibaren izleyebilirler :)

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Homer
    Homer's avatar
    Kayıt Tarihi: 08/Temmuz/2007
    Erkek

    eline salık

Toplam Hit: 12867 Toplam Mesaj: 58