Arama butonu
Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
11
Cevap
1108
Tıklama
0
Öne Çıkarma
bellekten veri okumak
S
14 yıl (42 mesaj)
Çavuş
Konu Sahibi

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 ? :)

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



V
14 yıl (3187 mesaj)
Yüzbaşı

S
14 yıl (42 mesaj)
Çavuş
Konu Sahibi

neden ki teğmenim?

ne yanlışlık yaptımda böyle eğleniyorsunuz?


Bu mesaja 1 cevap geldi.
S
14 yıl (42 mesaj)
Çavuş
Konu Sahibi

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.


Bu mesaja 1 cevap geldi.
T
14 yıl (1005 mesaj)
Yüzbaşı

bence bir belleğin çalışma şeklini öğren ondan sonra yapman daha iyi olacaktır.



R
14 yıl (596 mesaj)
Yüzbaşı

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 >
Bu mesaja 1 cevap geldi.
V
14 yıl (3187 mesaj)
Yüzbaşı

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 >
Bu mesaja 1 cevap geldi.
S
14 yıl (42 mesaj)
Çavuş
Konu Sahibi

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 mesaja 1 cevap geldi.
G
14 yıl (8718 mesaj)
Yarbay

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.


Bu mesaja 1 cevap geldi.
S
14 yıl (42 mesaj)
Çavuş
Konu Sahibi

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ü?


Bu mesaja 1 cevap geldi.
G
14 yıl (8718 mesaj)
Yarbay

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.


Bu mesaja 1 cevap geldi.
S
14 yıl (42 mesaj)
Çavuş
Konu Sahibi

teşekkür ederim.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.