Memahami Cara Kerja Memori Komputer Sebagai Dasar Memahami Teknik Eksploitasi 1/2
September 13th, 2008 | by admin |Table of contents for Cara Kerja Memori
- Memahami Cara Kerja Memori Komputer Sebagai Dasar Memahami Teknik Eksploitasi 1/2
- Memahami Cara Kerja Memori Komputer Sebagai Dasar Memahami Teknik Eksploitasi 2/2
Akhir-akhir ini banyak sekali beredar tools yang dapat digunakan untuk eksploitasi, salah satunya sebut saja Metasploit. Tetapi menggunakan tools tanpa mengerti apa sebenarnya yang dilakukan tools itu, bagi seorang hacker sejati bukanlah suatu hal yang baik. Lantas apakah hubungan antara memori komputer dengan teknik eksploitasi? Pada dasarnya, eksploitasi itu dilakukan terhadap program-program yang terinstal di komputer. Program-program ini bila dieksekusi tidak dengan sebagai mana mestinya, dapat mengakibatkan hal yang fatal untuk seluruh sistem, seperti memberikan izin masuk sebagai Root kepada hacker. Lantas bagaimana cara mengenali dan mengeksploitasi program-program tersebut? Nah, di situ lah letak hubungan antara memori komputer dengan eksploitasi. Program-program ini menggunakan memori dalam pengeksekusiannya. Seorang hacker yang baik, harus dapat mengenali bagian dari memori yang digunakan oleh program, dan dengan begitu akan dapat segera mengetahui kejanggalan apa yang dilakukan oleh program sehingga dapat membuat eksploit yang tepat untuk program tersebut.
Awalnya terkesan sangat sulit untuk memahami cara kerja memori komputer. Tapi, ingat saja, komputer itu hanyalah sebuah kalkulator raksasa yang memiliki memori sebagai tempat sementara untuk menyimpan hasil perhitungan. Tempat-tempat ini diberikan indeks nomor (alamat) untukmemudahkan penggunaannya. Bayangkan saja, prosesor Intel x86 yang banyak digunakan saat ini menggunakan 32-bit skema alamat. Itu berarti ada 2^32 (4,294,967,296) kemungkinan tempat yang dapat digunakan sebagai tempat penyimpanan hasil perhitungan tersebut.
Pointer
Pointer merupakan satu tipe variabel yang khusus, digunakan untuk menyimpan alamat lain dalam memori untuk mereferensi informasi lain. Karena memori tidak dapat dipindahkan, informasi ini harus dikopi. Akan tetapi akan sangat sulit secara perhitungan untuk mengkopi satu informasi di dalam memori untuk digunakan di fungsi atau tempat lain. Begitu juga dilihat dari sudut pandang memori. Karena untuk mengkopi suatu data, maka memori akan membuat satu blok khusus untuk data tersebut, yang tidak dapat digunakan untuk menyimpan data lain.
Pointer adalah salah satu solusinya. Memori hanya perlu membuat satu variabel pointer yang diasosiasikan dengan satu blok besar yang menyimpan informasi tersebut, lalu pointer tersebut dapat dikopi ke semua fungsi atau tempat yang ingin mengakses blok informasi ini.
Register
Prosesor memiliki satu jenis memori khusus yang relatif kecil. Memori ini disebut Register, dan ada beberapa register khusus yang digunakan untuk menjejaki hal-hal ketika program dieksekusi. Salah satu yang patut disebut adalah EIP, Extended Instruction Pointer. EIP merupakan pointer yang menyimpan alamat dari instruksi yang sedang dieksekusi. Register lain yang digunakan sebagai pointer adalah EBP (Extended Base Pointer) dan ESP (Extended Stack Pointer). EBP merupakan pointer yang menyimpan alamat terakhir (teratas) dari satu segmen memori yang disebut stack, sedangkan ESP merupakan pointer yang menyimpan alamat stack frame berikut yang akan dieksekusi. Kita akan membahas kedua pointer ini lebih jauh lagi pada bagian Segmentasi Memori sebentar lagi.
Deklarasi Memori
Pada bahasa pemrograman tingkat tinggi seperti Bahasa C, variabel dideklarasikan berdasarkan tipenya (seperti: integer, character, float, dll) masing-masing. Hal ini dilakukan untuk memberitahukan memori berapa besar ruang yang harus disiapkan untuk menyimpan variabel tersebut. Misalnya, integer merupakan 4 byte data, yang berarti harus ada 32 (4 byte x 8 bit/byte) bit ruang kosong di memori yang harus dialokasikan untuk variabel ini. Contoh lainnya adalah tipe character, yang memerlukan 8 (1 byte x 8 bit/byte) bit ruang.
Sebagai tambahan, variabel juga dapat dideklarasikan dalam bentuk array (senarai). Array merupakan list (senarai) dari N buah elemen spesifik data. Jadi, sebuah 10 character array hanya merupakan 10 variabel character yang disusun berurutan dalam memori. Array juga disebut sebagai buffer, dan character array juga disebut string. Mengkopi buffer yang berukuran besar memerlukan waktu dan perhitungan yang lama. Karena itu, pointer sering digunakan untuk menyimpan alamat memori yang menjadi awal buffer. Berikut adalah contoh pendeklarasian variabel dalam bahasa pemrograman C:
int variabel_integer; char variabel_character; char character_array[10]; char *buffer_pointer;
Little Endian
Salah satu yang perlu diingat dalam memori di prosesor x86 adalah urutan penyimpanan 4 byte data (seperti integer dan pointer) di dalam memori. Urutan ini disebut Little Endian, yang berarti data byte yang paling kecil disimpan terlebih dahulu.
Misal, sebuah 4 byte data (digambarkan dengan data hexadecimal atau 16 bit), 0×12345678. Data “12″, “34″, “56″, dan “78″ masing-masing merupakan 1 byte data (pada penulisan 16 bit data, 1 digit angka digambarkan dengan 4 bit). Pada saat disimpan dalam bentuk Little Endian akan berbentuk seperti berikut: 0×78563412.
2 Responses to “Memahami Cara Kerja Memori Komputer Sebagai Dasar Memahami Teknik Eksploitasi 1/2”
By JEKSON on Nov 17, 2008 | Reply
thanx ya da di copy !!!
GBU
By noVAL on Nov 30, 2008 | Reply
hai,.,.,.,
aKU,,, jujuR belajar dari dasar pemograman,.,
kira2 ada nggak buku yang mengajarkan dari awal dasar logika algoritma untuk pemograman,.,
ku tunggu d email y,,,,,,,,,,,,