Meme

NTSYSEMDEBUGCONTROL kullanılarak bir bellek dökümü gerçekleştirir.
Şimdi İndirin

Meme Sıralama ve Özet

Reklamcılık

  • Rating:
  • Lisans:
  • Freeware
  • Yayıncı adı:
  • Arne Vidstrom
  • İşletim sistemleri:
  • Windows All
  • Dosya boyutu:
  • 7 KB

Meme Etiketler


Meme Açıklama

MEMIMAGER uygulaması NTSYSEMDEBUGCONTROL kullanarak bir bellek dökümü yapan bir araç olarak tasarlanmıştır. Boşaltma için NTSYSEMDEBUGCONTROL kullanma Kontrol Kodu 10 için aşağıdaki giriş tamponu olarak aşağıdaki düzende bir yapı kullanıyoruz: - dword fielyaddress; - DWORD Reserved1; - Boşluk * Tampon; - DWORD uzunluğu; Sonra biz örneğin Malloc, tamponu işaret ettiğimiz, 4096 uzunluğunu yazdığımız sayfa boyutlu bir tampon ve içeriğini kopyalamak istediğimiz sayfanın adresine işaret edebiliyoruz. Sonra NTSYSEMDEBUGCONTROL'u çalıştırırız ve her şey yolunda giderse tamponumuz şimdi fiziksel sayfadaki verilerin bir kopyasını içeriyor. Aslında oldukça önemsiz. İçinde NTSYSEMDEBUGCONTROL Anlamak için, ve eğer öyleyse, NTSYSTEMDEBUGCONTROL, çekirdekli sorunları nasıl ele alırsa, çekirdeğe dalmak zorundayız. Çekirdek, kontrol koduna göre doğru işlevselliğe gönderilmekte olan bir anahtar bildirimi içeren NTSYSEMDEBUGCONTROL adlı rutin ihraç eder. Aşağıdaki durumlarda, kodun her küçük detayını tarif etmeyeceğim. İlk neden, baktıklarımızla ilgili olmayan birçok bilgi var. İkincisi, kodu ayırt etmedim, ancak yalnızca demontajın ilgili bölümlerini takip ettim (Windows Server 2003 SP0 çekirdekten). Kod işleme kontrol kodu 10, sayfaları tamponumuzdaki (* arabelleğimize) ikamet eden belgelenmemiş rutin _exlockuserbuffer'i çağırır, bunları bellekte kilitler ve (bir işaretçide bir işaretçi olarak parametre olarak geçen) döndürür. Sonra _KDPcopyMememoryChunks adlı başka bir belgesiz işlev çağrılır. Buna geçen parametreler diğerlerinin yanı sıra, tamponumuza işaret eden sistem alanı sanal adresi, kopyalanacak bayt sayısı (uzunluğu) ve (fielyaddress) kopyalanacak adres. Şimdi yine başka bir belgesiz işlev denir: _mmdbgcopymemory. Bu işlev, verilerin gerçek kopyalamasını gerçekleştirir. Ancak herhangi bir kopyalama yapmadan önce, fiziksel bir adres yerine kaynağın sanal bir adresine sahip olması gerekir. Bu nedenle son belgelenmemiş işlevimizi arar: _midbgtranslatefsicalAddress. Şimdi bizim sorumun cevabını gerçekten kapatıyoruz. _MidbgTranslatEphySicalAddress fiziksel adresimizi parametre olarak alır. Daha sonra çekirdek pte: s için bir tür şablon olarak hizmet veren _validkernelpte adlı bir değişkeni kullanır. Şablondan gelen bayraklar, kopyalamak istediğimiz sayfaya işaret eden bir PTE'yi oluşturmak için fiziksel adresle birleştirilir. Ardından, kaynak sayfamıza karşılık gelen girişi bulmak için PFN veritabanı dizine eklenir. Bu girişte çekirdek, U3.E1 üyesinin CacheatTribute bayraklarına bakar. Cacheattribute bayrakları daha sonra PT endeksini PTE'de ayarlamak için kullanılır. Şimdi gerçekten cevabımız var, ama yine de minik biraz daha devam edeceğim. Çekirdek inşa ettiği PTE, şimdi çekirdek değişkeni _mmdebugpte tarafından belirtilen yere kopyalandı. Son olarak, işlev, haritalama için PTE'yi kullanacak sanal adresi döndürür. Şimdi _mmdbgcopymemory, verileri fiziksel kaynak sayfasından yalnızca sanal adresleri kullanarak tamponumuza kopyalamak için ücretsizdir.


Meme İlgili Yazılım

Guidgen

Bir veya daha fazla GUID oluşturmak için bir geliştirici aracı ...

182 35 KB

İndirmek