完整APK原始碼分析步驟(一)
使用情景:當拿到一份不瞭解的原始碼時,如何快速對原始碼進行分析,瞭解其結構功能。
開發環境: Android studio ,keyMap為Eclipse
條件:原始碼可執行在手機上
1、編譯原始碼並執行,在手機上對原始碼的功能使用,瞭解實現的所有功能;
2、瀏覽一遍原始碼的類名稱和佈局檔名稱,見excel記錄不理解的英文名並翻譯;
3、檢視manifest.xml檔案,瞭解主要的Activity和其它server等,方便定位Activity,然後跳轉之首頁的Activity;
4、檢視Activity中方法和註釋,不懂的英文記得翻譯後記錄在excel中;
其實做完上述步驟,對原始碼的理解有時還會很亂,特別是程式碼量大的時候,下面是關於一些AS控制元件使用的技巧:
5、快速聯絡控制元件與控制元件名:
5.1手機連線電腦,並 在手機上開啟應用到需要分析的介面;
5.2開啟DDMS —> device —> 點選應用包名 —> 點選dump View圖示,然後等待截圖開啟相應介面(如下圖到編號3):
5.3我開啟的是相機的原始碼,截圖後的檢視如下:
編號4:手機上的應用檢視;
編號5:該UI介面的的layou層次結構;
編號6:UI佈局屬性;
點選4介面上的控制元件,在編號5上顯示該控制元件所在的佈局,在編號6上顯示該控制元件的屬性資訊;
6、通過上面步驟,可快速查詢都控制元件id或其它String文字,接下來就是要通過這些屬性資訊快速查詢到相關的佈局和所在的類:
6.1複製控制元件ID,進入Android studio中,快捷鍵Ctrl + H(或者從工具欄edit—> find —> find in path),例如我點選快門檢視,得到id為shutter_button,操作如下圖:
6.2如上圖,填寫id後,對id搜尋進行設定後,點選preview檢視搜尋結果,如下圖:
如圖,點選上面紅框內程式碼,在下部文框內顯示改程式碼所在檔案,確定所要程式碼後雙擊程式碼後find跳轉到該檔案。
通過Ctrl + H可以快速在工程內找到呼叫和定義該String、控制元件的位置。