Çözüldü C diliyle RAM'den veri çekmek

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Rebellion_47

Picopat
Katılım
30 Ağustos 2020
Mesajlar
833
Çözümler
7
C dilini kullanarak RAM'deki verileri nasıl okuyabilirim?

C:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
char dizi [2];
int i;

for(i=0; i<=9000; i++){
printf("%c", dizi);
}

system("PAUSE");

return 0;
}

İnternet'te böyle bir kod buldum ama çalıştıramadım. Sebebi "printf" kısmında hata alıyorum. Bu kodun çalıştığını yazmışlar ama çalışmadı.

İstediğim şey o anda RAM'de bulunan verilerin bir kısmını ekrana bastırmak.
 
Son düzenleyen: Moderatör:
Çözüm
printf("%c", dizi); yazan yeri printf("%c", dizi[i]); yapmanız gerekiyor sanırım. O şekilde diziyi aşıp verileri okuyabilirsiniz ama çeşitli izinlere takıldığınız durumlar olabilir.
Neden kötü fikir? Neden vazgeçmeliyim? İnsanlara karşı kötü niyetli kullanmayacağım merak etme.

İnsanlara karşı kötü niyetlisinden ziyade denediğin makine yaparsın bir şeyler. Şu an kernel'ından tut chrome sekmene kadar process'ler ramlerde tutuluyor. Diyelim silebildin, ki sanmıyorum memory protection , ya kernel'ın olduğu bir lokasyonu silmeye, değiştirmeye kalktıysan ne olacak?

printf izin vermez o şekilde yapmana.
 
İnsanlara karşı kötü niyetlisinden ziyade denediğin makine yaparsın bir şeyler. Şu an kernel'ından tut chrome sekmene kadar process'ler ramlerde tutuluyor. Diyelim silebildin, ki sanmıyorum memory protection , ya kernel'ın olduğu bir lokasyonu silmeye, değiştirmeye kalktıysan ne olacak?

printf izin vermez o şekilde yapmana.
RAM'in ne olduğunu biliyorum, içindekileride. Ben sadece merak ediyorum.
Burayı açıp orada çalıştırmayı dener misin?
Dediğim gibi yetki muhabbeti dönüyor olabilir. Çeşitli çıktılar var ama ASCII kullanıldığı için hepsi düzgün çıkmıyor.
ASCII kısmı sorun değil. Ben onları düzgün verilere dönüştürebilirim bir yolunu bulup. Az önce dediğiniz gibi yaptım ve program çalıştı. Uzunca bir çıktının ardından "çekirdek döküldü" hatasıyla işlem duruyor.

Kendi bilgisayarımda denedim.

Birde anlamadığım bir konu var. Bu kodların içinde bilgisayara, RAM içindeki verileri geri döndürmesini söyleyen nedir? Ben öyle bir şey göremiyorum.
 
Son düzenleme:
printf yaptığında parametrenin referansını kontrol ediyor. MMU, sanal adresi fiziksel adres ile kıyaslıyor. Memory table'larına bakıyor; boş olduğunu görüyor. Process table'larında maplenmediğini görünce şak diye illegal memory hatası fırlatıyor. Process öldürülüyor.


(9) Why can't I access random memory locations in C? - Quora
 
Döküman paylaşırdım fakat Kural 58.
Kural 58 yeterince Türkçe açıklama yapılıp "Kaynağım da bu. Daha fazla bilgi için bakabilirsin." demeye karşı değil. Herhangi bir soruna direkt yabancı dilli kaynak paylaşılmasına karşı.
 

Yeni konular

Geri
Yukarı