1. 程式人生 > 實用技巧 >安卓測試筆記--工具安裝

安卓測試筆記--工具安裝

安卓的檔案作用

資源庫檔案

可以理解為開發的時候需要的函式來源

jar包:和java差不多,SDK也就是有很多函式的jar包

aar包:可以包含如圖片類的資源

apk檔案

最終產出就是apk檔案,他可以用壓縮包開啟

AndroidMainifest.xml:該檔案是用來確定有哪些元件的類似於javaweb的web.xml

​ |-AXML檔案是二進位制檔案,是由AndroidMainifest.xml生成而來是為了提高速度的

class.dex:打包後的執行程式(核心),可能有多個

​ |-odex是Dalvik虛擬機器提高dex檔案效率的優化後文件,與dex可互相轉換

​ |-oat是ART虛擬機器提高dex檔案效率的優化後文件,與dex可互相轉換

res:靜態資源如圖片樣式之類的依賴,包括元件的id值之類的資訊,它將格式不同的資源整合統一

META-INF:包含防篡改的簽名

安卓編譯生成檔案流程(怎麼生成一個apk檔案)

先將佈局檔案和AndroidMainifest.xml解析生成R.java

解析AIDL介面檔案生成java檔案

之後把所有生成的java檔案來生成class檔案

最後將class檔案再次編譯成安卓虛擬機器解析的dex檔案

將資源打包生成apk,再進行對其處理加上簽名

安卓安裝流程(怎麼解析一個apk檔案)

安卓它系統自身就有一堆activity,安裝的時候

先解析apk中的AndroidMainifest.xml,獲取包名,logo之類的資訊

系統這時候會檢測該軟體是否安裝,沒有安裝的話,安裝介面會彈出資訊,和安裝,取消的按鈕

點選安裝檢測是否有安裝許可權,之後就進行安裝

最終進行簽名,校驗

匯入證書

好像安卓7.0以上需要系統證書才能抓https,而burp官網交的方法是安裝使用者證書就不行,可以通過下面方法安裝系統證書,需要root

下載burp證書(匯出是der格式,安卓需要pem格式),按照以下方法生成證書,然後匯入到系統證書

openssl x509 -inform DER -outform PEM -in cacert.der -out cacert.pem

openssl x509 -subject_hash_old -in cacert.pem

得到一個hash  比如:9a5ba575
mv cacert.pem 9a5ba575.0  

adb root
adb disable-verity
adb reboot
adb root
adb remount

然後上傳為系統證書
adb push 9a5ba575.0 /system/etc/security/cacerts/

開啟手機瀏覽器會提示證書不信任?可以用xposed的JustTrustMe和TrustMeAlready試試

https://github.com/Fuzion24/JustTrustMe/releases/tag/v.2

https://github.com/ViRb3/TrustMeAlready/releases/tag/v1.11

此時還不信任的話,可能安卓版本過高,建議刷機降級orz

工具安裝

drozer

用來抽離,檢測app的元件的

首先手機端執行apk

https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk

python2安裝

https://github.com/mwrlabs/drozer/releases/download/2.4.4/drozer-2.4.4-py2-none-any.whl

sudo pip2 install drozer-2.4.4-py2-none-any.whl -i https://pypi.python.org/simple
sudo pip2 install twisted

手機連線電腦,電腦執行

adb forward tcp:31415 tcp:31415

作用是將PC端31415埠的資料,轉發到手機端31415埠,從而實現PC和手機的通訊

然後手機開啟app,電腦執行框架

drozer console connect

frida

主要是用來hook程式(加了殼也能hook住函式)和脫殼用

手機配置

下載
https://github.com/frida/frida

找到合適的版本,一般手機都是
frida-server-14.1.2-android-arm64.xz
模擬器就選x86
frida-server-14.1.2-android-arm.xz
frida-server-14.1.2-android-x86.xz

解壓,重新命名放入手機中,並賦予執行許可權
mv frida-server-14.1.2-android-arm64 frida-server
adb push frida-server /data/local/tmp/
adb root
adb shell
chmod 777 /data/local/tmp/frida-server

電腦配置

frida-dexdump是用來脫殼的

pip3 install frida frida-tools frida-dexdump

使用時(adb連線)

手機執行
adb root
adb shell
/data/local/tmp/frida-server

電腦執行
frida-ps -U

xposed

xposed是用來hook的框架,hook我們app不太好用了,但可以使用一些外掛還是有必要的

安卓5.0以下

https://repo.xposed.info/module/de.robv.android.xposed.installer

安卓5.0~8.0

https://forum.xda-developers.com/t/official-xposed-for-lollipop-marshmallow-nougat-oreo-v90-beta3-2018-01-29.3034811/

現在的手機基本都是安卓9,安卓10了,在安卓8.1以上不能直接安裝,可以使用以下辦法

https://www.bilibili.com/read/cv5068761/

這裡以可以掛代理的root手機為例

手機安裝 酷安應用商店
https://www.coolapk.com/

手機酷安應用中安裝Magisk Manager

手機掛上代理

進入Magisk 直接下載安裝Magisk,安裝後重啟

重啟掛上代理

進入Magisk選擇模組,搜尋Riru(作者Rikka)下載,但是這裡有問題,最新版的Riru-EdXposed不相容,所以要下載老版本的Riru
https://github.com/RikkaApps/Riru/releases(目前建議v21.3)

下載好後把zip通過adb傳到手機,或者通過QQ傳到手機都可以

手機在Magisk模組中最上面選擇從本地安裝,選擇下載的包,即可(暫時不要更新)

安裝完後在手機Magisk再安裝 Riru-EdXposed,需要代理

安裝EdXposed Manager
https://github.com/ElderDrivers/EdXposedManager/releases

重啟即可

drony

用於代理的工具,有些流量不走wifi的代理,就通過該工具統一走全域性代理,全域性代理地址為burp的監聽埠

https://files.cnblogs.com/files/lulianqi/Drony_102.apk

後續待更新

脫殼技巧

查殼

ApkScan-PKID.jar

該工具可以查國內的加殼工具

https://github.com/QuanGe/QuanGe.github.io/raw/master/ApkScan-PKID.jar

脫殼

frida-dexdump

該工具脫免費殼可以的,企業版殼一般脫不掉,手機上可以脫,模擬器會出問題脫不掉(MUMU mac版)

adb連線手機
adb root
adb shell

手機執行frida-server
cd /data/local/tmp
./frida-server

電腦執行
找到需要脫殼的程式
frida-ps -U 

比如找到了com.example.myapp
frida-dexdump -n com.example.myapp

此時會生成很多dex檔案,一個個翻吧~

逆向分析工具

52上有很多工具

這裡推薦jeb和jadx

https://down.52pojie.cn/Tools/Android_Tools/

直接用工具開啟apk即可,如果發現裡面的程式碼有載入so之類的檔案,內容也看不懂估計就是加殼了的