android混淆代碼bug跟蹤

 

混淆代碼bug跟蹤

一.   代碼混淆的意義

代碼混淆的一個主要的目的是爲了能夠保證代碼的安全性:我們的代碼發佈出去以後,有的用戶可能會使用某些反編譯工具查看我們的代碼,爲了避免這樣的行爲,故有代碼混淆。

代碼混淆以後,原有代碼的包名,類名和方法名會被修改。

二.   反編譯工具介紹

Android平臺目前常用的反編譯工具主要是:smali這個jar包,其他的工具基本上是對該工具的包裝,這裏有一個比較便捷的工具包dex2jar,該工具可以直接將apk包中的dex文件轉換成jar文件,這樣我們就可以使用jd-gui這樣的工具查看代碼了。

三.   問題定位

問題的定位是比較複雜的,基本的思路是

1.       準備:錯誤日誌、mapping文件、被混淆的apk文件、源代碼

2.       反編譯:使用dex2jar反編譯apk包中的dex文件,之後使用jd-gui打開

3.       進反編譯的代碼:根據錯誤日誌,在jd-gui中找到相應的錯誤位置。(這裏強調使用反編譯的代碼定位錯誤日誌主要考慮以下幾點原因:a.重名的方法比較多,反編譯的代碼可以提供二外的信息【參數的個數和類型】;b.便於堆棧的追溯)

4.       根據上一步中的定位,使用mapping文件迅速定位到源碼位置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章