在AndroidStudio創建so一節里創建了so,並且在java里面調用so的HelloWorld方法,編譯Android Studio后生成包app-debug.apk。
在逆向apk時如果該apk引用了so的話,直接用Android Killer肯定沒法直接得到so里的代碼,我們需要先把apk文件解包,再讀取so中的代碼。下面介紹用apktool解apk包。
一 工具准備
1 下載apktool,apktool下載地址:https://ibotpeaches.github.io/Apktool/。我下載的是2.3.4版本,把下載的apktool_2.3.4.jar文件改名為apktool.jar
2 新建文本文件重命名文件為apktool.bat,編輯輸入以下內容:
@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
3 把apktool.jar和apktool.bat都放到同一個文件夾下,我放在了E:\Android\apktool目錄。
4 打開命令行,來到apktool所在目錄,然后輸入apktool,成功會顯示apktool的版本信息和幫助信息,如圖: (報錯Unable to access jarfile...的話看看apktool_2.3.4.jar文件改名為apktool.jar沒有)
二 解包apk
1 cd進入apktool所在目錄,用apktool d命令解包apk,解包完成會在apktool目錄生成跟apk同名的文件夾。
2 解包成功后可以在apktool目錄看到app-debug文件夾,打開app-debug\lib目錄,里面有不同平台的文件夾,里面有各個平台的so。再用工具去破解修改so就可以了
三 重打包apk
so修改完成后,我們需要重新打包apk讓我們的修改生效。重打包用apktool b命令,可以用-o重命名apk。
1 cd來到apktool目錄,使用apktool b app-debug -o app-debug.apk命令重打包apk,成功后看到在app-debug文件夾同級目錄生成了同名的apk
如果使用apktool b app-debug -o newapp.apk 命令重打包apk,成功后看到在app-debug同級目錄生成newapp.apk。
apktool編譯打包的apk是不能直接安裝的,因為文件我們動過了,所以需要簽名,下節用SignApk.jar進行簽名。