反匯編的一些基本知識
在程序屆有一句名言:如果你能讀懂匯編,一切程序對你來說就是開源。
在程序屆有一句名言:如果你能讀懂匯編,一切程序對你來說就是開源。所以要抵達黑客層次,不熟練的掌握分析技巧那是不可能的。我們看看一些的工具和相關技巧,后續我們再看看一些高級方法該怎么用。
常用的工具一般需要執行三個步驟:
1,加載要反匯編的二進制文件;
2,從二進制文件中找到所有機器指令;
3,將指令轉換為匯編語句;通常第2步是一個難點,由于機器指令與通常的二進制數值無異,因此很容易把不是指令的數值認為是機器指令。為了盡可能降低步驟2的錯誤,反匯編算法常采用兩種模式,分別是線性反匯編和遞歸反匯編。
線性反匯編其實就是從頭走到尾,將所有二進制數值都認為是機器指令,然后將其轉換為匯編語句,我們常用的Objdum就是如此。這當然會產生問題,很顯然不可能所有二進制數值都是機器指令,因此這種做法容易將原本是數據的數值看做是指令。由此會帶來兩種錯誤,一種是將數值轉換成無效機器指令,一種更糟糕,數值正好對應了某條機器指令,于是給后面的分析帶來巨大的干擾.
接下來我們看看遞歸反匯編。它的基本思路是尋找程序的控制流,它首先從main等程序入口著手,然后先是線性,如果遇到jump等指令,它就會跳到jump對應的地址繼續反匯編。這種情況也容易出問題,因為程序的控制流很難追蹤,因為很多跳轉其實是隱性跳轉,也就是這種跳轉不會在二進制文件中給出具體地址,需要在運行時才能確認具體地址。
致芯科技可以對程序進行解密后進行反匯編,得到匯編代碼,我們是不能直接得到c語言的。一般只要懂匯編語言的工程師也懂C語言,那么就可以照著匯編語言寫成c語言。不過這個過程需要比較長的時間和耐心去做。
審核編輯:湯梓紅
-
開源
+關注
關注
3文章
3309瀏覽量
42471 -
反匯編
+關注
關注
1文章
29瀏覽量
10534 -
匯編代碼
+關注
關注
0文章
23瀏覽量
7548
原文標題:反匯編的一些基本知識
文章出處:【微信號:zhixinkeji2015,微信公眾號:芯片逆向】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論