RAM içerisindeki verileri okuma

biadsiz

Kilopat
Katılım
3 Ağustos 2016
Mesajlar
458
Çözümler
4
Daha fazla  
Cinsiyet
Erkek
Merhabalar. Gece gece merak edip böyle bir program yazabilir miyim diye işe koyuldum. C'de sonsuz for döngüsüne pointer sokup her döngüde pointerın içersindeki adresin üzerine ekleyip, yazdırdım. (sistemin kullandığı RAM adreslerini okuyamayacağımı biliyorum.) Bir şeyler geldi ama tatmin etmedi açıkçası beni. Bende acaba RAM'in içerisindeki verileri okuyan bir yazılım var mı diye sorayım dedim.
 
Detayını bilmemekle beraber bu işlemin yapılabildiğini biliyorum. Bir tanıdığım, sisteminden sorumlu olduğu kurumun hacklenmesinden sonra böyle bir yola başvurmuştu.
 
Korumalı modda çalışan işletim sistemlerinde başka bir programın bellek bölgesine erişmeye çalıştığın zaman program sonlandırılır. Yani programa ayrılan veya sistemin ona erişim izni verdiği belleğin dışına çıkamazsın.
 
Windows için konuşmak gerekirse; evet okuyabilirsin, ancak bunu gidip basit bir konsol uygulamasından yapamazsın. Bunu yapabilmek için kernel seviyesinde erişime ya da sistem açıklarına ihtiyacın var. Kullanıcı alanından sadece Virtual Memory'e erişebilirsin.

- Öncelikle ilk olarak bahsettiğim gibi kernel seviyesinde erişime ihtiyacın var, MmGetPhysicalMemoryRanges gibi sistem API'ları üzerinden RAM üzerideki SDB'leri listeleyip üzerinde işlem yapabilirsin.
- Diğer bir yol ise bahsettiğim sistem açıklarından birisi olarak, Spectre/Meltdown gibi zaafiyetler üzerinden cache verilerine erişebilirsin.
- Sistem açığığına başka alternatif bir yol olarak da, 1909 altı sürümlerde DKOM olarak geçen kullanıcı alanından kernel alanına(Device\PhysicalMemory) doğrudan erişim sağlayıp işlem yapabilirsin.
 
Belli ki bu iş derya. Bahsettiğiniz konuların işletim sistemleri teorisinde bulunduğunu umarak o tarafa bir göz gezdireceğim. Hiç yoksa merak dindiririz. Vermiş olduğunuz bilgilerden dolayı teşekkür ediyorum.
 

Yeni konular

Geri
Yukarı