Şimdi Ara

bellekten veri okumak

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
12
Cevap
0
Favori
930
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • elimde şöyle bir kod var:

    ---------------------------------------------------
    #include<stdio.h>
    #include<conio.h>

    int main()
    {
    long int sayac;
    int *p;

    int a;

    p = (int *)(&a-&a);
    //p=p-p;

    printf("%p\n",&a);
    printf("%p\n",p);

    printf("\n\n");

    for(sayac=1;sayac<20;sayac++)
    {
    printf("%d\n",*(p+sayac));
    }

    _getch();
    }

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

    amacım ramdan 0x00000000 adresinden başlayarak veri okumak. normal da bir "a" değişkeni oluşturup o "a" değişkeninin altından üstünden yüzlerce hatta binler bellek lokasyonunda o anda ne var okuyabiliyorum. ama istediğim bellek lokasyonundan okumak isteyince hata veriyor. Acaba işletim sistemimi izin vermiyor?

    ben heralde "stack" veya heap bölgesinde ki bellek lokasyonlarını okuyabiliyorum. o anda çalışan programların kodlarına erişmeye çalışınca windows izin vermiyor. doğru muyum ? :)







  • kardeş yanlış yoldasın
  • neden ki teğmenim?

    ne yanlışlık yaptımda böyle eğleniyorsunuz?
  • C derleycisinde peekb diye bişey var okumak için ama onuda visual studio C++ da çalıştıramadım hata verdi tanımlı değil galiba.

    readprocessmemory diye bir örnek var internette ama benim aradığım o değil.

    hazı api kullanmak istemiyorum. ben işin dibini görmek istiyorum.
  • bence bir belleğin çalışma şeklini öğren ondan sonra yapman daha iyi olacaktır.
  • quote:

    Orijinalden alıntı: Video Tapes

    kardeş yanlış yoldasın
    ./z,xfgmew0p58dzs;f./a.efb nqwe pio5 poearigt sd/fg./ ,as/rygk meiyj5 a.gm/wreghear



    < Bu mesaj bu kişi tarafından değiştirildi rob dö şambır -- 30 Nisan 2013; 13:56:34 >
  • quote:

    Orijinalden alıntı: rob dö şambır

    quote:

    Orijinalden alıntı: bytecode3

    kardeş yanlış yoldasın

    doğru yol ney ki?
    adam söylemiş işte yolunu, onu bile anlamıyorsanız haliniz harap valla kardiş

    savan.avi ...



    < Bu mesaj bu kişi tarafından değiştirildi Video Tapes -- 30 Eylül 2012; 12:48:03 >
  • galiba yanlış forumda araştırıyorum :)
    cevap bu.

    biri bilgisayardan anlamadığımı yazmış
    biri ramlerin yapısını öğren demiş.

    bilgisayarla alakalı bir bölümden mezunum meraklanma sadece biraz sistem programlamaya uzağım artık

    bu işi yapabilmek için çok detaylı ram bilgisi bilmeye gerek yok.
  • quote:

    Orijinalden alıntı: selsoft

    galiba yanlış forumda araştırıyorum :)
    cevap bu.

    biri bilgisayardan anlamadığımı yazmış
    biri ramlerin yapısını öğren demiş.

    bilgisayarla alakalı bir bölümden mezunum meraklanma sadece biraz sistem programlamaya uzağım artık

    bu işi yapabilmek için çok detaylı ram bilgisi bilmeye gerek yok.

    Bu çok temel bir konu, onun için öyle demişler heralde.

    Çok görevli işletim sistemleri başkasının kullandığı bellek bölgesine erişmene izin vermez (korumalı mod). Öyle olsaydı senin yaptığın bir hatadan dolayı başka bir program çökerdi veya başka programdaki en kritik bilgileri rahatlıkla okuyabilirdin.

    Senin okuduğun yer programına tahsis edilen yığın bölgesi ve işe yaramaz çöp değerler. İstediğin şey ancak tek görevli sistemlerde işe yarar, dos gibi.




  • tahmin ettim heap ya da stack tan okuduğumu.

    acaba nasıl okuyabilirim bilgin var mı?

    assembly ya da C ile nasil yapabilirim mümkün mü?
  • Bildiğim kadarıyla bunun bir yolu yok. Bellek koruması hem işletim sis. hem de cpu tarafından sağlanıyor. Programındaki bellek adresleri fiziksel değil sanal.
    Bellekte serbestçe dolaşmak sadece gerçek modda yapılabilir ama onda da en fazla kullanılabilen bellek 1mb (olması lazım).

    Assembly falan hikaye. Mümkün ise sadece işletim sis. alt düzey api fonksiyonlarıyla mümkün olabilir. ReadProcessMemory ve WriteProcessMemory diye bişeyler gördüm ama bunlar karşılıklı çalışan alt process ler için geçerli sanırım. Yine de kerneli hack lersen belki olur.

    Kısaca kural şu. Programının erişebileceği bellek sadece kendisine tahsis edilen bellektir.
  • teşekkür ederim.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.