反編譯bs2心得

2021-05-27 19:29:05 字數 633 閱讀 3592

bs2全稱是basic stamp 2微控制器,在數年前很受歡迎,因為其開發語言為basic,所有io埠功能相同,很容易上手。老的很多玩具,工控裝置都使用它來處理一些簡單邏輯,現在遇到公升級換代,就需要對這些**重新翻修,如果找不到當時開發資料,那就需要進行反編譯了。在之前,就遇到這樣的需求,通過半年的分析,終於掌握了這些檔案的特點,並非常順利的逆向得到5個**的原始碼,通過一系列的工作,有了如下心得:

1,有需求的就是有價值的,bs2**雖然現在很少見,但對它進行decode的需求還是有的,特別是別人沒有關注的,那就放手去做,把它做透,現在能夠做到看到bin位元組就能猜出源**大概是啥樣的

2,反編譯過程就是對編譯原理的逆向思維,每個語句的編譯有特定的模式,最終生成原始碼的過程,就是模式匹配,很容易通過**完成,但前提是要摸清規則

3,對編譯器進行跟蹤,分析每句的處理過程,對輸入輸出進行監控,關聯起來,以此來獲取更多資訊,這樣的辦法屢試不爽,特別是複雜問題的分析上,比如還原乙個演算法中的複雜公式

4,充分利用工具,並不斷創造工具,通過系統的反編譯過程,生成了一系列方便後期使用的工具,比如各種編碼的轉換,**片段的編譯,自動脫殼指令碼,檔案比對,bs2的eeprom內的bin檔案分析,obj檔案分析,文法解析器,微控制器模擬器,串列埠模擬器等,大大方便了之後的開發過程,並提公升了自己各方面的能力

反編譯例項2 補充2

前面反編譯的時候我們使用的是goto語句實現的,並簡單說明的變數的定義與否。但是這種跳轉是否可以使用for語句來實現呢?實現如下 include int main int argc,char argv return 0 使用ida開啟編譯過程生成的.o檔案,如下圖 發現彙編語句和原始彙編是一樣的,執...

反編譯例項2補充1

首先,從程式開始就定義了一些變數r2,r6,r5,r4等,但是r6實際值為20,r5值為300。我們可能會考慮,如果不進行變數的定義而是直接使用數值,彙編是不是也是一樣的?現在我們簡單的修改一下程式的 如下 include int main int argc,char argv 執行armcc ne...

如何利用dex2jar反編譯APK

2找到我們準備測試用的apk,並將 字尾.apk改為.zip 3將test.zip解壓,並檢視目錄,找到classes.dex 4並將這個檔案拷至dex2jar工具存放目錄下 5開啟控制台,使用cd指令進入到dex2jar工具存放的目錄下,如圖 6進入到dex2jar目錄下後,輸入 dex2jar....