什么是反匯編器
編輯反匯編器是一種計算機程序即翻譯機器語言成匯編語言-the逆操作,一個的匯編。反匯編器與反編譯器不同,反編譯器針對的是高級語言而不是匯編語言。反匯編是反匯編器的輸出,其格式通常是為了人類可讀性而不是適合于匯編器的輸入,因此主要是一種逆向工程工具。
匯編語言源代碼通常允許使用常量和程序員注釋。這些通常由匯編程序從組裝的機器代碼中刪除。如果是這樣,對機器代碼進行操作的反匯編器將產生缺少這些常量和注釋的反匯編;與原始帶注釋的源代碼相比,反匯編的輸出對于人類來說更難以解釋。一些反匯編程序提供了一個內置的代碼注釋功能,其中生成的輸出通過關于被調用API函數或被調用函數的參數的注釋來豐富。一些反匯編程序利用目標文件(如ELF)中存在的符號調試信息。例如,國際開發署允許人類用戶在交互式會話中為代碼的值或區域組成助記符:應用于反匯編過程的人類洞察力通常與代碼編寫過程中的人類創造力平行。
在具有可變寬度指令的CISC平臺上,多個反匯編可能是有效的。反匯編器不處理在執行過程中變化的代碼。
反匯編程序的例子
編輯反匯編程序可以是獨立的,也可以是交互式的。一個獨立的反匯編器在執行時會生成一個可以檢查的匯編語言文件;交互式顯示用戶立即進行的任何更改的效果。例如,反匯編器最初可能不知道程序的某個部分實際上是代碼,而將其視為數據;如果用戶指定它是代碼,則立即顯示生成的反匯編代碼,允許用戶檢查它并在同一次運行期間采取進一步行動。
任何交互式調試器都將包含某種方式來查看被調試程序的反匯編。通常,同一個反匯編工具會打包為一個獨立的反匯編程序,與調試器一起分發。例如,GNUBinutils的一部分objdump與交互式調試器gdb相關。
- 二進制忍者
- 調試
- 交互式反匯編程序(IDA)
- 指導
- 料斗拆卸器
- NetwideDisassembler(Ndisasm),NetwideAssembler(NASM)的伴侶。
- OLIVER(CICS交互式測試/調試)包括Assembler、COBOL和PL/1的反匯編程序
- OllyDbg是一個32位匯編級分析調試器
- 雷達2
- SIMON(批處理交互式測試/調試)包括匯編器、COBOL和PL/1的反匯編器
- Sourcer,1990年代由VCommunications開發的用于DOS、OS/2和Windows的注釋16位/32位反匯編程序
反匯編器和模擬器
編輯動態反匯編器可以合并到仿真器或管理程序的輸出中,以逐行“跟蹤”任何已執行機器指令的實時執行情況。在這種情況下,除了包含反匯編機器代碼的行之外,還可以顯示每個單獨指令導致的寄存器和/或數據更改(或“狀態”的任何其他更改,例如條件代碼)拆解說明的旁邊或下方。這為最終的問題解決提供了極其強大的調試信息,盡管結果輸出的大小有時可能非常大,尤其是如果對整個程序的執行處于活動狀態。OLIVER從1970年代初期開始提供這些功能,作為其CICS的一部分調試產品提供,現在已被整合到Compuware的XPEDITER產品中。
長度分解器
編輯長度反匯編器,也被稱為長度拆裝發動機(LDE),是一種工具,給定的字節(指令)序列,輸出由解析的指令取出的字節數。x86架構的著名開源項目包括ldisasm、Tinyx86LengthDisassembler和用于x86-64的ExtendedLengthDisassemblerEngine。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/127533/