Selamat datang bagi teman t eman yang ingin bergabung untuk mengikuti sekolah-IUG. Yang khusus belajar tentang “Reverse-Engineering ” . Untuk memulai suatu “Reverse- Engineering”perlu adanya penguasaan materi baik dari tools nya maupun logika dari bahasa mesin itu sendiri “Assembly”. Modul ini berguna bagi siapa saja yang ingin mengetahui tentang “Reverse-Engineering”. Pernah kah anda berpikir ;” Saya tidak ingin be lajar asm, tetapi , tetapi Saya ingin “Reverse- Engineering [cracking]” suatu aplikasi sehingga full registered” Jika anda tidak mengetahui bahasa dasar asm maka sia-saia usaha anda. Kita perlu mengetahui bahasa asm karena untuk setiap tindakan kita melakukan reverse pasti kita menghadapi bahasa mesin yaitu assembl y . Mari kita mulai ada 6 bagian yang perlu kita ketahui 1.REGISTERS- Apakah ini? , dan bagaimana mempergunakannya? 2.STACK- Apakah ini? , dan bagaimana mempergunakannya? 3.COMMON INSTRUCTIONS– Siap - siap mimpi buruk kawan ! 4.CONDITIONAL JUMPS - Loncat dan Loncat ! . 5.BITMANIPULATION INSTRUCTIONS– ready buat bina ry 6.EXTRA – tambahan istilah dan pengertian lainnya “flag” 1.REGISTERS Registers dapat dibandingkan den gan variable pada bahasa mesin tingkat tinggi (high level language) [C, Pascal, Visual Basic, Delphi]. Dimana nilai dari register tersebut tersimpan dalam cpu dan dapat di manipulasi. Ada 4 macam registers, yaitu general purpose registers ,stack registers , segment reg isters dan index re gisters. General purpose regi sters: Bes arny a nil ai regis ter s adalah 16 bits , dan ter dapa t 4 mac am AX,BX,CX and DX. Lalu dibag i lagi menj adi berni lai 8 bits , AX dibagi menj adi AL (low by te) dan AH (high byte) , dan BX di bagi menjadi BL dan BH dan se terusnya. Con tohnya Misalkan nilai AX=1234. maka AL=34 (the low by tes) dan AH=12 (th e high bytes). Di dala m 386 dan yang l ebih atas sepe rt 486 , ada juga reg ister yan g bernil ai 32 bits, yait u EAX,EBX,ECX, dan EDX. Saya yakin anda sering menemukannya sekarang. Berikut singkatannya : EAX: Extended Accumulator Register EBX: Extended Base Register ECX: Extended Counter Register EDX: Extended Data Register ESI: Extended Source Index EDI: Extended Destination Index EBP: Extended Base Pointer ESP: Extended Stack Pointer EIP: Extended Instruction Pointer
Pengenalan bagi yang ingin belajar Reverse enginering tanpa ingin belajar ASM.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Selamat datang bagi teman teman yang ingin bergabung untuk mengikuti sekolah-IUG. Yang
khusus belajar tentang “Reverse-Engineering” . Untuk memulai suatu “Reverse-Engineering” perlu adanya penguasaan materi baik dari tools nya maupun logika dari bahasa
mesin itu sendiri “Assembly”.
Modul ini berguna bagi siapa saja yang ingin mengetahui tentang “Reverse-Engineering”.Pernah kah anda berpikir ;” Saya tidak ingin belajar asm, tetapi , tetapi Saya ingin “Reverse-
Engineering [cracking]” suatu aplikasi sehingga full registered” Jika anda tidak
mengetahui bahasa dasar asm maka sia-saia usaha anda. Kita perlu mengetahui bahasa asm
karena untuk setiap tindakan kita melakukan reverse pasti kita menghadapi bahasa mesin
yaitu assembly.
Mari kita mulai ada 6 bagian yang perlu kita ketahui
1. REGISTERS - Apakah ini? , dan bagaimana mempergunakannya?2. STACK - Apakah ini? , dan bagaimana mempergunakannya?
5. BITMANIPULATION INSTRUCTIONS – ready buat binary
6. EXTRA – tambahan istilah dan pengertian lainnya “flag”
1. REGISTERS
Registers dapat dibandingkan dengan variable pada bahasa mesin tingkat tinggi (high levellanguage) [C, Pascal, Visual Basic, Delphi]. Dimana nilai dari register tersebut tersimpandalam cpu dan dapat di manipulasi. Ada 4 macam registers, yaitu general purpose
registers, stack registers, segment registers dan index registers.
General purpose registers:
Besarnya nilai registers adalah 16 bits , dan terdapat 4 macam AX,BX,CX and DX. Lalu
dibagi lagi menjadi bernilai 8 bits , AX dibagi menjadi AL (low byte) dan AH (high byte),
dan BX di bagi menjadi BL dan BH dan seterusnya. Contohnya
Misalkan nilai AX=1234. maka AL=34 (the low bytes) dan AH=12 (the high bytes).
Di dalam 386 dan yang lebih atas sepert 486 , ada juga register yang bernilai 32 bits, yaitu
EAX,EBX,ECX, dan EDX.
Saya yakin anda sering
menemukannya sekarang.Berikut singkatannya :
EAX: Extended Accumulator RegisterEBX: Extended Base RegisterECX: Extended Counter Register
EDX: Extended Data RegisterESI: Extended Source IndexEDI: Extended Destination Index
BX (EBX) juga dapat di gunakan sebagai index register. Register digunakan bersamaandengan segment registers sebagai “offset”.
Lalu apa artinya “ DS:SI”? Simple saja DS ke datasegment dan SI adalah offset didalan
datasegment..
2. STACK
Lihat atas untuk STACK atau
3. COMMON INSTRUCTION
Saya akan menjelaskan instruksi yang harus anda ketahui untuk mengerti logika dari bahasa
asm ini. Yang akan di bahas hanya dasarnya saja dan jika anda ingin menjadi reverser yangserius coba belajar dari sumber lain. ( mudah – mudahan niat )
MOV dest, source
Instruksinya simple memindahkan (move) value ke lokasi yang terdapat dalam memory(register atau variable).
CONTOH : MOV AX, 1234h ; AX = 1234h
MOV BX, AX ; BX = AX
Jadi seluruh data 1234 hex (4660 dec) di pindah ke AX . Kemudian value dari AX (1234h)
akan dipindahkan kembali ke BX.
ADD dest, value
Instruksinya simple menambahkan value dan disimpan di dest.
SUB dest, valueInstruksinya simple mengurangi value dan disimpan di dest.
Contoh : MOV AX, 10h ; AX adalah 10h
SUB AX, 2h ; Ax adalah 8h
INC destMenambah value tertentu (register, variable atau apa saja).
Contoh : MOV AX, 10h ; AX adalah 10h
INC AX ; Ax adalah 11h
DEC destMengurangi value tertentu (register, variable atau apa
saja).
Contoh : MOV AX, 10h ; AX adalah 10h
DEC AX ; Ax adalah Fh
CMP source, destMembandingkan isi dari source dengan dest.
Contoh : MOV AX, 10h ; AX adalah 10h
MOV BX, 11h ; BX adalah 11h
CMP AX, BX ; Compares AX adalah BX
Baris setelah CMP AX,BX biasanya instruksi “jump”. Jika kita ingin “jump” jika AX=BX,maka gunakanlah JE (Jump if equal) lalu “location” (alamat) (location dapat berupa offset)
setelah instruksi CMP. Jika kita ingin “jump” jika AX “tidak atau sama dengan BX,
gunakanlah JNE (Jump if not equal) lalu “location: setelah instruksi CMP instruction. Ada
beberapa kondisi “jump” yang akan di bahas di topik selanjutnya.
JMP location“JUMPS (loncat) ke lokasi XXX
Contoh : JMP 200h jump ke offset 200h
MOVSB atau MOVSW
“Move” (memindahkan, meng-copy isi) byte (MOVSB) atau word (MOVSW) dari DS:SI ke
Gimana sudah mulai pusing? Saya harap tidak, karena kita masuk ke bagian yang seru yaitu
“conditional jumps”. Sengaja saya buat bahasanya campuran karena ada beberapa bagian
yang enak sesuai bahasa aslinya. Kondisi “jumps” dibagi 2 macam yaitu
unsigned dan signed (conditional jumps).
Coba anda tebak apakah perbedaan antara Unsigned dan signed ?? bahas di forum yah
Nah yang bawah ini pasti anda sering menemukannya , tapi yang harus di cermati adalah JZ,JNZ, JA and JB
Tergantung instruksi sebelumnya (dalam hal ini instruksi CMP) value dari “zero flag”.
Maka pada JE (or JZ) nilai “zero flag” pasti di cari . jika di set (zeroflag=1) makaakan “jumps”, jika bukan tidak loncat. Ini sangat penting dalam reverse karena kita
dapat memodifikasi “zero flag”.
Unsigned conditional jumpsJA Jump if above
JAE Jump if above or equalJB Jump if below
JBE Jump is below or equal
JNA Jump if not above (same as JBE)
JNAE Jump if not above or equal (same as JB)
JNB Jump if not below (Same as JBE)
JNBE Jump if not below or equal (same as JA)
Signed conditional jumpsJG Jump if greater
JGE Jump if greater of equalJL Jump if less
JLE Jump if less or equal
JNG Jump if not greater (same as JLE)
JNGE Jump if not greater or equal (same as JGE)
JNL Jump if not lower (same as JGE)
JNLE Jump if not lower or equal (same as JG)
Conditional jump (dont matter if it's signed or not)
Pernah anda melihat dan bertanya apakah instruksi XOR itu? Apa gunanya? .
Pertama tama kita harus membahas tentang byte tapi jika bingung silahkan skip aja ,
sebuat byte yang konsisten terdiri dari 8 bits yang ber –value jika bukan 0 yah 1. Sebagai
contoh kita ambil “X” dan kita ubah ke bentuk binary:
X - 01011000
Bagaiman kita bisa tahu? Gampang buka tabel aja atau pake kalkulator, dari hec atau decubah ke binary
Kembali ke bitmanipulation instructions……….
Ada beberapa instruksi yang sering kita temukan dalam melakukan reverse suatu aplikasi
Antara lain
·XOR·Instruksi ini sangat penting, dan anda harus mengetahuinya
Saya akan coba jelaskan, kembali kecontoh “X”
Tahukah anda arti dari "XOR 88,65" dan bagaimana prosesnya . Angka 88 adalah nilai dec
dari huruf 'X' dan 65 nilai dec dari huruf 'A' (coba biasakan dari sekarang, tabel hex dan
dec akan saya sisipkan ke rar pack). Lihat tabel di bawah:
Ayo konsentrasi . Apa yang sebenarnya dilakukan oleh instruksi “xor”
Jika nilainya sama , maka menjadi 0, jika nilai berbeda nilai 1Contoh jelasnya :
00110101
------0110
Saya harap anda mulai ada sedikit pencerahan, lalu muncul pertanya jadi buat apa nih “ xor”itu ? Instruksi XOR sangat bermanfaat pada proses “encrytion”
Lihat ini
XOR 88,65 = 25
XOR 25,88 = 65
XOR 25,65 = 88
Mudahnya kita mendapat value original kembali.
Instruksi “xor” juga bermanfaat untuk merubah sesuatu menjadi nilai nol....Contohnya bagai
mana kita mengosongkan memory ? bisa dengan instruksi ini
Flags ber-value single bits yang berindikasi status . flag register pada 32bitCPUs adalah 32bit. Ada 32 flags, yang berbeda tetapi jangan khawatir. Yang
anda perlukan hanya 3 dalam reversing. Z-Flag, O-Flag dan C-Flag. Flaghanya pentanda saja seperti layaknya lampu lalu lintas. Hijau artinya : 'ok' dan
merah artinya 'not ok'. flag hanya bernilai '0' dan '1', berarti 'not set' atau'set'.
Z-Flag:o Z-Flag (zero flag) paling sering digunakan pada
cracking.hampir 90% penggunaannya . Dapat di set 0
atau 1 O-Flag:
o O-Flag (overflow flag) hanya 4% digunakan dalam
cracking .
C-Flag:o C- Fl ag ( Carr y f l ag) hanya di gunakan 1% dal amcr acki ng.
Bitmanipulation Instructions table
Sekian
Pengenalan Assembler dari saya mudah mudahan menambah wawasan anda .