記一次APP脫殼重打包過程
小夥伴分享了一個開車軟體,但是有播放次數限制。對此小夥伴放言要制裁它,無奈APP加固了。
咳咳,本著學(wei)習(le)研(fu)究(li)的態度,嘗試著脫殼並重打包。
為證清白,伸出雙手,上操作。
右鍵直接解壓APK,查看特徵是360加固:
使用apktool工具反編譯APK作為我們的工程目錄(能成功運氣還不錯):
總結下大致思路:
脫殼拿到DEX --- 替換smali源碼 --- 修復AndroidManifest.xml --- 重打包 --- 簽名運行
一、脫殼獲取DEX文件
看特徵是360加固,用我之前的方法脫之(http://bbs.pediy.com/thread-219227.htm),拿到兩個dex,分別改名classes.dex,classes2.dex。
使用baksmali反編譯,由於是兩個dex,分別修改下目錄名,並替換:
classes.dex -> smali/
classes2.dex -> smali_classes2/
二、修復AndroidManifest.xml
修復AndroidManifest.xml,修改內容包括還原application入口,主activity,刪除無用的組件。
1、 查看smali,結合APP包名,確定原application類為
2、修改」 application」節點」android:name」:
改為
刪除屬性「android:protect」
3、修改主activity 的 「.DEFAULT」為「.LAUNCHER」
4、刪除所有「com.stub.stub*」的組件。
如:
三、重打包、並簽名運行
修改替換後,我們得到以下目錄:
使用apktool打包試試,打包成功了(哦也)。
簽名完、安裝啟動APP看看情況。
果然,啟動就閃退了。(果然考駕照沒那麼簡單)
現在,咱們要確定是什麼原因造成了閃退,最直接的方法就是動態調試APP。
四、調試APP
使用IDEA + smalidea調試APP(參考http://www.52pojie.cn/thread-502219-1-1.html)。
那麼下段點-> F8->F7->下段點 …… 不斷跟蹤代碼
最終確定退出的地方:
由於咱們刪除了殼的相關代碼,這裡就找不到com.stub.StubApp類了,所以刪除之。
重新打包安裝,運行成功!
嘿嘿,學(xing)習(fu)到(sheng)此(huo)結(lai)束(le)。
總結:這次重打包還是挺簡單的,沒有遇到反編譯工具對抗,簽名校驗,native onCreate等,算是運氣不錯。樣本就不放了,怕(liu)被(zhe)河(si)蟹(yong)。
本文由看雪論壇 DanceBird 原創 轉載請註明來自看雪社區
推薦閱讀: