SlideShare una empresa de Scribd logo
1 de 6
Mari belajar Assembly (Dasar-dasar
Assembly)
POSTED BY K.GUSTI RANGGA SEPTEMBER - 23 - UNDEFINED
Dalam mempelajari berbagai teknik - teknik Kraking yang ada, seorang Kraker - baik newbie maupun
master - tak akan terlepas dari Assembly. Bahasa permrograman ini merupakan dasar yang penting
bagi seseorang untuk dapat mengKrak suatu program. Walaupun begitu, tidak semua hal yang ada di
dalam bahasa Assembly ini yang harus diketahui, bagi seorang newbie cukup dengan dapat mengerti
dasar - dasar Assembly serta logika yang baik sudah dapt mengKrak program - program dengan
Sistem Proteksi yang sederhana.



Di dalam tutorial ini, aku akan membahas beberapa perintah penting yang merupakan dasar - dasar
Assembly, perintah - perintah ini akan sering ditemui ketika kamu mencoba mengKrak suatu program.
Sebelum kita melangkah lebih jauh ke bahasa Assembly, mungkin ada baiknya kalo aku menjelaskan
sedikit mengenai Register ( buat yang udah tau, bisa kamu lewati ).

Apa itu Register ? Register adalah sebagian tempat di memory mikroprosesor yang dapat diakses
dengan cepat. Di dalam register ini disimpan nilai - nilai yang bagi kita para Kraker sangat penting
untuk diperhatikan.

Bagaimana melihat isi Register ? Dengan memakai SoftICE, kamu dapat melihat berbagai perubahan
yang terjadi dengan isi Register. Untuk itu kamu perlu meng-aktif-kan "Register Window" yang ada di
SoftICE dengan mengetikkan perintah WR di dalam lingkungan SoftICE. Di "Register Window" akan
terlihat berbagai register beserta isinya. Register yang penting untuk diperhatikan dalam Kraking
adalah Register EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP dam EIP.

EAX, EBX, ECX dan EDX disebut "General Purpose Register". Register ini merupakan Register 32-
bit, jika kamu mengKrak program 16-bit maka Register yang terlibat adalah AX, BX, CX dan DX.
Register ini dapat dipecah - pecah, seperti gambaran di bawah ini :

misalnya isi EAX adalah 00001234, maka

*

EAX = 00 00 12 34 ==> 32 bit

*

AX = 12 34 ==> 16 bit

*

AH = 12 ==> 8 bit

*

AL = 34 ==> 8 bit

Terlihat bahwa AX terdiri dari AH dan AL, H menunjukkan High ( di bagian Kiri ) dan L berarti Low ( di
bagian Kanan ).

ESI dan EDI adalah "Index Register". Register ini digunakan sebagai penunjuk terhadap suatu lokasi
di memory dan biasanya digunakan untuk operasi - operasi String.

EBP dan ESP adalah "Pointer Register". Kedua Register ini berpasangan dengan Register SS.
Apabila ESP ( Stack Pointer ) berpasangan dengan Register SS ( ESP : SS ) maka digunakan untuk
menunjuk alamat pada Stack sementara EBP ( Base Pointer ) akan berpasangan dengan Register
SS ( EBP : SS ) untuk menunjuk pada alamat memory tempat data.

EIP adalah "Index Pointer Register" yang berpasangan dengan CS ( CS : EIP ) untuk menunjuk pada
alamat memory tempat perintah selanjutnya yang akan di eksekusi.

Oke setelah penjelasan singkat mengenai Register di atas, kita lanjutkan dengan penjelasan
mengenai perintah - perintah dasar Assembly. Perintah - perintah di bawah ini, disusun secara
Alphabetical Order......

1. ADD ( ADD Binary Number )
Format ADD Operand1, Operand2
Fungsi Menambahkan Operand1 dengan Operand2, hasilnya akan disimpan di dalam Operand1
Kalimat Matematika Operand1 = Operand1 + Operand2
Contoh MOV EAX, 00000001h ; Lihat perintah MOV

ADD EAX, 00000002h ; EAX = 00000001h + 00000002h = 00000003h

2. AND ( Logical AND )
Format AND Operand1, Operand2
Fungsi Melakukan Operasi Logika AND pada Operand1 dan Operand2, hasilnya akan disimpan di
Operand1
Kalimat Matematika Operand1 = Operand1 AND Operand2
Contoh MOV EAX, 00001111b ; Lihat perintah MOV

AND EAX, 11110000b ; EAX = 00001111b AND 11110000b = 00000000b

3. CALL ( CALL A Procedure )
Format CALL LokasiProcedure
Fungsi Memanggil sebuah Procedure.
Kalimat Matematika -
Contoh CALL 12345678 ; Memanggil Procedure yang berada pada Offset 12345678

4. CDQ ( Convert Doubleword To Quadword )
Format CDQ
Fungsi Merubah nilai 32-bit dalam EAX menjadi 64-bit dalam EDX : EAX dengan cara mengosongkan
isi EDX
Kalimat Matematika -
Contoh MOV EAX, 12345678h ; EAX = 12345678h

CDQ ; EDX : EAX = 00000000 : 12345678h

5. CMP ( Compare )
Format CMP Operand1, Operand2
Fungsi Membandingkan Operand1 dengan Operand2, setelah perintah ini, biasanya akan diikuti
dengan sebuah Condtional Jump yang akan menentukan jalur program berikutnya.
Kalimat Matematika -
Contoh MOV ECX, 0Ah ; EAX = 0Ah

MOV EAX, 0Bh ; EBX = 0Bh

CMP EAX, ECX ; Pembandingan EAX dengan ECX.

JE 12345678 ; Jika sama, lompat ke Offset 12345678. Jika tidak, lanjutkan ke bawah

6. DEC ( Decrement )
Format DEC Operand
Fungsi Mengurangi nilai Operand dengan 1
Kalimat Matematika Operand1 = Operand1 - 1
Contoh MOV EAX, 0Ah ; EAX = 0000000Ah
DEC EAX ; EAX = 0000000Ah - 00000001h = 00000009h

7. DIV ( Unsigned Division )
Format DIV Operand
Fungsi Membagi nilai yang ada di Register EAX dengan Operand2
Kalimat Matematika EAX = EAX DIV Operand
Contoh MOV EAX, 0Ah ; EAX = 0000000Ah

MOV EBX, 05h ; EBX = 00000005h

DIV EBX ; EAX = 0000000Ah DIV 00000005h = 00000002h

8. IDIV ( Signed - Integer - Division )
Format IDIV Operand
Fungsi Membagi nilai yang ada di Register EDX : EAX dengan Operand2, hasilnya akan disimpan di
EAX sedang sisanya disimpan di EDX
Kalimat Matematika EDX : EAX = EDX : EAX IDIV Operand
Contoh MOV EDX, 00h ; EDX = 00000000h

MOV EAX, 0Fh ; EAX = 0000000Fh

MOV EBX, 05h ; EBX = 00000005h

IDIV EBX ; EDX : EAX = 00000000 : 0000000Fh IDIV 00000005h

; EAX = 00000003h ( hasil ) EDX = 00000000h ( sisa )

9. IMUL ( Signed - Integer - Multiplication )
Format IMUL Operand
Fungsi Pada program 32 bit, IMUL ini digunakan untuk mengalikan antara nilai yang tersimpan di
dalam Register EDX : EAX dengan Operand. Hasilnya akan disimpan di dalam EAX
Kalimat Matematika EAX = EDX : EAX IMUL Operand
Contoh MOV EDX, 00h ; EDX = 00000000h

MOV EAX, 05h ; EAX = 00000005h

MOV EBX, 0Ah ; EBX = 0000000Ah

IMUL EBX ; EAX = 00000000 : 00000005 IMUL 0000000A = 00000032h

10. Conditional Jump

Conditional Jump adalah perintah dalam Assembler yang digunakan untuk menentukan alur program
berikutnya. Conditional Jump ini sebelumnya didahului oleh perintah CMP ( perhatikan contoh di
penjelasan no. 5).

Ada berbagai macam Conditional Jump, di sini aku hanya membahas beberapa Conditional Jump
yang sering aku temui ketika mengKrak, untuk perintah - perintah Conditional Jump lainnya, bisa
kamu perdalam lagi di buku - buku yang membahas Assembly. Untuk semua penjelasan Conditional
Jump di bawah ini, aku akan pake beberapa perintah yang ada sebelum perintah Conditional Jump
tersebut dieksekusi.

MOV EAX, 01h ; EAX = 00000001h

MOV EBX, 02h ; EBX = 00000002h

CMP EAX, EBX ; Membandingkan antara EAX dengan EBX

Format Conditional Jump
Fungsi
JA LokasiTujuan ( Jump If Above ) Lompat ke LokasiTujuan jika EAX lebih besar dari EBX
JAE LokasiTujuan ( Jump If Above or Equal ) Lompat ke LokasiTujuan jika EAX lebih besar atau
sama dengan EBX
JNA LokasiTujuan ( Jump If Not Above ) Lompat ke LokasiTujuan jika EAX tidak lebih besar dari EBX
JNAE LokasiTujuan ( Jump If Not Above or Equal ) Lompat ke LokasiTujuan jika EAX tidak lebih
besar atau sama dengan EBX
JB LokasiTujuan ( Jump If Below ) Lompat ke LokasiTujuan jika EAX lebih kecil dari EBX
JBE LokasiTujuan ( Jump If Below or Equal ) Fungsinya sama dengan perintah JNA
JNB LokasiTujuan ( Jump If Not Below ) Fungsinya sama dengan perintah JAE
JNBE LokasiTujuan ( Jump If Not Below or Equal ) Fungsinya sama dengan perintah JA
JE LokasiTujuan ( Jump If Equal ) Lompat ke LokasiTujuan jika EAX sama dengan EBX
JNE LokasiTujuan ( Jump If Not Equal ) Lompat ke LokasiTujuan jika EAX tidak sama dengan EBX
JG LokasiTujuan ( Jump If Greater ) Lompat ke LokasiTujuan jika EAX lebih besar dari EBX
JGE LokasiTujuan ( Jump If Greater or Equal ) Lompat ke LokasiTujuan jika EAX lebih besar atau
sama dengan EBX
JNG LokasiTujuan ( Jump If Not Greater ) Lompat ke LokasiTujuan jika EAX tidak lebih besar dari
EBX
JNGE LokasiTujuan ( Jump If Not Greater or Equal ) Lompat ke LokasiTujuan jika EAX tidak lebih
besar atau sama dengan EBX
JL LokasiTujuan ( Jump If Less Than ) Fungsinya sama dengan perintah JNGE
JLE LokasiTujuan ( Jump If Less or Equal ) Fungsinya sama dengan perintah JNG
JNL LokasiTujuan ( Jump If Not Less Than ) Fungsinya sama dengan perintah JGE
JNLE LokasiTujuan ( Jump If Not Less or Equal ) Fungsinya sama dengan perintah JG
JZ LokasiTujuan ( Jump If Zero ) Fungsinya sama dengan JE
JNZ LokasiTujuan ( Jump If Not Zero ) Fungsinya sama dengan JNE

11. JMP LokasiTujuan ( Unconditional Jump )
Format JMP LokasiTujuan
Fungsi Perintah JMP ini berbeda dengan perintah - perintah Conditional Jump karena ia tidak
memerlukan hasil perbandingan sebelum perintah ini dieksekusi.
Kalimat Matematika -
Contoh JMP 12345678 ; Lompat ke Offset 12345678

12. LEA ( Load Effective Address )
Format LEA Operand1, LokasiMemory
Fungsi Untuk mengambil Offset dari LokasiMemory dan menyimpannya di dalam Operand1
Kalimat Matematika -
Contoh LEA EAX,

13. MOV ( Move Data )
Format MOV Operand1, Operand2
Fungsi Menyalin isi dari Operand2 kedalam Operand1
Kalimat Matematika Operand1 = Operand2
Contoh MOV EAX, 0Ah ; EAX = 0000000Ah

14. MUL ( Multiplication )
Format MUL Operand
Fungsi Mengalikan isi EAX dengan Operand, hasilnya akan disimapn di dalam EDX : EAX
Kalimat Matematika EDX : EAX = EAX * Operand
Contoh MOV EAX, 0Ah ; EAX = 0000000Ah

MUL EAX, 05h ; EDX : EAX = 0000000Ah * 00000005h = 00000000 : 00000032h

15. NOP ( No Operation )
Format NOP
Fungsi Seperti namanya, NOP tidak melakukan Operasi apa - apa, walaupun begitu perintah ini
memiliki peran yang cukup penting dalam Kraking. Seperti yang diketahui, salah satu teknik
mengKrak sebuah Sistem Proteksi adalah Patching, dalam Patching ini, Kraker harus merubah
perintah yang ada di dalam Sistem Proteksi tersebut agar dapat mengKraknya.

Contoh sederhananya yaitu ketika ada sebuah Conditional Jump yang akan menentukan apakah S/N
yang kita masukan valid atau tidak, salah satu cara yang mungkin untuk mengKraknya adalah
dengan me-NOP-kan perintah Conditional Jump tersebut. Untuk lebih jealasnya, liat contoh di bawah.
Kalimat Matematika -
Contoh MOV EAX, 12345678 ; Offset 12345678 berisi S/N palsu

MOV EBX, 87654321 ; Offset 87654321 berisi S/N yang asli.

CMP EAX, EBX ; Bandingkan EAX dengan EBX

JNE 12344321 ; Jika tidak sama, lompat ke Offset 12344321

Offset berikutnya menyatakan bahwa S/N yang dimasukan adalah S/N yang valid.

Offset 12344321 menyatakan bahwa S/N yang kita masukan adalah S/N yang salah..

Listing di atas menunjukkan dengan jelas bagaimana S/N kita dibandingkan, jika kau ingin dengan
sembarang S/N dapat dianggap sukses maka kita bisa me-NOP-kan Conditional Jump di atas
sehingga listing perintah di atas menjadi :

MOV EAX, 12345678 ; Offset 12345678 berisi S/N palsu

MOV EBX, 87654321 ; Offset 87654321 berisi S/N yang asli.

CMP EAX, EBX ; Bandingkan EAX dengan EBX

NOP ; Tidak melakukan pencabangan sehingga S/N apa saja yang dimasukan akan dianggap valid.

16. OR ( Logical OR )
Format OR Operand1, Operand2
Fungsi Melakukan Operasi Logika OR terhadap Operand1 dan Operand2, hasilanya akan disimpan di
dalam Operand1
Kalimat Matematika Operand1 = Operand1 OR Operand2
Contoh OR EAX, EBX

17. POP ( POP from Stack )
Format POP Operand
Fungsi Mengambil isi dari Stack dan menyimpannya di dalam Operand
Kalimat Matematika -
Contoh POP EAX

18. PUSH ( PUSH onto Stack )
Format PUSH Operand
Fungsi Memasukan nilai dari Operand ke dalam Stack
Kalimat Matematika -
Contoh PUSH EAX

19. RET ( Return from Procedure )
Format RET
Fungsi Kembali ke Rutin pemanggil Procedure yang sedang berlangsung.
Kalimat Matematika -
Contoh 1234 : 00000001 CALL 00001000 ;Memanggil Procedure yang ada di Offset 00001000

1234 : 00000002 ;Perintah Selanjutnya

1234 : 00001000 RET ;Alur program akan kembali ke Offset 00000002

20. SUB ( Subtract Binary Values )
Format SUB Operand1, Operand2
Fungsi Mengurangkan nilai dari Operand1 dengan Operand2. Hasilnya kemudian disimpan di dalam
Operand1
Kalimat Matematika Operand1 = Operand1 - Operand2
Contoh MOV EAX, 0Ah ;EAX = 0Ah ( = 10 decimal )

MOV EBX, 01h ;EBX = 01h ( = 01 decimal )

SUB EAX, EBX ;EAX = EAX - EBX = 0Ah - 01h = 09h

21. TEST ( Test Bits )
Format TEST Operand1, Operand2
Fungsi Memeriksa apakah Operand1 sama dengan Operand2 ???
Kalimat Matematika -
Contoh MOV EAX, 0Ah ;EAX = 0Ah ( = 10 decimal )

MOV EBX, 01h ;EBX = 01h ( = 01 decimal )

TEST EAX, EBX ;Apakah EAX = EBX ???

JE 12344321 ;Jika sama, lompat.

22. XOR ( Exclusive OR )
Format XOR Operand1, Operand2
Fungsi Melakukan operasi logika Exlusive OR antara Operand1 dengan Operand2. Perintah XOR ini
juga sering dipakai untuk me-nol-kan suatu register dengan cara XOR Operand1, Operand1
Kalimat Matematika -
Contoh XOR EAX, EAX ;Berfungsi untuk me-nol-kan nilai EAX ( EAX = 0 )

Más contenido relacionado

La actualidad más candente

6. analisis semantik
6. analisis semantik6. analisis semantik
6. analisis semantik
yuster92
 
Teori bahasa dan automata2
Teori bahasa dan automata2Teori bahasa dan automata2
Teori bahasa dan automata2
Nurdin Al-Azies
 
Teori bahasaautomata
Teori bahasaautomataTeori bahasaautomata
Teori bahasaautomata
as na
 

La actualidad más candente (20)

4. bahasa-rakitan[3]
4. bahasa-rakitan[3]4. bahasa-rakitan[3]
4. bahasa-rakitan[3]
 
SET INSTRUKSI
SET INSTRUKSISET INSTRUKSI
SET INSTRUKSI
 
Praktikum 6A
Praktikum 6APraktikum 6A
Praktikum 6A
 
Tipe dan format instruksi 2
Tipe dan format instruksi 2Tipe dan format instruksi 2
Tipe dan format instruksi 2
 
SLIDE KE:5 NFA
SLIDE KE:5 NFASLIDE KE:5 NFA
SLIDE KE:5 NFA
 
Pertemuan 9.1 pengalamatan juga
Pertemuan 9.1 pengalamatan jugaPertemuan 9.1 pengalamatan juga
Pertemuan 9.1 pengalamatan juga
 
Bahasa assembly
Bahasa assemblyBahasa assembly
Bahasa assembly
 
Pembentukan peta karnaugh
Pembentukan peta karnaughPembentukan peta karnaugh
Pembentukan peta karnaugh
 
Pushdown Automata
Pushdown Automata Pushdown Automata
Pushdown Automata
 
Set instruksi
Set instruksiSet instruksi
Set instruksi
 
Set instruksi
Set instruksiSet instruksi
Set instruksi
 
Analisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik KompilasiAnalisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik Kompilasi
 
6. analisis semantik
6. analisis semantik6. analisis semantik
6. analisis semantik
 
P 2 Konsep & Notasi Bahasa - Teknik Kompilasi
P 2 Konsep & Notasi Bahasa - Teknik KompilasiP 2 Konsep & Notasi Bahasa - Teknik Kompilasi
P 2 Konsep & Notasi Bahasa - Teknik Kompilasi
 
E1 e117049 nurfadhila fahmi_tugas3
E1 e117049 nurfadhila fahmi_tugas3E1 e117049 nurfadhila fahmi_tugas3
E1 e117049 nurfadhila fahmi_tugas3
 
Modul tba
Modul tbaModul tba
Modul tba
 
Teori bahasa dan automata2
Teori bahasa dan automata2Teori bahasa dan automata2
Teori bahasa dan automata2
 
Hirarky chomsky
Hirarky chomskyHirarky chomsky
Hirarky chomsky
 
Lecture 1 pendahuluan Bahasa Python
Lecture 1 pendahuluan Bahasa PythonLecture 1 pendahuluan Bahasa Python
Lecture 1 pendahuluan Bahasa Python
 
Teori bahasaautomata
Teori bahasaautomataTeori bahasaautomata
Teori bahasaautomata
 

Destacado

Manakah carnivora anita
Manakah carnivora anitaManakah carnivora anita
Manakah carnivora anita
anitachrisanti
 
Alumnos del programa redes
Alumnos del programa redesAlumnos del programa redes
Alumnos del programa redes
GRETCHEN407
 
Mktg summer revision slides 2011
Mktg summer revision slides 2011Mktg summer revision slides 2011
Mktg summer revision slides 2011
Noila
 
Pert 1 aok dan perkembangan pc
Pert 1 aok dan perkembangan pcPert 1 aok dan perkembangan pc
Pert 1 aok dan perkembangan pc
Titin Martini
 
Bab sistem kode bilangan biner
Bab sistem kode bilangan binerBab sistem kode bilangan biner
Bab sistem kode bilangan biner
Titin Martini
 
Indicadors de qualitat
Indicadors de qualitatIndicadors de qualitat
Indicadors de qualitat
alterga
 
Mapas mentales huella ecologica
Mapas mentales huella ecologicaMapas mentales huella ecologica
Mapas mentales huella ecologica
GRETCHEN407
 

Destacado (19)

Unitat
UnitatUnitat
Unitat
 
Manakah carnivora anita
Manakah carnivora anitaManakah carnivora anita
Manakah carnivora anita
 
Alumnos del programa redes
Alumnos del programa redesAlumnos del programa redes
Alumnos del programa redes
 
Organisasai dan perkembangan pc
Organisasai dan perkembangan pcOrganisasai dan perkembangan pc
Organisasai dan perkembangan pc
 
Pert 1 aok dan perkembangan pc
Pert 1 aok dan perkembangan pcPert 1 aok dan perkembangan pc
Pert 1 aok dan perkembangan pc
 
Plan cuatrimestre elba gretchen abril
Plan cuatrimestre  elba gretchen abrilPlan cuatrimestre  elba gretchen abril
Plan cuatrimestre elba gretchen abril
 
Mktg summer revision slides 2011
Mktg summer revision slides 2011Mktg summer revision slides 2011
Mktg summer revision slides 2011
 
Pert 1 aok dan perkembangan pc
Pert 1 aok dan perkembangan pcPert 1 aok dan perkembangan pc
Pert 1 aok dan perkembangan pc
 
Bab sistem kode bilangan biner
Bab sistem kode bilangan binerBab sistem kode bilangan biner
Bab sistem kode bilangan biner
 
1ф pwm sine wave inverter
1ф pwm sine wave inverter1ф pwm sine wave inverter
1ф pwm sine wave inverter
 
Microcontroller based mho relay part 4
Microcontroller based mho relay part 4Microcontroller based mho relay part 4
Microcontroller based mho relay part 4
 
Microcontroller based mho relay part 3
Microcontroller based mho relay part 3Microcontroller based mho relay part 3
Microcontroller based mho relay part 3
 
Microcontroller based mho relay part 2
Microcontroller based mho relay part 2Microcontroller based mho relay part 2
Microcontroller based mho relay part 2
 
Microcontroller based mho relay for distance protection (1)
Microcontroller based mho relay for distance protection (1)Microcontroller based mho relay for distance protection (1)
Microcontroller based mho relay for distance protection (1)
 
Rahul Bajaj
Rahul BajajRahul Bajaj
Rahul Bajaj
 
1ф PWM Sine wave Inverter
1ф PWM Sine wave Inverter1ф PWM Sine wave Inverter
1ф PWM Sine wave Inverter
 
Distance Relay:->Mho relay
Distance Relay:->Mho relayDistance Relay:->Mho relay
Distance Relay:->Mho relay
 
Indicadors de qualitat
Indicadors de qualitatIndicadors de qualitat
Indicadors de qualitat
 
Mapas mentales huella ecologica
Mapas mentales huella ecologicaMapas mentales huella ecologica
Mapas mentales huella ecologica
 

Similar a Mari belajar assembly

MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdf
MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdfMODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdf
MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdf
Lalu Delsi Samsumar
 
Set intruksi (posting di slideshare)
Set intruksi (posting di slideshare)Set intruksi (posting di slideshare)
Set intruksi (posting di slideshare)
rdbmn
 
Pascal tutorialtpascal701
Pascal tutorialtpascal701Pascal tutorialtpascal701
Pascal tutorialtpascal701
Alvin Setiawan
 

Similar a Mari belajar assembly (20)

Tutor Tasm2
Tutor Tasm2Tutor Tasm2
Tutor Tasm2
 
Pengantar Organisasi Dan Arsitektur Komputer
Pengantar Organisasi Dan Arsitektur KomputerPengantar Organisasi Dan Arsitektur Komputer
Pengantar Organisasi Dan Arsitektur Komputer
 
MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdf
MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdfMODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdf
MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdf
 
Tk310 021016-631-23
Tk310 021016-631-23Tk310 021016-631-23
Tk310 021016-631-23
 
Set intruksi (posting di slideshare)
Set intruksi (posting di slideshare)Set intruksi (posting di slideshare)
Set intruksi (posting di slideshare)
 
Ppt modul 2 operator
Ppt modul 2 operatorPpt modul 2 operator
Ppt modul 2 operator
 
Set intruksi
Set intruksiSet intruksi
Set intruksi
 
Modul praktikum instruksi dasar
Modul praktikum instruksi dasarModul praktikum instruksi dasar
Modul praktikum instruksi dasar
 
Modul praktikum Bahasa assembly
Modul praktikum Bahasa assemblyModul praktikum Bahasa assembly
Modul praktikum Bahasa assembly
 
Pemograman mikrokontroler
Pemograman mikrokontrolerPemograman mikrokontroler
Pemograman mikrokontroler
 
Pertemuan 9 pengalamatan
Pertemuan 9 pengalamatanPertemuan 9 pengalamatan
Pertemuan 9 pengalamatan
 
Bab. 8
Bab. 8Bab. 8
Bab. 8
 
Pascal tutorialtpascal701
Pascal tutorialtpascal701Pascal tutorialtpascal701
Pascal tutorialtpascal701
 
Pertemuan 4 - Struktur Kondisi IF
Pertemuan 4 - Struktur Kondisi IFPertemuan 4 - Struktur Kondisi IF
Pertemuan 4 - Struktur Kondisi IF
 
Set intruksi ppt
Set intruksi pptSet intruksi ppt
Set intruksi ppt
 
Sap 2
Sap 2Sap 2
Sap 2
 
Struktur Runtunan Algoritma
Struktur Runtunan AlgoritmaStruktur Runtunan Algoritma
Struktur Runtunan Algoritma
 
Assembly ok3
Assembly ok3Assembly ok3
Assembly ok3
 
Pemrograman sap 1
Pemrograman sap 1Pemrograman sap 1
Pemrograman sap 1
 
Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5
 

Mari belajar assembly

  • 1. Mari belajar Assembly (Dasar-dasar Assembly) POSTED BY K.GUSTI RANGGA SEPTEMBER - 23 - UNDEFINED Dalam mempelajari berbagai teknik - teknik Kraking yang ada, seorang Kraker - baik newbie maupun master - tak akan terlepas dari Assembly. Bahasa permrograman ini merupakan dasar yang penting bagi seseorang untuk dapat mengKrak suatu program. Walaupun begitu, tidak semua hal yang ada di dalam bahasa Assembly ini yang harus diketahui, bagi seorang newbie cukup dengan dapat mengerti dasar - dasar Assembly serta logika yang baik sudah dapt mengKrak program - program dengan Sistem Proteksi yang sederhana. Di dalam tutorial ini, aku akan membahas beberapa perintah penting yang merupakan dasar - dasar Assembly, perintah - perintah ini akan sering ditemui ketika kamu mencoba mengKrak suatu program. Sebelum kita melangkah lebih jauh ke bahasa Assembly, mungkin ada baiknya kalo aku menjelaskan sedikit mengenai Register ( buat yang udah tau, bisa kamu lewati ). Apa itu Register ? Register adalah sebagian tempat di memory mikroprosesor yang dapat diakses dengan cepat. Di dalam register ini disimpan nilai - nilai yang bagi kita para Kraker sangat penting untuk diperhatikan. Bagaimana melihat isi Register ? Dengan memakai SoftICE, kamu dapat melihat berbagai perubahan yang terjadi dengan isi Register. Untuk itu kamu perlu meng-aktif-kan "Register Window" yang ada di SoftICE dengan mengetikkan perintah WR di dalam lingkungan SoftICE. Di "Register Window" akan terlihat berbagai register beserta isinya. Register yang penting untuk diperhatikan dalam Kraking adalah Register EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP dam EIP. EAX, EBX, ECX dan EDX disebut "General Purpose Register". Register ini merupakan Register 32- bit, jika kamu mengKrak program 16-bit maka Register yang terlibat adalah AX, BX, CX dan DX. Register ini dapat dipecah - pecah, seperti gambaran di bawah ini : misalnya isi EAX adalah 00001234, maka * EAX = 00 00 12 34 ==> 32 bit * AX = 12 34 ==> 16 bit * AH = 12 ==> 8 bit * AL = 34 ==> 8 bit Terlihat bahwa AX terdiri dari AH dan AL, H menunjukkan High ( di bagian Kiri ) dan L berarti Low ( di bagian Kanan ). ESI dan EDI adalah "Index Register". Register ini digunakan sebagai penunjuk terhadap suatu lokasi di memory dan biasanya digunakan untuk operasi - operasi String. EBP dan ESP adalah "Pointer Register". Kedua Register ini berpasangan dengan Register SS. Apabila ESP ( Stack Pointer ) berpasangan dengan Register SS ( ESP : SS ) maka digunakan untuk menunjuk alamat pada Stack sementara EBP ( Base Pointer ) akan berpasangan dengan Register
  • 2. SS ( EBP : SS ) untuk menunjuk pada alamat memory tempat data. EIP adalah "Index Pointer Register" yang berpasangan dengan CS ( CS : EIP ) untuk menunjuk pada alamat memory tempat perintah selanjutnya yang akan di eksekusi. Oke setelah penjelasan singkat mengenai Register di atas, kita lanjutkan dengan penjelasan mengenai perintah - perintah dasar Assembly. Perintah - perintah di bawah ini, disusun secara Alphabetical Order...... 1. ADD ( ADD Binary Number ) Format ADD Operand1, Operand2 Fungsi Menambahkan Operand1 dengan Operand2, hasilnya akan disimpan di dalam Operand1 Kalimat Matematika Operand1 = Operand1 + Operand2 Contoh MOV EAX, 00000001h ; Lihat perintah MOV ADD EAX, 00000002h ; EAX = 00000001h + 00000002h = 00000003h 2. AND ( Logical AND ) Format AND Operand1, Operand2 Fungsi Melakukan Operasi Logika AND pada Operand1 dan Operand2, hasilnya akan disimpan di Operand1 Kalimat Matematika Operand1 = Operand1 AND Operand2 Contoh MOV EAX, 00001111b ; Lihat perintah MOV AND EAX, 11110000b ; EAX = 00001111b AND 11110000b = 00000000b 3. CALL ( CALL A Procedure ) Format CALL LokasiProcedure Fungsi Memanggil sebuah Procedure. Kalimat Matematika - Contoh CALL 12345678 ; Memanggil Procedure yang berada pada Offset 12345678 4. CDQ ( Convert Doubleword To Quadword ) Format CDQ Fungsi Merubah nilai 32-bit dalam EAX menjadi 64-bit dalam EDX : EAX dengan cara mengosongkan isi EDX Kalimat Matematika - Contoh MOV EAX, 12345678h ; EAX = 12345678h CDQ ; EDX : EAX = 00000000 : 12345678h 5. CMP ( Compare ) Format CMP Operand1, Operand2 Fungsi Membandingkan Operand1 dengan Operand2, setelah perintah ini, biasanya akan diikuti dengan sebuah Condtional Jump yang akan menentukan jalur program berikutnya. Kalimat Matematika - Contoh MOV ECX, 0Ah ; EAX = 0Ah MOV EAX, 0Bh ; EBX = 0Bh CMP EAX, ECX ; Pembandingan EAX dengan ECX. JE 12345678 ; Jika sama, lompat ke Offset 12345678. Jika tidak, lanjutkan ke bawah 6. DEC ( Decrement ) Format DEC Operand Fungsi Mengurangi nilai Operand dengan 1 Kalimat Matematika Operand1 = Operand1 - 1 Contoh MOV EAX, 0Ah ; EAX = 0000000Ah
  • 3. DEC EAX ; EAX = 0000000Ah - 00000001h = 00000009h 7. DIV ( Unsigned Division ) Format DIV Operand Fungsi Membagi nilai yang ada di Register EAX dengan Operand2 Kalimat Matematika EAX = EAX DIV Operand Contoh MOV EAX, 0Ah ; EAX = 0000000Ah MOV EBX, 05h ; EBX = 00000005h DIV EBX ; EAX = 0000000Ah DIV 00000005h = 00000002h 8. IDIV ( Signed - Integer - Division ) Format IDIV Operand Fungsi Membagi nilai yang ada di Register EDX : EAX dengan Operand2, hasilnya akan disimpan di EAX sedang sisanya disimpan di EDX Kalimat Matematika EDX : EAX = EDX : EAX IDIV Operand Contoh MOV EDX, 00h ; EDX = 00000000h MOV EAX, 0Fh ; EAX = 0000000Fh MOV EBX, 05h ; EBX = 00000005h IDIV EBX ; EDX : EAX = 00000000 : 0000000Fh IDIV 00000005h ; EAX = 00000003h ( hasil ) EDX = 00000000h ( sisa ) 9. IMUL ( Signed - Integer - Multiplication ) Format IMUL Operand Fungsi Pada program 32 bit, IMUL ini digunakan untuk mengalikan antara nilai yang tersimpan di dalam Register EDX : EAX dengan Operand. Hasilnya akan disimpan di dalam EAX Kalimat Matematika EAX = EDX : EAX IMUL Operand Contoh MOV EDX, 00h ; EDX = 00000000h MOV EAX, 05h ; EAX = 00000005h MOV EBX, 0Ah ; EBX = 0000000Ah IMUL EBX ; EAX = 00000000 : 00000005 IMUL 0000000A = 00000032h 10. Conditional Jump Conditional Jump adalah perintah dalam Assembler yang digunakan untuk menentukan alur program berikutnya. Conditional Jump ini sebelumnya didahului oleh perintah CMP ( perhatikan contoh di penjelasan no. 5). Ada berbagai macam Conditional Jump, di sini aku hanya membahas beberapa Conditional Jump yang sering aku temui ketika mengKrak, untuk perintah - perintah Conditional Jump lainnya, bisa kamu perdalam lagi di buku - buku yang membahas Assembly. Untuk semua penjelasan Conditional Jump di bawah ini, aku akan pake beberapa perintah yang ada sebelum perintah Conditional Jump tersebut dieksekusi. MOV EAX, 01h ; EAX = 00000001h MOV EBX, 02h ; EBX = 00000002h CMP EAX, EBX ; Membandingkan antara EAX dengan EBX Format Conditional Jump
  • 4. Fungsi JA LokasiTujuan ( Jump If Above ) Lompat ke LokasiTujuan jika EAX lebih besar dari EBX JAE LokasiTujuan ( Jump If Above or Equal ) Lompat ke LokasiTujuan jika EAX lebih besar atau sama dengan EBX JNA LokasiTujuan ( Jump If Not Above ) Lompat ke LokasiTujuan jika EAX tidak lebih besar dari EBX JNAE LokasiTujuan ( Jump If Not Above or Equal ) Lompat ke LokasiTujuan jika EAX tidak lebih besar atau sama dengan EBX JB LokasiTujuan ( Jump If Below ) Lompat ke LokasiTujuan jika EAX lebih kecil dari EBX JBE LokasiTujuan ( Jump If Below or Equal ) Fungsinya sama dengan perintah JNA JNB LokasiTujuan ( Jump If Not Below ) Fungsinya sama dengan perintah JAE JNBE LokasiTujuan ( Jump If Not Below or Equal ) Fungsinya sama dengan perintah JA JE LokasiTujuan ( Jump If Equal ) Lompat ke LokasiTujuan jika EAX sama dengan EBX JNE LokasiTujuan ( Jump If Not Equal ) Lompat ke LokasiTujuan jika EAX tidak sama dengan EBX JG LokasiTujuan ( Jump If Greater ) Lompat ke LokasiTujuan jika EAX lebih besar dari EBX JGE LokasiTujuan ( Jump If Greater or Equal ) Lompat ke LokasiTujuan jika EAX lebih besar atau sama dengan EBX JNG LokasiTujuan ( Jump If Not Greater ) Lompat ke LokasiTujuan jika EAX tidak lebih besar dari EBX JNGE LokasiTujuan ( Jump If Not Greater or Equal ) Lompat ke LokasiTujuan jika EAX tidak lebih besar atau sama dengan EBX JL LokasiTujuan ( Jump If Less Than ) Fungsinya sama dengan perintah JNGE JLE LokasiTujuan ( Jump If Less or Equal ) Fungsinya sama dengan perintah JNG JNL LokasiTujuan ( Jump If Not Less Than ) Fungsinya sama dengan perintah JGE JNLE LokasiTujuan ( Jump If Not Less or Equal ) Fungsinya sama dengan perintah JG JZ LokasiTujuan ( Jump If Zero ) Fungsinya sama dengan JE JNZ LokasiTujuan ( Jump If Not Zero ) Fungsinya sama dengan JNE 11. JMP LokasiTujuan ( Unconditional Jump ) Format JMP LokasiTujuan Fungsi Perintah JMP ini berbeda dengan perintah - perintah Conditional Jump karena ia tidak memerlukan hasil perbandingan sebelum perintah ini dieksekusi. Kalimat Matematika - Contoh JMP 12345678 ; Lompat ke Offset 12345678 12. LEA ( Load Effective Address ) Format LEA Operand1, LokasiMemory Fungsi Untuk mengambil Offset dari LokasiMemory dan menyimpannya di dalam Operand1 Kalimat Matematika - Contoh LEA EAX, 13. MOV ( Move Data ) Format MOV Operand1, Operand2 Fungsi Menyalin isi dari Operand2 kedalam Operand1 Kalimat Matematika Operand1 = Operand2 Contoh MOV EAX, 0Ah ; EAX = 0000000Ah 14. MUL ( Multiplication ) Format MUL Operand Fungsi Mengalikan isi EAX dengan Operand, hasilnya akan disimapn di dalam EDX : EAX Kalimat Matematika EDX : EAX = EAX * Operand Contoh MOV EAX, 0Ah ; EAX = 0000000Ah MUL EAX, 05h ; EDX : EAX = 0000000Ah * 00000005h = 00000000 : 00000032h 15. NOP ( No Operation ) Format NOP Fungsi Seperti namanya, NOP tidak melakukan Operasi apa - apa, walaupun begitu perintah ini memiliki peran yang cukup penting dalam Kraking. Seperti yang diketahui, salah satu teknik mengKrak sebuah Sistem Proteksi adalah Patching, dalam Patching ini, Kraker harus merubah
  • 5. perintah yang ada di dalam Sistem Proteksi tersebut agar dapat mengKraknya. Contoh sederhananya yaitu ketika ada sebuah Conditional Jump yang akan menentukan apakah S/N yang kita masukan valid atau tidak, salah satu cara yang mungkin untuk mengKraknya adalah dengan me-NOP-kan perintah Conditional Jump tersebut. Untuk lebih jealasnya, liat contoh di bawah. Kalimat Matematika - Contoh MOV EAX, 12345678 ; Offset 12345678 berisi S/N palsu MOV EBX, 87654321 ; Offset 87654321 berisi S/N yang asli. CMP EAX, EBX ; Bandingkan EAX dengan EBX JNE 12344321 ; Jika tidak sama, lompat ke Offset 12344321 Offset berikutnya menyatakan bahwa S/N yang dimasukan adalah S/N yang valid. Offset 12344321 menyatakan bahwa S/N yang kita masukan adalah S/N yang salah.. Listing di atas menunjukkan dengan jelas bagaimana S/N kita dibandingkan, jika kau ingin dengan sembarang S/N dapat dianggap sukses maka kita bisa me-NOP-kan Conditional Jump di atas sehingga listing perintah di atas menjadi : MOV EAX, 12345678 ; Offset 12345678 berisi S/N palsu MOV EBX, 87654321 ; Offset 87654321 berisi S/N yang asli. CMP EAX, EBX ; Bandingkan EAX dengan EBX NOP ; Tidak melakukan pencabangan sehingga S/N apa saja yang dimasukan akan dianggap valid. 16. OR ( Logical OR ) Format OR Operand1, Operand2 Fungsi Melakukan Operasi Logika OR terhadap Operand1 dan Operand2, hasilanya akan disimpan di dalam Operand1 Kalimat Matematika Operand1 = Operand1 OR Operand2 Contoh OR EAX, EBX 17. POP ( POP from Stack ) Format POP Operand Fungsi Mengambil isi dari Stack dan menyimpannya di dalam Operand Kalimat Matematika - Contoh POP EAX 18. PUSH ( PUSH onto Stack ) Format PUSH Operand Fungsi Memasukan nilai dari Operand ke dalam Stack Kalimat Matematika - Contoh PUSH EAX 19. RET ( Return from Procedure ) Format RET Fungsi Kembali ke Rutin pemanggil Procedure yang sedang berlangsung. Kalimat Matematika - Contoh 1234 : 00000001 CALL 00001000 ;Memanggil Procedure yang ada di Offset 00001000 1234 : 00000002 ;Perintah Selanjutnya 1234 : 00001000 RET ;Alur program akan kembali ke Offset 00000002 20. SUB ( Subtract Binary Values )
  • 6. Format SUB Operand1, Operand2 Fungsi Mengurangkan nilai dari Operand1 dengan Operand2. Hasilnya kemudian disimpan di dalam Operand1 Kalimat Matematika Operand1 = Operand1 - Operand2 Contoh MOV EAX, 0Ah ;EAX = 0Ah ( = 10 decimal ) MOV EBX, 01h ;EBX = 01h ( = 01 decimal ) SUB EAX, EBX ;EAX = EAX - EBX = 0Ah - 01h = 09h 21. TEST ( Test Bits ) Format TEST Operand1, Operand2 Fungsi Memeriksa apakah Operand1 sama dengan Operand2 ??? Kalimat Matematika - Contoh MOV EAX, 0Ah ;EAX = 0Ah ( = 10 decimal ) MOV EBX, 01h ;EBX = 01h ( = 01 decimal ) TEST EAX, EBX ;Apakah EAX = EBX ??? JE 12344321 ;Jika sama, lompat. 22. XOR ( Exclusive OR ) Format XOR Operand1, Operand2 Fungsi Melakukan operasi logika Exlusive OR antara Operand1 dengan Operand2. Perintah XOR ini juga sering dipakai untuk me-nol-kan suatu register dengan cara XOR Operand1, Operand1 Kalimat Matematika - Contoh XOR EAX, EAX ;Berfungsi untuk me-nol-kan nilai EAX ( EAX = 0 )