反彙編器

反彙編器 （ disassembler ） 是一種將機器語言轉換爲彙編語言的計算機程序 — — 這與彙編器的目的相反 。 反彙編器與反編譯器不同 ， 反編譯器的目標是高級語言而非彙編語言 。 反彙編器的反彙編輸出通常格式化爲適合人類閱讀 ， 而非用作彙編器的輸入源 ， 因此它主要是一個逆向工程工具 。 彙編語言源代碼通常允許使用常量和程序員註釋 ， 而這些通常會在彙編器彙編的機器語言中被移除 。 因此 ， 以機器代碼爲基礎完成的反彙編結果將沒有這些常量和註釋 ， 閱讀輸出結果將比閱讀源代碼更有難度 。 一些反彙編器提供了內置的代碼註釋功能 ， 其生成的輸出增補了有關被調用API函數或被調用函數參數的註釋 。 一些反彙編器會利用對象文件 （ 例如ELF ） 中存在的信息 。 例如 ， IDA允許人類用戶在交互式會話中爲代碼的值或區域標記助記符號 。 反彙編不是一門精準科學 ： 在有可變寬度指令的複雜指令集 （ CISC ） 平臺上 ， 使用級編程或存在程序自修改代碼時 ， 單個程序可能有兩個或多個合理的反彙編結果 。 程序在運行期間決定實際執行哪個指令被歸約到停機問題 ， 這是已知無法解決的問題 。