1. 程式人生 > >記一次APP脫殼重打包過程

記一次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