Bölüm
Erişim İhlali C0000005 - Yürütme
Uygulama geçersiz bir bellek adresinden kod yürütmeye çalıştığında Yürütme Erişimi İhlali oluşur. Geçerli olması için bellek sayfasının geçerli bir durumu, koruması ve türü olmalıdır.
Bellek MEM_COMMIT durumunda olmalıdır.
Bellek herhangi bir türde olabilir; MEM_IMAGE, MEM_MAPPED veya MEM_PRIVATE. Büyük çoğunluğu MEM_IMAGE. MEM_PRIVATE, Tam Zamanında (JIT) kod için kullanılır; ana örnek JavaScript'tir.
Belleğin korunması PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE veya PAGE_EXECUTE_WRITECOPY olmalıdır. Büyük çoğunluğu PAGE_EXECUTE_READ. PAGE_EXECUTE_READWRITE ve PAGE_EXECUTE_WRITECOPY nadirdir ve kod değiştirilebildiği (eklenen) için tehlikeli olarak kabul edilebilir.
Adresin durumunu, korumasını ve türünü görüntülemek için !address <address kullanın >
- Geçerli değerlere başvurarak emin olun; ayırma değerleri değil
- Her bellek sayfası bölgesi (en az 4K), virtualProtect işlev ailesi tarafından ayarlandığı gibi hem ayırma sırasındaki ilk koruma değerini hem de geçerli koruma değerini izler.
İhlal, işlemci tarafından Veri Yürütme Koruması aracılığıyla algılanır.
Bu yaygın senaryolardan biri nedeniyle bellek adresi geçersiz olabilir:
- Yığın Bozulması - Çağrının dönüş adresi yığına gönderilir. Yerel değişkenler bu konumun yanındadır. Yerel bir arabellek taşması varsa, dönüş adresi bozuktur.
- DLL Başvuru Sayımı - adres geçerliydi , ancak DLL kaldırıldıktan sonra şu anda erişiliyor
- Bit-Flip - Bir veya daha fazla bitin çevrildiği (nadir) RAM (donanım) sorunu
Ek Kaynaklar:
Uygulama geçersiz bir bellek adresinden kod yürütmeye çalıştığında Yürütme Erişimi İhlali oluşur. Geçerli olması için bellek sayfasının geçerli bir durumu, koruması ve türü olmalıdır.
Bellek MEM_COMMIT durumunda olmalıdır.
Bellek herhangi bir türde olabilir; MEM_IMAGE, MEM_MAPPED veya MEM_PRIVATE. Büyük çoğunluğu MEM_IMAGE. MEM_PRIVATE, Tam Zamanında (JIT) kod için kullanılır; ana örnek JavaScript'tir.
Belleğin korunması PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE veya PAGE_EXECUTE_WRITECOPY olmalıdır. Büyük çoğunluğu PAGE_EXECUTE_READ. PAGE_EXECUTE_READWRITE ve PAGE_EXECUTE_WRITECOPY nadirdir ve kod değiştirilebildiği (eklenen) için tehlikeli olarak kabul edilebilir.
Adresin durumunu, korumasını ve türünü görüntülemek için !address <address kullanın >
- Geçerli değerlere başvurarak emin olun; ayırma değerleri değil
- Her bellek sayfası bölgesi (en az 4K), virtualProtect işlev ailesi tarafından ayarlandığı gibi hem ayırma sırasındaki ilk koruma değerini hem de geçerli koruma değerini izler.
İhlal, işlemci tarafından Veri Yürütme Koruması aracılığıyla algılanır.
Bu yaygın senaryolardan biri nedeniyle bellek adresi geçersiz olabilir:
- Yığın Bozulması - Çağrının dönüş adresi yığına gönderilir. Yerel değişkenler bu konumun yanındadır. Yerel bir arabellek taşması varsa, dönüş adresi bozuktur.
- DLL Başvuru Sayımı - adres geçerliydi , ancak DLL kaldırıldıktan sonra şu anda erişiliyor
- Bit-Flip - Bir veya daha fazla bitin çevrildiği (nadir) RAM (donanım) sorunu
Ek Kaynaklar: