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

51單片機反匯編軟件推薦
單片機反匯編器有哪些?
在反匯編中怎么學習反匯編算法?
變頻電源的一些主要的基本知識
51單片機反匯編軟件

評論