記一次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
原理:
參考:https://bbs.pediy.com/thread-219227.htm
dex檔案在ART上執行需要轉換為OAT格式,因此殼在還原始碼時少不了要將解密後的DEX檔案利用dex2oat進行還原。
修改4.4的原始碼art/dex2oat.cc編譯,做個虛擬機器脫。
一、編譯Android原始碼啟動生成的映象檔案
生成的映象檔案:
然後將生成的映象檔案拷貝到AVD system directory對應目錄下面,通過Android模擬器啟動
二、建立AVD system directory路徑:
路徑型別:xxx/sdk/system-images/android-apiLevel/variant/arch/
真實路徑xxx/sdk/system-images/android-19/default/armeabi-v7a
相關資料:https://developer.android.com/studio/run/emulator-commandline.html?hl=zh-cn
三、通過AVD Manager建立Android 模擬器,注意選擇你建立 system image
四、啟動Android模擬器
在Android莫模擬器裝上加固的APP,執行一下,觀察app目錄下的/data/data/packagename/.jiagu資料夾下就有還原的dex檔案了
相關資料:https://developer.android.com/studio/run/managing-avds.html?hl=zh-cn
[原創]分享一個360加固脫殼模擬器(2017/07/17更新)
前段時間由於工作需要,需要對一個360加固後的APK進行脫殼,網上查了一些相關資料,發現一篇論壇裡前輩寫的帖子《360加固成功脫殼》。
結合自己對ART機制的瞭解,dex檔案在ART上執行需要轉換為OAT格式,因此殼在還原始碼時少不了要將解密後的DEX檔案利用dex2oat進行還原。
所以覺得這種脫殼方法很有可行性。無奈附件中的dex2oat怎麼也執行不起來(估計人品不好),所以乾脆自己修改4.4的原始碼編譯,做個虛擬機器脫。
下載編譯原始碼的帖子很多,過程這兒就不講了,直接上成果。修改原始碼部分如下(art/dex2oat.cc):
(大意就是將還未轉換的dex檔案輸出,因為360存在.jiagu目錄下,因此作為過濾條件)
修改完原始碼編譯,提取相關的.img檔案,然後建立虛擬機器。執行後,設定執行模式為ART模式。
裝上加固的APP,執行一下,觀察app目錄下的.jiagu資料夾下就有還原的dex檔案了。
注:由於大家反映提供的虛擬機器不能脫殼。所以這裡重新上傳一個原始碼編譯的原映象還有dex2oat檔案。
自行建立虛擬機器後,記得改用art模式執行(第一次轉換時間較長,耐心等待)。
應用市場上重新找了一個APP脫了下,成功脫殼:
新上傳的映象檔案和加固樣本:
連結:https://pan.baidu.com/s/1htp4GO8 密碼:mwbc
有問題可以加群討論:637599003