Devilzc0de Forum Follow @devilzc0de
  • Home
  • Hacking
  • Networking
  • Programming
  • O.S
  • Server
  • Tweets
  • Search
  • Member List
  • Calendar
Current time: 06-20-2013, 02:48 PM Hello There, Guest! (Login — Register)
Devilzc0de Forum › Information Technology › Programming › Assembly v
1 2 3 Next »

Last In First Out

Home General Computer Multimedia Business Lounge

Post Reply 
Tweet
Threaded Mode | Linear Mode
Last In First Out
05-31-2011, 05:50 AM
Post: #1
mywisdom Offline
Administrator
*******
Administrators
Posts: 923
Joined: Dec 2009
Reputation: 48
Last In First Out
Segmen-Segmen Program di Dalam Memori :
* Data Segment (Data + BSS + Heap)
* Stack
* Code segment atau bisa juga disebut segment text
Secara lebih detail :
- Segmen .text
Bagian kode-kode eksekusi program utama yang akan diload ke memori, di mana section ini merupakan read only
-Segmen .data
Bagian ini merupakan bagian untuk pendeklarasian variabel dengan ukuran yang sudah fix.
-Segmen .bss
Bagian ini merupakan bagian deklarasi variabel yang tidak diisi. misal:
-------------
section .bss
nm: resw 10
-------------
- Daerah Heap
Bagian heap dimulai di akhir segment .bss
- Segmen stack
Bagian ini bekerja dengan sistem LIFO (Last in First Out), merupakan daerah yang menyimpan informasi sementara.

jika digambarkan kurang lebih seperti ini:

[Image: fmt1.jpg]

"It's ALL About LIFO (Last in First Out)"

untuk memahami cara kerja stack mari kita buat sample program dengan push (menyimpan ke stack):
"saatnya bertele tele sebentar"
-----------------------
global _start
section .text
_start:
push ebp
mov ebp,esp
push 'AAAA'
push 'BBBB'
push 'CCCC'
push 'DDDD'
push 'EEEE'
push 'FFFF'
push 'GGGG'
push 'HHHH'
push 1
pop eax
int 80h
-------------------------

lakukan kompile dengan opsi -g :
nasm -f elf stack.asm
ld -o stack stack.o

examine dengan gdb:
----------------------------------
mywisdom# gdb -q stack
(gdb) l
1 global _start
2 section .text
3 _start:
4 push ebp
5 mov ebp,esp
6 push 'AAAA'
7 push 'BBBB'
8 push 'CCCC'
9 push 'DDDD'
10 push 'EEEE'
(gdb) l
11 push 'FFFF'
12 push 'GGGG'
13 push 'HHHH'
14 push 1
15 pop eax
16 int 80h
(gdb) b 6
Breakpoint 2 at 0x8048083: file stack.asm, line 6.
(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /root/c/stack

Breakpoint 2, 0x08048083 in _start ()
(gdb) p $esp
$4 = (void *) 0xbfbfea30
(gdb) p $ebp
$5 = (void *) 0xbfbfea30
-----------------------

karena perintah:
--------------------------
mov ebp,esp
--------------------------

---------------------
(gdb) b 7
Breakpoint 1 at 0x8048088: file stack.asm, line 7.
(gdb) run
Starting program: /root/c/stack

Breakpoint 1, 0x08048088 in _start ()
(gdb) i r
eax 0x0 0
ecx 0x0 0
edx 0x0 0
ebx 0x0 0
esp 0xbfbfea2c 0xbfbfea2c
ebp 0xbfbfea30 0xbfbfea30
esi 0x0 0
edi 0x0 0
eip 0x8048088 0x8048088
eflags 0x202 514
cs 0x33 51
ss 0x3b 59
ds 0x3b 59
es 0x3b 59
fs 0x3b 59
gs 0x3b 59
(gdb)
---------------------


kita bisa lihat ada perubahan :

-----------------------------
esp 0xbfbfea2c (3217025580)
ebp 0xbfbfea30 (3217025584)
---------------------------

di sini kita bisa lihat dari top of stack telah dipush word pertama 'AAAA' :
---------------------------
(gdb) x/s 0xbfbfea2c
0xbfbfea2c: "AAAA"
(gdb)
--------------------------

push 'BBBB':
esp 0xbfbfea28 (3217025576)
ebp 0xbfbfea30 (3217025584)

(gdb) x/s 0xbfbfea28
0xbfbfea28: "BBBBAAAA"
(gdb)

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

push "CCCC":
esp 0xbfbfea24 (3217025572)
ebp 0xbfbfea30 (3217025584)

(gdb) x/s 0xbfbfea24
0xbfbfea24: "CCCCBBBBAAAA"
(gdb)

---------------
push "DDDD"

esp 0xbfbfea20 (3217025568)
ebp 0xbfbfea30 (3217025584)

(gdb) x/s 0xbfbfea20
0xbfbfea20: "DDDDCCCCBBBBAAAA"
(gdb)
---------------------

push "EEEE"

esp 0xbfbfea1c (3217025564)
ebp 0xbfbfea30 (3217025584)

(gdb) x/s 0xbfbfea1c
0xbfbfea1c: "EEEEDDDDCCCCBBBBAAAA"
(gdb)

---------------
s/d HHHH:
esp 0xbfbfea10 (3217025552)
ebp 0xbfbfea30 (3217025584)

(gdb) x/s 0xbfbfea10
0xbfbfea10: "HHHHGGGGFFFFEEEEDDDDCCCCBBBBAAAA"
(gdb)
------------------

Dari gambaran di atas kita sudah mengetahui cara kerja stack dengan operasi push, saat terjadi push nilai esp setiap kali kita melakukan push selalu bergeser ke alamat memori yang lebih kecil,
Selisih antara ebp dan esp ---- 0xbfbfea30-0xbfbfea10 = 20h = 32 desimal = jumlah karakter yang telah dipush.

selanjutnya kita akan melakukan tes pop :

misal kita edit program tadi kita tambahkan pop:
------------------------
global _start
section .text
_start:
push ebp
mov ebp,esp
push 'AAAA'
push 'BBBB'
push 'CCCC'
push 'DDDD'
push 'EEEE'
push 'FFFF'
push 'GGGG'
push 'HHHH'
pop eax
pop eax
pop eax
pop eax
pop eax
pop eax
pop eax
pop eax
push 1
pop eax
int 80h
-------------------------

dengan : pop eax berarti kita memindahkan top stack ke register eax.
[Image: fmt2.jpg]
Find all posts by this user
Quote this message in a reply
05-31-2011, 05:55 AM
Post: #2
justlearn Offline
./Devilz Advisor
Posts: 527
Joined: Aug 2010
Reputation: 31
RE: Last In First Out
Pelajaran ane tuh di kampus ane lho om dom dom di semarang

ane tepar saat liat materi ini
dead dead dead dead dead dead

tapi dikampus ane ngga ngajarin sampai spesifik seperti itu og om ngambek ngambek ngambek ngambek


makasih yah om belajar belajar belajar belajar
Visit this user's website Find all posts by this user
Quote this message in a reply
05-31-2011, 11:08 AM
Post: #3
XPByte Away
./Devilz Commander
Posts: 260
Joined: May 2011
Reputation: 0
RE: Last In First Out
ijin nyimak OM ane juga lagi belajar smangat
Find all posts by this user
Quote this message in a reply
05-31-2011, 11:13 AM
Post: #4
Wayc0de Offline
-= Sifu Makan Sonice =-
**
Moderators
Posts: 2,994
Joined: Nov 2010
Reputation: 61
RE: Last In First Out
(05-31-2011 05:55 AM)justlearn Wrote:  Pelajaran ane tuh di kampus ane lho om dom dom di semarang

ane tepar saat liat materi ini
dead dead dead dead dead dead

tapi dikampus ane ngga ngajarin sampai spesifik seperti itu og om ngambek ngambek ngambek ngambek


makasih yah om belajar belajar belajar belajar

wah sama dengan nasib ane om mewek mewek mewek

lw dikampus g smpek se-spesifik tutor ri om mywisdom asik
Visit this user's website Find all posts by this user
Quote this message in a reply
05-31-2011, 11:30 AM
Post: #5
whitecoinDC Offline
security dc :metal
**
Moderators
Posts: 732
Joined: Apr 2011
Reputation: 18
RE: Last In First Out
Ah tidak...... ngambekngambek

Awak Indak Mangaratiii... malingmaling
Visit this user's website Find all posts by this user
Quote this message in a reply
05-31-2011, 11:59 AM
Post: #6
yanzbatara Offline
./Devilz Commander
Posts: 434
Joined: Feb 2011
Reputation: 4
RE: Last In First Out
akhhhhhhh...... ngambek ngambek

aku tidak mengerti...suram
Visit this user's website Find all posts by this user
Quote this message in a reply
05-15-2012, 06:17 AM
Post: #7
DC_Julianz Offline
17yo, singgle, Programmer
**
Moderators
Posts: 2,049
Joined: Sep 2011
Reputation: 70
RE: Last In First Out
keknya belajar asembly susah ya harus banyak2 berdoa nech

belajar
Visit this user's website Find all posts by this user
Quote this message in a reply
05-15-2012, 09:05 AM
Post: #8
HammerHead Offline
./Devilz 1st Cadet
Posts: 47
Joined: May 2012
Reputation: 0
RE: Last In First Out
pusing pusing dead
Find all posts by this user
Quote this message in a reply
05-16-2012, 09:36 AM
Post: #9
Cruz3N Offline
Mod Terganteng
****
Global Moderators
Posts: 1,655
Joined: Dec 2009
Reputation: 72
RE: Last In First Out
Gw blajar di kampus kek ginian sambil ngupil, kagak mudeng2... Trus gw ke luar kelas ngerokok klo gak pacaran ketawa
Visit this user's website Find all posts by this user
Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Topic Tools
Topic Link :
BBCode :
HTML Code :
View a Printable Version Send Thread to a Friend Subscribe to this thread
Submit Google Submit Face book Submit to Digg Submit to Reddit Submit to Furl Submit to Del.icio.us Submit to Jeqq

Users Browsing
1 Guest(s)

  • Contact Us
  • devilzc0de
  • Return to Top
  • Mobile Version
  • RSS Syndication
  • Help
Current time: 06-20-2013, 02:48 PM Powered By MyBB, © 2002-2013 MyBB Group. Theme created by Justin S. | Mixed By Chaer.Newbie | Fixed By Aditya

USING THIS SITE INDICATES THAT YOU HAVE READ AND ACCEPT OUR TERMS. IF YOU DO NOT ACCEPT THESE TERMS, YOU ARE NOT AUTHORIZED TO USE THIS SITE