posting psoul yang luar biasa menjawab pertanyaan Anda sehingga saya tidak akan meniru pekerjaan baiknya, tetapi saya merasa itu akan membantu untuk menjelaskan mengapa ini sekaligus merupakan pertanyaan yang benar-benar valid tetapi juga sangat konyol. Bagaimanapun, ini adalah tempat untuk belajar, bukan?
Program komputer modern diproduksi melalui serangkaian konversi, dimulai dengan input dari badan teks yang dapat dibaca manusia (disebut "kode sumber") dan diakhiri dengan tubuh instruksi yang dapat dibaca komputer (disebut sebagai alternatif "biner" atau "mesin" kode").
Cara komputer menjalankan seperangkat instruksi kode mesin pada akhirnya sangat sederhana. Setiap tindakan yang dapat dilakukan prosesor (mis., Membaca dari memori, menambahkan dua nilai) diwakili oleh kode numerik. Jika saya katakan kepada Anda bahwa angka 1 berarti berteriak dan angka 2 berarti cekikikan, dan kemudian mengangkat kartu dengan 1 atau 2 pada mereka mengharapkan Anda untuk berteriak atau terkikik sesuai, saya akan menggunakan apa yang pada dasarnya adalah sistem yang sama yang digunakan komputer mengoperasikan.
File biner hanyalah seperangkat kode-kode itu (biasanya memanggil "kode op") dan informasi ("argumen") yang digunakan oleh kode op.
Sekarang, bahasa assembly adalah bahasa komputer di mana setiap kata perintah dalam bahasa tersebut mewakili tepat satu op-code pada prosesor. Ada terjemahan 1: 1 langsung antara perintah bahasa assembly dan kode-prosesor. Inilah mengapa perakitan kode untuk prosesor x386 berbeda dari perakitan kode untuk prosesor ARM.
Pembongkaran hanyalah ini: sebuah program membaca biner (kode mesin), mengganti op-kode dengan perintah bahasa assembly yang setara, dan menampilkan hasilnya sebagai file teks. Penting untuk memahami ini; jika komputer Anda dapat membaca biner, maka Anda dapat membaca biner juga, baik secara manual dengan tabel kode-op di tangan Anda (ick) atau melalui disassembler.
Disassembler memiliki beberapa trik baru dan semuanya, tetapi penting untuk dipahami bahwa disassembler pada akhirnya adalah mekanisme pencarian dan penggantian. Itulah sebabnya setiap EULA yang melarangnya pada akhirnya menghembuskan udara panas. Anda tidak dapat sekaligus mengizinkan komputer membaca data program dan juga melarang komputer membaca data program.
(Jangan salah paham, ada upaya untuk melakukannya. Mereka berfungsi sebaik DRM pada file lagu.)
Namun, ada peringatan untuk pendekatan pembongkaran. Nama variabel tidak ada; hal seperti itu tidak ada pada CPU Anda. Panggilan perpustakaan membingungkan sekali dan seringkali membutuhkan pembongkaran binari lebih lanjut. Dan kebaktian sulit sekali dibaca dalam kondisi terbaik.
Kebanyakan programmer profesional tidak bisa duduk dan membaca bahasa rakitan tanpa sakit kepala. Bagi seorang amatir, itu tidak akan terjadi.
Bagaimanapun, ini adalah penjelasan yang agak terlalu jelas, tapi saya harap ini membantu. Setiap orang dapat merasa bebas untuk memperbaiki salah saji di pihak saya; sudah lama. ;)