Apa yang dimaksud dengan Dissambler

Dissambler : program yang mengubah kode mesin menjadi bahasa assembler

Disassembler adalah program komputer yang menerjemahkan bahasa mesin ke bahasa-operasi perakitan terbalik bahwa assembler. Sebuah disassembler berbeda dari Decompiler, yang menargetkan bahasa tingkat tinggi daripada bahasa assembly. Pembongkaran, output dari disassembler, sering diformat untuk manusia-dibaca daripada kesesuaian untuk input ke assembler, sehingga prinsipnya alat reverse-engineering.

Majelis bahasa kode sumber umumnya memungkinkan penggunaan konstanta dan komentar pemrogram. Ini biasanya dihapus dari kode mesin dirakit oleh assembler. Jika demikian, disassembler operasi pada kode mesin akan menghasilkan pembongkaran kurang konstanta ini dan komentar; output dibongkar menjadi lebih sulit bagi manusia untuk menafsirkan dari kode sumber asli dijelaskan. Beberapa disassemblers menggunakan informasi debugging simbolik hadir dalam objek file seperti ELF. Para Disassembler Interaktif memungkinkan pengguna manusia untuk membuat simbol mnemonik untuk nilai-nilai atau wilayah kode dalam sesi interaktif: pemahaman manusia diterapkan pada proses pembongkaran sering paralel kreativitas manusia dalam proses menulis kode.
Pembongkaran bukan ilmu pasti: Pada platform CISC dengan variabel-lebar instruksi, atau di hadapan diri-memodifikasi kode, adalah mungkin untuk program tunggal untuk memiliki dua atau lebih disassemblies wajar. Menentukan instruksi yang benar-benar akan ditemui selama menjalankan program mengurangi untuk masalah-unsolvable menghentikan terbukti.

Menulis disassembler yang menghasilkan kode yang bila dirakit, menghasilkan persis biner yang sama, adalah non-sepele, sering ada perbedaan. Namun, bahkan ketika pembongkaran sepenuhnya benar diproduksi, masalah tetap jika program ini harus dimodifikasi. Sebagai contoh, bahasa mesin instruksi jump yang sama dapat dihasilkan oleh kode perakitan yang melompat ke lokasi yang ditentukan (misalnya, untuk mengeksekusi kode tertentu), atau yang melompat oleh sejumlah byte tertentu (misalnya, untuk melewatkan sebuah cabang yang tidak diinginkan ). Disassembler tidak bisa tahu apa yang dimaksudkan, dan dapat menggunakan sintaks baik, menghasilkan pembongkaran yang mereproduksi biner asli. Namun, jika programmer ingin menambahkan instruksi antara instruksi jump dan tujuan, adalah perlu untuk memahami operasi program untuk menentukan apakah melompat harus absolut atau relatif, yaitu, apakah tujuan harus tetap di lokasi yang tetap, atau pindah sehingga untuk melewatkan kedua instruksi asli dan ditambahkan.

Disassembler A dapat berdiri sendiri atau interaktif. Sebuah disassembler berdiri sendiri, ketika dijalankan, menghasilkan sebuah file bahasa assembly yang dapat diperiksa, satu interaktif menunjukkan efek dari setiap perubahan pengguna membuat segera. Sebagai contoh, Disassembler awalnya mungkin tidak tahu bahwa bagian dari program ini sebenarnya kode, dan memperlakukannya sebagai data, jika pengguna menentukan bahwa itu adalah kode, kode dibongkar hasilnya ditunjukkan segera, memungkinkan pengguna untuk memeriksa dan mengambil lanjut aksi selama jangka yang sama.
Setiap debugger interaktif akan mencakup beberapa cara melihat pembongkaran program yang sedang debugged. Seringkali, alat pembongkaran yang sama akan dikemas sebagai Disassembler mandiri didistribusikan bersama dengan debugger. Sebagai contoh, objdump, bagian dari GNU binutils, berkaitan dengan gdb debugger interaktif.

Menarik lainnya

© 2023 Pengertian.Apa-itu.NET