首先,從程式開始就定義了一些變數r2,r6,r5,r4等,但是r6實際值為20,r5值為300。我們可能會考慮,如果不進行變數的定義而是直接使用數值,彙編是不是也是一樣的?現在我們簡單的修改一下程式的**如下:
#include int main(int argc, char** argv)
執行armcc new1b.c -o new1b.axf,然後使用ida開啟所生成的.o檔案,如下圖:
雖然最後生成可執行檔案的執行結果沒有發生變化,但是從彙編上分析的話會發現,程式開始時的暫存器入棧和賦值已經發生了變化,使用彙編**比較的話也有了較大的不同。可能很多人認為如果不影響結果幹嘛糾結在這些小的細節上呢?原因不難理解,非常簡單的程式是無所謂了,但是如果涉及到反編譯,則往往是**量比較大的程式,不注意這些小的問題可能引起其他**反編譯的困難,使用beyond compare比較也不至於一片紅。
因此,我們在反編譯時需要注意,看使用的是數值還是暫存器,如果使用的數值則可能是程式語句所使用的數值常量,如果使用的是暫存器則有可能使用的是已定義的變數。
反編譯例項2 補充2
前面反編譯的時候我們使用的是goto語句實現的,並簡單說明的變數的定義與否。但是這種跳轉是否可以使用for語句來實現呢?實現如下 include int main int argc,char argv return 0 使用ida開啟編譯過程生成的.o檔案,如下圖 發現彙編語句和原始彙編是一樣的,執...
反編譯bs2心得
bs2全稱是basic stamp 2微控制器,在數年前很受歡迎,因為其開發語言為basic,所有io埠功能相同,很容易上手。老的很多玩具,工控裝置都使用它來處理一些簡單邏輯,現在遇到公升級換代,就需要對這些 重新翻修,如果找不到當時開發資料,那就需要進行反編譯了。在之前,就遇到這樣的需求,通過半年...
安卓小菜鳥1 反編譯
第一步 準備好傢伙什兒 apktool1.5.2.tar.bz2 apktool install windows r05 ibot.tar dex2jar 0.0.9.15.zip dex2jar 0.0.9.15.zip csdn上有很多資源,就不提供鏈結了 第二步 解壓 其中前兩個記得要解壓到同...