Dimas Go Blog
Blognya Dimas :D

Ads 468x60px

Kamis, 03 November 2011

Basic Assembly Linux

Logika Assembly 32 bit (Bahasa Rakitan)
lagi bikin w0rm buat permanent dns attack eh tangan gue gatel mao nyambi maenan dulu ah biar gak puyeng (deface and ddos is common attacks, we don’t play it anymore, we’are goin to play with permanent dns attack soon)
logika and

;contoh rutin utama:
mov eax,23
mov ebx,23
and eax,ebx
logika ini mengharuskan kondisi keduanya terpenuhi jika ya maka true(1) jika tidak maka false (0).
contoh kode asm 32 bit dengan logika and:
global _start
_start:
mov eax,23
mov ebx,23
and eax,ebx
assemble dan linker:
bt ~ # nasm -f elf and.asm
bt ~ # ld -o and and.o
Ok sekarang kita analisis hasil statemen di atas dg gdb:
bt ~ # gdb -q and
(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) run
Starting program: /root/and
(no debugging symbols found)
Program received signal SIGSEGV, Segmentation fault.
0x0804806c in ?? ()
(gdb) i r
eax            0x17     23
ecx            0x0      0
edx            0x0      0
ebx            0x17     23
esp            0xbf99ad40       0xbf99ad40

ebp            0x0      0x0

esi            0x0      0

edi            0x0      0

eip            0x804806c        0x804806c

eflags         0x210206 [ PF IF RF ID ]

cs             0x73     115

ss             0x7b     123

ds             0x7b     123

---Type <return> to continue, or q <return> to quit---
terlihat hasil logika and pada register eax:
eax —–> 23
berikut ini cara kerja logika and tadi:
mov eax,23 —> register eax diisi 23
mov ebx,23 —> register ebx diisi 23
23 dikonvert ke biner adalah: 00100011
berikut ini logika and :
------------
0 and 0 -> 0
1 and 0 -> 0
1 and 1 -> 1
-------------
jadi:
00100011
00100011
_____________ (and)
00100011  = 23
Logika or
rutin utama:
;contoh rutin utama:
mov eax,50
mov ebx,20
or eax,ebx
logika ini gak musti kondisi keduanya terpenuhi dia udah bisa true (1)
contoh kode asm 32 bit dengan logika or:
global _start
_start:
mov eax,50
mov ebx,20
or eax,ebx
assemble dan linker:
1bt ~ # nasm -f elf or.asm
2bt ~ # ld -o or or.o
analisis hasil dengan gdb:

bt ~ # gdb -q or

Using host libthread_db library "/lib/libthread_db.so.1".

(gdb) run

Starting program: /root/or



Program received signal SIGSEGV, Segmentation fault.

0x0804806c in ?? ()

(gdb) info reg eax

eax            0x70     112

(gdb)
eax menjadi berisi 70 yg merupakan hasil or dg ebx
perhatikan rutin simple ini:
mov eax,50 —-> register eax diisi 50
mov ebx,20 —-> register ebx diisi 20
or eax,ebx —-> lakukan logika or untuk reg eax dan ebx
itunganya gini:
50 = 01010000 -> dalam bilangan biner
20 = 00100000
logika dimulai:
101010000
200100000
3_________(or)
401110000          ----------->>>> 70
keterangan logikanya:
0 or 0 = 0
1 or 0 = 1
1 or 1`= 1
Logika XOR (Exclusive Or)
xor ==exclusive or , ini semua logika sama dengan or tapi bedanya klo 2 kondisi true dia malah jadi false. check tis out:
contoh potongan xor:
global _start
_start:
mov eax,1
mov ebx,2
5xor eax,ebx
oke simpan dg nama xor.asm lalu assemble dan linker
1nasm -f elf xor.asm -g
2ld -o xor xor.o
gdb:

Using host libthread_db library "/lib/libthread_db.so.1".

(gdb) run

Starting program: /root/xor


Program received signal SIGSEGV, Segmentation fault.

0x0804806c in ?? ()

(gdb) i r

eax            0x3      3

ecx            0x0      0

edx            0x0      0

ebx            0x2      2

esp            0xbfdc5160       0xbfdc5160

ebp            0x0      0x0

esi            0x0      0

edi            0x0      0

eip            0x804806c        0x804806c

eflags         0x210206 [ PF IF RF ID ]

cs             0x73     115

ss             0x7b     123

---Type <return> to continue, or q <return> to quit---
hasil xor terlihat pada register eax yg menjadi berisi 3 a.

1  = 00000001

2  = 00000010

       ---------(xor)

        00000011

Source : http://wisdomc0d3.wordpress.com

0 komentar:

Posting Komentar