1. 如何進行反編程
我們按照三種不同的分類,從多個角度闡述反編譯的基本過程。
如果按照反編譯技術實施的順序劃分,則可以分為7個階段,它們是:句法分析、語義分析、中間代碼生成、控制流圖生成、控制流分析、代碼生成。
如果按照實踐中的具體操作劃分,一般也可以分為7個不同的步驟,分別是:文件裝載,指令解碼,語義映射,相關圖構造,過程分析,類型分析和結果輸出等。
以逆向分析為目的,反編譯的各個階段並不是一個嚴格的一遍順序,而是存在著一些並行的模塊,並且也需要通過循環執行分析過程來針對某些特殊問題(例如非N分支代碼產生的間接跳轉指令)進行分析和恢復。
反編譯的處理過程,如果按功能區分,可以分為:前端、中端和後端三個部分。其實這種劃分方式是將上述兩種過程的階段進行合並,也就是將幾個反編譯器階段組合在一起。這樣劃分的好處是:通過設計不同的前端、中端和後端以實現針對多種源和目標的反編譯器。