RAM nedir işlevleri ve temel kavramlar #1

Novn

Üye
12 Haz 2022
79
30

RAM (RANDOM ACCESS MEMORY) işleyişi ve temel kavramlar​

Öncelikle donanımın detaylarına fazla girmek istemiyorum temel olarak bu seri hakkında ihtiyacımızın olduğu kadar giriş yapacağım.
RAM temel olarak donanımında bulunan odacıklarda 0 ve ya 1 verilerinin tutulduğu geçici hafıza parçasıdır. RAM üzerine bir program yüklendiği zaman programa ait veriler RAM deki boş odacıklara yüklenir ve program işlemeye devam edebilir hale gelir bunu c++ dili üzerinden örnekleyecek olursak.​
C++:
#include <iostream> //Temel c++ kütüphanesi

//Programın temel fonksiyonu
int main() {
    int a = 154; //a değişkenimize 154 sayısını atadık
  
    std::cout << "Degerimiz : " << a << std::endl; // Bu bölümde değerimizi konsola yazdırdık.
    std::cout << "Degerimizin Adresi : " << &a << std::endl; // Bu kısımda ise değerimizin RAM üzerinde bulunduğu adresi yazdırdı.

    return 0; // Programımızın Bittiğini söyledik ve programı bitirdik
}
Ve sonuç olarak komut penceremizde şunları görüyoruz.
hYDbfvGkP7wi.png

Gördüğünüz gibi 154 değerini içeren a değişkenimize adres atadı adres göründüğü gibi hex tipinde yazdırıldı.

Ufak bir resimle bu işlemi de örneklemek istiyorum.
eGDkU2F3AMUF.png

Bu resimde de RAM üzerinde adreslerin içerisindeki a değerimizin nasıl tutulduğuna dair bir örnek çizdim.

Evet adres mantığı en temel anlamıyla bu şekilde işliyor, gelelim ki aslında bu adresler sabit değil bu programı tekrar açtığım zaman farklı bir adres ile karşılaşacağım çünkü RAM adı üzerine Random Access Memory yani Rastgele Erişimli Bellek anlamında, tahmin edebileceğiniz gibi her program için rastgele adresler üzerinde yer ayırıyor ve verileri bu ayırdığı adreslere yazdırıyor,
eğer (dinamik)değişken bir adres yerine statik(sabit) bir adrese sahip olmak istiyorsak bu noktada da Offsetsler, Pointer ve Base Address (Temel adres) kavramları devreye giriyor bu kavramları da açıklamak istiyorum.

Offsets'leri bir hex tipinde veri tutan array yani bir dizi şeklinde düşünebiliriz offsets değerleri, bu programın yazılımına göre değişiklik gösterirler bu değerleri Base addresimize ekleyerek dinamik yani değişken adresimize ulaşırız, örnek olarak aşağıda offsets değerlerini görebilirsiniz.
qLMjMC7yJnAW.png


Gelelim pointer ve base address değerlerimize bu iki değerde resimden önce anlattığım gibi dinamik değerden statik değere taşıma için gerekli olacak bunları şu anlık anlamakta zorluk yaşayabilirsiniz önemli değil cheat engine üzerinde de tekrar göreceğiz ve bu konu serinin ilerleyen bölümlerinde daha anlaşılır hale gelecektir.

Pointer dediğimiz değer bizim base address değerimize eklenen offsets dizi elemanlarının sonucunda elde ettiğimiz statik sabit adrestir yani bizim amacımız değerini değiştireceğimiz adresin pointer adresini elde etmek, bunun için de son olarak base addrese ihtiyacımız var.
Base address değeri ise sistemin kaç bitlik bir sistem olduğuna bağlı olarak değişiklik göstermekte örneğin 32 bit bir sistemde bu değer (400000h+00065B00) olurken
64 bit bir sistemde (1400000h+00065B00) olmakta bu değeri Cheat Engine kullanımı bölümünde kolayca elde edebildiğimizi göreceksiniz.

Evet temel RAM işlevlerini, RAM manipülasyonu hakkında öğrenmemiz gereken çeşitli kavramları öğrendik bir sonraki konu içinde Cheat Engine programına temel bir bakış atacağız, basit mantıkta nasıl işlediğini göreceğiz.
Elimden geldiğince detaylı ve düzgün anlattım umarım anlaşılmayan bir nokta kalmamıştır eğer var ise lütfen belirtin yardımcı olacağım, iyi günler dilerim.
Serinin devamına konu ilerleyişi kısmından ulaşabilirsiniz.
~ İçerik Bölümü ~
~ Bir Sonraki Bölüm ~
 
Son düzenleme:

aslan aslan

Basın&Medya Ekibi Asistanı
1 Şub 2023
637
239

RAM (RANDOM ACCESS MEMORY) işleyişi ve temel kavramlar​

Öncelikle donanımın detaylarına fazla girmek istemiyorum temel olarak bu seri hakkında ihtiyacımızın olduğu kadar giriş yapacağım.
RAM temel olarak donanımında bulunan odacıklarda 0 ve ya 1 verilerinin tutulduğu geçici hafıza parçasıdır. RAM üzerine bir program yüklendiği zaman programa ait veriler RAM deki boş odacıklara yüklenir ve program işlemeye devam edebilir hale gelir bunu c++ dili üzerinden örnekleyecek olursak.​
C++:
#include <iostream> //Temel c++ kütüphanesi

//Programın temel fonksiyonu
int main() {
    int a = 154; //a değişkenimize 154 sayısını atadık
 
    std::cout << "Degerimiz : " << a << std::endl; // Bu bölümde değerimizi konsola yazdırdık.
    std::cout << "Degerimizin Adresi : " << &a << std::endl; // Bu kısımda ise değerimizin RAM üzerinde bulunduğu adresi yazdırdı.

    return 0; // Programımızın Bittiğini söyledik ve programı bitirdik
}
Ve sonuç olarak komut penceremizde şunları görüyoruz.
hYDbfvGkP7wi.png

Gördüğünüz gibi 154 değerini içeren a değişkenimize adres atadı adres göründüğü gibi hex tipinde yazdırıldı.

Ufak bir resimle bu işlemi de örneklemek istiyorum.
eGDkU2F3AMUF.png

Bu resimde de RAM üzerinde adreslerin içerisindeki a değerimizin nasıl tutulduğuna dair bir örnek çizdim.

Evet adres mantığı en temel anlamıyla bu şekilde işliyor, gelelim ki aslında bu adresler sabit değil bu programı tekrar açtığım zaman farklı bir adres ile karşılaşacağım çünkü RAM adı üzerine Random Access Memory yani Rastgele Erişimli Bellek anlamında, tahmin edebileceğiniz gibi her program için rastgele adresler üzerinde yer ayırıyor ve verileri bu ayırdığı adreslere yazdırıyor,
eğer (dinamik)değişken bir adres yerine statik(sabit) bir adrese sahip olmak istiyorsak bu noktada da Offsetsler, Pointer ve Base Address (Temel adres) kavramları devreye giriyor bu kavramları da açıklamak istiyorum.

Offsets'leri bir hex tipinde veri tutan array yani bir dizi şeklinde düşünebiliriz offsets değerleri, bu programın yazılımına göre değişiklik gösterirler bu değerleri Base addresimize ekleyerek dinamik yani değişken adresimize ulaşırız, örnek olarak aşağıda offsets değerlerini görebilirsiniz.
qLMjMC7yJnAW.png


Gelelim pointer ve base address değerlerimize bu iki değerde resimden önce anlattığım gibi dinamik değerden statik değere taşıma için gerekli olacak bunları şu anlık anlamakta zorluk yaşayabilirsiniz önemli değil cheat engine üzerinde de tekrar göreceğiz ve bu konu serinin ilerleyen bölümlerinde daha anlaşılır hale gelecektir.

Pointer dediğimiz değer bizim base address değerimize eklenen offsets dizi elemanlarının sonucunda elde ettiğimiz statik sabit adrestir yani bizim amacımız değerini değiştireceğimiz adresin pointer adresini elde etmek, bunun için de son olarak base addrese ihtiyacımız var.
Base address değeri ise sistemin kaç bitlik bir sistem olduğuna bağlı olarak değişiklik göstermekte örneğin 32 bit bir sistemde bu değer (400000h+00065B00) olurken
64 bit bir sistemde (1400000h+00065B00) olmakta bu değeri Cheat Engine kullanımı bölümünde kolayca elde edebildiğimizi göreceksiniz.

Evet temel RAM işlevlerini, RAM manipülasyonu hakkında öğrenmemiz gereken çeşitli kavramları öğrendik bir sonraki konu içinde Cheat Engine programına temel bir bakış atacağız, basit mantıkta nasıl işlediğini göreceğiz.
Elimden geldiğince detaylı ve düzgün anlattım umarım anlaşılmayan bir nokta kalmamıştır eğer var ise lütfen belirtin yardımcı olacağım, iyi günler dilerim.
Serinin devamına konu ilerleyişi kısmından ulaşabilirsiniz.
~ İçerik Bölümü ~
~ Bir Sonraki Bölüm ~
Güzel anlatım.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.