編程原理
通常,編寫程式是利用高級語言如C,C++,Delphi等高級語言進行編程的,然後再經過編譯程式生成可以被計算機系統直接執行的檔案(機器語言)。反彙編即是指將這些執行檔案反編譯還原成彙編語言或其他語言。但通常反編譯出來的程式與原程式會存在些許不同,雖然執行效果相同,但程式代碼會發生很大的變化,要讀懂反彙編需要有紮實的高級語言編寫功底和彙編功底。
作用及方式
作用
有許多程式可以進行逆向操作即反編譯以求修改,例如Flash的檔案生成的SWF檔案,可以被反彙編成Flash原碼,但可以發現與原程式代碼發生了很大變化。
目前網路上的許多“免費軟體”,PSP PS NDS遊戲機的破解和蘋果iOS系統的越獄都跟反彙編息息相關。
靜態反彙編
靜態反彙編是從反彙編出來的程式清單上分析,從提示信息入手進行分析。目前,大多數軟體在設計時,都採用了人機對話方式。所謂人機對話,即在軟體運行過程中,需要由用戶選擇的地方,軟體即顯示相應的提示信息,並等待用戶按鍵選擇。而在執行完某一段程式之後,便顯示一串提示信息,以反映該段程式運行後的狀態,是正常運行,還是出現錯誤,或者提示用戶進行下一步工作的幫助信息。為此,如果我們對靜態反彙編出來的程式清單進行閱讀,可了解軟體的編程思路,以便順利破解該軟體,也就是我們常說的破解版即盜版。反彙編亦是外掛設計最重要的環節,可以說沒有反彙編就沒有外掛。 常用的靜態分析工具是W32DASM、PEiD、FileInfo、 Hex Rays Ida和HIEW等。
相關工具
反彙編工具如:OD、IDA Pro、radare2、DEBUG、C32等。
反彙編可以通過反彙編的一些軟體實現,比如DEBUG就能實現反彙編,當DEBUG檔案位置設定為-u時,即可實現反彙編。 而使用OD實現反彙編時,防毒軟體可能會報告有病毒與木馬產生,此時排除即可,且使用OD需要有紮實的基礎才能看懂。