Teks tersebut memberikan penjelasan dasar-dasar bahasa assembly dan perintah-perintah penting yang sering digunakan dalam cracking, meliputi penjelasan register, contoh perintah dasar seperti ADD, SUB, MOV, dan penjelasan teknik patching.
Dokumen tersebut menjelaskan tentang semaphore, yaitu primitive sinkronisasi yang lebih tinggi dari lock untuk mengatur urutan eksekusi thread. Semaphore beroperasi dengan menggunakan counter dan antrian thread, dimana operasi wait() akan menurunkan counter sedangkan signal() akan menaikkan counter dan membangunkan thread di antrian. Nilai awal semaphore menentukan jumlah thread yang dapat mengakses resource secara bersamaan.
Dokumen tersebut membahas tentang set instruksi (instruction set) yang merupakan kumpulan lengkap instruksi yang dapat dimengerti oleh CPU. Terdapat penjelasan mengenai jenis-jenis instruksi, operand, operasi, teknik pengalamatan, serta format set instruksi.
Algoritma adalah deskripsi langkah-langkah pelaksanaan suatu proses yang terdiri dari runtunan instruksi, pemilihan jalur, dan pengulangan. Terdapat tiga komponen utama instruksi algoritma yaitu pernyataan penugasan, input/output, dan pengendalian alur. Algoritma dapat ditulis dalam berbagai bahasa pemrograman.
Dokumen tersebut menjelaskan tentang semaphore, yaitu primitive sinkronisasi yang lebih tinggi dari lock untuk mengatur urutan eksekusi thread. Semaphore beroperasi dengan menggunakan counter dan antrian thread, dimana operasi wait() akan menurunkan counter sedangkan signal() akan menaikkan counter dan membangunkan thread di antrian. Nilai awal semaphore menentukan jumlah thread yang dapat mengakses resource secara bersamaan.
Dokumen tersebut membahas tentang set instruksi (instruction set) yang merupakan kumpulan lengkap instruksi yang dapat dimengerti oleh CPU. Terdapat penjelasan mengenai jenis-jenis instruksi, operand, operasi, teknik pengalamatan, serta format set instruksi.
Algoritma adalah deskripsi langkah-langkah pelaksanaan suatu proses yang terdiri dari runtunan instruksi, pemilihan jalur, dan pengulangan. Terdapat tiga komponen utama instruksi algoritma yaitu pernyataan penugasan, input/output, dan pengendalian alur. Algoritma dapat ditulis dalam berbagai bahasa pemrograman.
Perintah dasar assembler seperti MOV, INT, Q, H, R, A, N, RCX, RIP, W, G, T, dan U digunakan untuk mengisi register, memanggil subrutin, keluar dari debugger, melakukan operasi matematika heksadesimal, melihat isi register, menulis program, menjalankan program, melacak program satu baris demi baris, dan melihat program yang ditulis. Debugger seperti DEBUG.COM digunakan untuk menjalankan assembler dan membuat program
Dokumen tersebut membahas tentang karakteristik dan elemen-elemen instruksi mesin, representasi, jenis, dan operasi set instruksi, serta metode pengalamatan yang umum digunakan.
Dokumen tersebut membahas tentang lokasi operand, hasil pemrosesan instruksi, dan urutan data little-endian dan big-endian. Juga dibahas delapan jenis instruksi beserta contohnya seperti instruksi aritmetika, logika, transfer kontrol, I/O, manipulasi string dan translate.
NFA dan DFA merupakan dua jenis mesin pengenal pola yang berbeda. NFA bersifat non-deterministik sehingga satu keadaan dapat memiliki lebih dari satu keadaan berikutnya, sedangkan DFA bersifat deterministik dengan satu keadaan memiliki satu keadaan berikutnya. NFA lebih mudah dibuat dibanding DFA namun setiap NFA dapat diubah menjadi DFA.
Program ini membahas tentang mode pengalamatan pada mikroprosesor. Terdapat beberapa mode pengalamatan seperti direct, indirect, immediate, register addressing, register indirect addressing, displacement addressing, dan stack addressing. Setiap mode memiliki cara yang berbeda untuk mentransfer atau mengakses data.
PDA (Push Down Automata) merupakan mesin otomata yang memiliki memori tidak terbatas berupa stack. PDA dapat menerima bahasa bebas konteks dan direpresentasikan dengan 7 tupel yang mencakup state, simbol input, simbol stack, fungsi transisi, state awal, state akhir, dan simbol awal stack. PDA melakukan transisi dengan membaca input atau tanpa membaca input serta menambah atau mengurangi isi stack.
Dokumen tersebut membahas karakteristik dan jenis-jenis instruksi mesin. Instruksi mesin terdiri dari opcode, operand sumber, dan operand hasil. Ada beberapa jenis instruksi seperti pengolahan data, penyimpanan data, pemindahan data, dan kontrol aliran eksekusi. Instruksi dapat mengakses operand dari memori, register, atau perangkat I/O menggunakan berbagai teknik pengalamatan seperti langsung, tidak langsung, register, dan
P 2 Konsep & Notasi Bahasa - Teknik Kompilasiahmad haidaroh
Grammar G didefinisikan sebagai pasangan 4 tupel yang terdiri dari himpunan simbol terminal, non terminal, simbol awal, dan produksi. Noam Chomsky mengklasifikasikan 4 tipe grammar berdasarkan bentuk ruas kiri dan kanan produksinya. Derivasi adalah proses menurunkan simbol non terminal menjadi terminal sesuai aturan produksi.
1. Dokumen tersebut membahas tentang algoritma, bahasa pemrograman C++, dan konsep-konsep dasar pemrograman seperti tipe data, variabel, operator, dan debugging.
2. C++ dikembangkan pada tahun 1983 sebagai bahasa hibrid yang mendukung pemrograman berorientasi objek namun tetap kompatibel dengan C.
3. Konsep-konsep kunci dalam C++ antara lain tipe data integer dan real, variabel, operator aritmatika dan relasional
Perintah dasar assembler seperti MOV, INT, Q, H, R, A, N, RCX, RIP, W, G, T, dan U digunakan untuk mengisi register, memanggil subrutin, keluar dari debugger, melakukan operasi matematika heksadesimal, melihat isi register, menulis program, menjalankan program, melacak program satu baris demi baris, dan melihat program yang ditulis. Debugger seperti DEBUG.COM digunakan untuk menjalankan assembler dan membuat program
Dokumen tersebut membahas tentang karakteristik dan elemen-elemen instruksi mesin, representasi, jenis, dan operasi set instruksi, serta metode pengalamatan yang umum digunakan.
Dokumen tersebut membahas tentang lokasi operand, hasil pemrosesan instruksi, dan urutan data little-endian dan big-endian. Juga dibahas delapan jenis instruksi beserta contohnya seperti instruksi aritmetika, logika, transfer kontrol, I/O, manipulasi string dan translate.
NFA dan DFA merupakan dua jenis mesin pengenal pola yang berbeda. NFA bersifat non-deterministik sehingga satu keadaan dapat memiliki lebih dari satu keadaan berikutnya, sedangkan DFA bersifat deterministik dengan satu keadaan memiliki satu keadaan berikutnya. NFA lebih mudah dibuat dibanding DFA namun setiap NFA dapat diubah menjadi DFA.
Program ini membahas tentang mode pengalamatan pada mikroprosesor. Terdapat beberapa mode pengalamatan seperti direct, indirect, immediate, register addressing, register indirect addressing, displacement addressing, dan stack addressing. Setiap mode memiliki cara yang berbeda untuk mentransfer atau mengakses data.
PDA (Push Down Automata) merupakan mesin otomata yang memiliki memori tidak terbatas berupa stack. PDA dapat menerima bahasa bebas konteks dan direpresentasikan dengan 7 tupel yang mencakup state, simbol input, simbol stack, fungsi transisi, state awal, state akhir, dan simbol awal stack. PDA melakukan transisi dengan membaca input atau tanpa membaca input serta menambah atau mengurangi isi stack.
Dokumen tersebut membahas karakteristik dan jenis-jenis instruksi mesin. Instruksi mesin terdiri dari opcode, operand sumber, dan operand hasil. Ada beberapa jenis instruksi seperti pengolahan data, penyimpanan data, pemindahan data, dan kontrol aliran eksekusi. Instruksi dapat mengakses operand dari memori, register, atau perangkat I/O menggunakan berbagai teknik pengalamatan seperti langsung, tidak langsung, register, dan
P 2 Konsep & Notasi Bahasa - Teknik Kompilasiahmad haidaroh
Grammar G didefinisikan sebagai pasangan 4 tupel yang terdiri dari himpunan simbol terminal, non terminal, simbol awal, dan produksi. Noam Chomsky mengklasifikasikan 4 tipe grammar berdasarkan bentuk ruas kiri dan kanan produksinya. Derivasi adalah proses menurunkan simbol non terminal menjadi terminal sesuai aturan produksi.
1. Dokumen tersebut membahas tentang algoritma, bahasa pemrograman C++, dan konsep-konsep dasar pemrograman seperti tipe data, variabel, operator, dan debugging.
2. C++ dikembangkan pada tahun 1983 sebagai bahasa hibrid yang mendukung pemrograman berorientasi objek namun tetap kompatibel dengan C.
3. Konsep-konsep kunci dalam C++ antara lain tipe data integer dan real, variabel, operator aritmatika dan relasional
El documento anuncia una reunión con padres de familia en la Escuela Primaria "Benito Juárez" para discutir las evidencias de redes de los alumnos de segundo ciclo (1o-2o-3o grado) y tercer ciclo (4o-5o-6o grado), incluyendo las evidencias de la monitora de sexto grado.
Este documento presenta el plan de trabajo cuatrimestral de la maestra Elba Gretchen Pérez Zúñiga para atender a 3 alumnos con problemas de desempeño académico. Describe los problemas detectados en cada alumno, su nivel actual de desempeño y las actividades planeadas para trabajar con ellos durante el cuatrimestre en las áreas de lectura, escritura, matemáticas y desarrollo socioemocional. El objetivo es que los alumnos mejoren sus habilidades y se integren plenamente a la dinámica
Section A consists of 2 compulsory questions worth 50 marks. Section B consists of 4 questions where you choose 2 worth 50 marks each. The exam is 3 hours closed book with a total of 100 marks. You must score at least 50 marks to pass. Bring your student ID, pens, turn off your phone, and come with enthusiasm and knowledge. Write questions clearly with numbers, use titles, avoid essays, and include examples. Good presentation can score high marks. Focus on key words and highlight them in your answers. Make sure to study topics like the marketing concept, market segmentation, marketing research methods, consumer buying behavior, products, and direct marketing databases. Get proper rest before the exam and don't be late.
Dokumen tersebut membahas tentang Titin Martini S, S.Pd sebagai dosen yang menulis artikel tentang apa itu komputer, organisasi komputer, dan arsitektur komputer. Dokumen ini juga menjelaskan sejarah perkembangan komputer dari masa ke masa."
The document outlines the tasks for an electrical panel project from March 8th to 29th. It involves building and testing hardware components, selecting contactors, push buttons, and relays based on characteristics like cost and capacity. Panel designs will be created in AutoCAD and SolidEdge, with models designed and options considered for mounting in the panel.
The document outlines the progress made from February 15th to March 7th on a project to design a circuit to accurately measure current and voltage. It discusses:
1. Designing current and voltage measurement circuits, converting analog samples to digital values, and using curve fitting for accurate current measurements.
2. Designing the main power circuit and selecting a fault current limiting resistor.
3. The progress made in programming, simulation, and hardware implementation over time.
The document discusses the design and simulation of several components for a relay menu including:
1. Interfacing an LCD and keyboard
2. Design and simulation of a zero crossing detector (ZCD)
3. Design and simulation of measuring voltage magnitude
Microcontroller based mho relay for distance protection (1)mohan_K_M
This document discusses the design of a microcontroller-based directional Mho relay. It begins with an introduction to power system protection and classifications of relays. It then focuses on Mho relays, which are distance relays with an inherent directional element. The document outlines the requirements and block diagram for the microcontroller-based Mho relay, including an ATmega 328 microcontroller, current and voltage sensors, zero crossing detector, and LCD display. It provides time targets for the project, including simulating and designing power factor measurement by mid-February and building and testing the relay hardware by late March.
Rahul Bajaj is the Chairman and Managing Director of the Bajaj Group, an Indian multinational conglomerate company. He took over the company in 1965 and established it as one of India's leading companies through expanding factories and investing in research and development. Under his leadership, Bajaj Auto became India's top scooter manufacturer and launched new motorcycles like the Chetak and Pulsar that were successful. He has received many honors and awards for his contributions, including being named Businessman of the Year. The Bajaj Group now consists of over 25 companies across various industries.
This document describes a 1Ф PWM sine wave inverter project. It focuses on converting DC to pure AC sine wave output. The methodology uses low voltage DC to low voltage AC conversion followed by step up to high voltage AC. The key blocks include a sine wave generator, triangle wave generator, MOSFET bridge, driver and filter to generate a pure sine wave output. Inverters are useful for powering devices from batteries or solar panels through AC power.
Created by Mohan K M, Ganesh C, Yerriswamy
Technology used: Microsoft power point, Excel, Multisim, Proteus, AutoCAD, Solid edge, Arduino.
As a final year project in PESIT Bangalore
Skema register data dalam prosesor x86 meliputi register umum seperti AX, BX, CX, DX yang terbagi menjadi bagian 8 bit dan 16 bit. Terdapat juga register khusus seperti segment register, pointer register, dan status register. Algoritma perpindahan data dalam bahasa rakitan melibatkan duplikasi nilai antara register melalui instruksi MOV. Mekanisme pendeklarasian data mencakup tipe data seperti byte, word, double word beserta panjangnya di memori.
Teks tersebut membahas karakteristik dan jenis-jenis instruksi mesin. Beberapa poin penting yang dijelaskan antara lain:
- Instruksi mesin menentukan operasi dan fungsi CPU. Kumpulan fungsi yang dapat dieksekusi CPU disebut set instruksi CPU.
- Karakteristik instruksi mesin meliputi elemen-elemen, representasi, jenis-jenis instruksi, penggunaan alamat, dan rancangan set instruksi.
- Terdapat berbagai
Dokumen tersebut membahas tentang jenis-jenis operator dasar dalam pemrograman komputer seperti operator aritmatika, logika, penugasan, bitwise, increment/decrement, dan relasi beserta contoh penggunaannya.
Dokumen tersebut membahas karakteristik dan jenis-jenis instruksi mesin. Secara ringkas, instruksi mesin menentukan operasi CPU dan fungsinya. Terdapat beberapa elemen penting instruksi mesin seperti kode operasi, operand sumber dan hasil, serta alamat instruksi berikutnya. Instruksi mesin juga memiliki berbagai jenis seperti pengolahan data, penyimpanan data, kontrol aliran eksekusi, serta berbagai mode pengalamatan operand
modul ini berisi praktikum untuk instruksi dasar pembuatan ladder diagram dengan program syswin untuk mata diklat mengoperasikan sistem kendali elektronik
Program mikrokontroler dapat dibuat menggunakan bahasa pemrograman apa pun dan harus dikompilasi menjadi file BIN atau HEX sebelum diunggah ke mikrokontroler. Setelah diunggah, mikrokontroler akan menjalankan program tersebut, dan pengujian serta evaluasi harus dilakukan untuk memastikan program berjalan dengan benar.
Program mengisi register Y dengan melakukan beberapa operasi aritmatika dan logika terhadap register dan memori. Register Y akhirnya berisi 20 setelah melalui proses LOAD, ADD, SUB, MPY, dan DIV.
Tutorial Turbo Pascal 7.0 terdiri dari sembilan modul yang mencakup pengenalan Turbo Pascal, pengaturan layar, input-output, tipe data, variabel, struktur program dasar dan kompleks, serta perintah-perintah dasar Turbo Pascal.
Dokumen tersebut membahas struktur kondisi IF, IF-ELSE, dan Nested-IF beserta contoh penerapannya dalam algoritma dan flowchart. Dibahas pula cara kerja dan penulisan masing-masing struktur kondisi tersebut.
Tutorial ini membahas struktur algoritma runtunan. Runtunan adalah struktur dasar yang berisi rangkaian instruksi yang diproses secara sekuensial dari awal hingga akhir. Tutorial ini menjelaskan konsep dasar runtunan, contoh-contoh soal runtunan, dan cara mengimplementasikan runtunan dalam pseudocode, flowchart, dan bahasa pemrograman Java.
Buku ini merupakan referensi dan tutorial bahasa assembly. Menguraikan sistem bilangan, komponen CPU seperti register umum dan khusus, serta penjelasan mengenai bahasa assembly secara umum. Memberikan contoh kode dan penjelasan tentang konsep dasar bahasa assembly seperti memori, variabel, instruksi, dan kontrol alur program.
Untuk memasukkan instruksi dan kata-data kedalam memori SAP-1 kita harus menggunakan kode tertentu yang dapat ditafsirkan oleh komputer. Tabel 2 memperlihatkan kode yang dipakai dalam SAP-1. Bilangan 0000 mewakiliki LDA, 0001 untuk ADD, 0010 untuk SUB, 1110 untuk OUT, dan 1111 untuk HLT. Karena kode-kode ini memberitahu kepada komputer tentang operasi yang harus dilaksanakan. Maka kode yang bersangkutan disebut kode operasi (operation code) disingkat opcode.
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 )