patch apk後重打包重簽名
有很多時候想要逆向分析一個apk文件,單純的靜態分析不能解決我們的需求,我們需要patch一下apk的庫文件(比如patch反調試),或是修改java源碼等,我們希望修改之後重新打包成apk,然後裝入實機調試,那麼就需要將其重打包重簽名。
工具
java環境
java環境是必不可少的,後面的所有工具都依賴java環境。
apk tools
下載apk tools:
https://ibotpeaches.github.io/Apktool/install/
以windows平臺來講,需要下載的內容有兩個,分別是途中畫紅框的,bat 腳本和apktool.jar 將bat腳本拷貝下來保存爲apktool.bat並與apktool.jar放在一個目錄下,我連測試用apk也放在了一起:
Android Studio
生成簽名文件用,官網下載即可:https://developer.android.com/studio
然後一頓下一步安裝即可,沒什麼坑。
解包
.\apktool.bat d .\test.apk
運行上述腳本進行解包:
解包好之後會出現test文件夾,裏面都是apk包中的內容:
patch文件
這裏我是patch了一下庫文件,原本庫文件中有ptrace反調試,被我nop掉了,然後將patch後的so文件與原文件替換:
重打包
patch之後我們想重新做成apk文件,首先要進行重打包。
再返回apktool目錄,運行下面指令重打包:
.\apktool.bat b test -o new_test.apk //test:文件夾名 new_test.apk重打包後的名字
發現多了一個new_test.apk,這就是重打包好的apk文件:
但目前還無法正常安裝,因爲還沒有爲其簽名。
生成簽名文件
想要重打包成可以正常安裝的apk文件,我們還需要爲其簽名,這時我們需要準備一個簽名文件,可以使用Android Studio來生成
首先用Android Studio打開apk,然後頭部菜單中的build->Generate Signed APK
選擇apk:
新建一個key store password:
然後輸入祕鑰信息,選擇保存路徑,下面的密碼設置一下(我兩個密碼設置的一樣,反正我也分不清哪個是幹啥的),之後簽名的時候會用到,alias是祕鑰別名,起了別名之後也記住了,之後會用到,下面的certificate 中至少寫一行就可以了(參照網上攻略所說,並不是專業搞Android的,馬馬虎虎吧):
新版的Android studio會報這個錯:
不用管 ,直接ok,會自動給你改成新的祕鑰格式,然後什麼都不用碰,直接下一步,然後完成即可:
生成的祕鑰文件:
給apk簽名
給apk簽名用到java環境中的jarsigner,如果java環境安裝沒有問題的話,是自動有的,使用命令如下:
jarsigner.exe -verbose -keystore .\testSign.jks -signedjar test_finish.apk .\new_test.apk cat -digestalg SHA1 -sigalg MD5withRSA
//.\testSign.jks 簽名文件
//test_finish.apk 給簽名玩生成的apk起個名
//.\new_test.apk 要簽名的apk
//cat 之前生成簽名文件時設置的別名
然後還需要輸入一下之前設置的密碼:
之後就自動申城了簽名好的apk:
安裝測試
安裝成功,並且成功將反調試patch調了。
參考資料
Android Studio生成簽名文件:https://m.imooc.com/article/details?article_id=73361
重打包重簽名:https://www.jianshu.com/p/792a08d5452c
https://www.jianshu.com/p/db709a280d9a