apk分析入門從0到0.5
STATEMENT
聲明
由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測及文章作者不為此承擔任何責任。
雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。
設備選擇,虛擬機or實體機
相較于安卓模擬器,我比較推薦用實體機,首當其沖的可能是因為有些app會檢測市面上常見的模擬器如網易的mumu、夜神模擬器等。
雖然可能通過修改模擬器達到運行app的情況,當時仍比較推薦用實體機,況且現在僅拿來測試的話,不需要特別昂貴的設備,我在用的是有些年頭的驍龍625的紅米note4x,主要可以選擇第三方的系統多。
推薦設備
根據系統選設備!!!推薦使用穩定的類原生系統(如LineageOS、魔趣等),國內的miui、flyme的話雖然也能刷入Magisk獲得root權限,但是偶爾會有奇奇怪怪的bug...
小米/紅米,第三方類原生系統多(LineageOS、魔趣等)、便宜、性能夠用(買回來就刷成類原生系統,不推薦用miui搞)
一加,氫os,挺香,定制魔改不太多的類原生系統谷歌家pixel,略貴,出廠就是原生系統,就是系統更新太快
基本環境搭建
類原生系統
LineageOS:https://www.lineageos.org/ (官網),也可以訪問國內的鏡像站https://download.lineageos.org.cn/,不過鏡像站更新時間不如官網,上面也有很多機型,都是比較推薦的。

魔趣:https://download.mokeedev.com/,基于 Android 開源項目二次開發,增加的本地化、個性化的功能。

其他類原生系統,可以去xda論壇的各種機型專區查看。https://forum.xda-developers.com/(帖子上會標注,UNOFFICIAL即非官方的,OFFICIAL官方的)

簡易刷入過程
以我手里的625版紅米note4x為例:
1.解開BL鎖,即BootLoader鎖,解鎖鏈接:http://www.miui.com/unlock/index.html,可以根據官方文檔就行操作,新的小米賬號可能會提示要很長時間才能解鎖

2.刷入第三方rec,下載鏈接https://dl.twrp.me/mido/

刷入過程如下:
1.關機后按住音量減鍵加電源鍵進入fastboot模式,下圖左側的圖案

2.手機連接電腦,fastboot刷入
fastbootflashrecoverytwrp-3.6.0_9-0-mido.img
fastbootflashboot twrp-3.6.0_9-0-mido.img
fastboot reboot # 重啟會自動進入剛剛刷入的rec

蘋果系統得安裝android-platform-tools,才會有adb、fastboot等,用brew直接安裝即可
brew cask install android-platform-tools
3.rec清除數據、刷入系統、等待系統重啟
Wipe-->Advanced Wipe-->全勾上-->滑動最下面的Swipe to Wipe
返回上一層,找到Format Data即格式化Data分區,輸入yes,右下角的??即可


重新插拔下數據線,就會在文件管理中顯示,蘋果系統會在Android文件傳輸(下載地址:https://www.android.com/filetransfer/)提示了。

卡刷包通用刷入方式
將系統包拷貝進去,首頁-->選擇Install-->選擇刷系統包-->勾選Reboot after installation iscomplete即刷完自動重啟-->滑動Swipe to confirm Flash(強烈建議使用安卓9的系統,安卓10的系統對/分區讀寫較為繁瑣)


Magisk
通過面具Magisk獲取完美ROOT,且有良好的插件下載方式,如移動證書的xxxx模塊,將用戶證書自動移動到系統根證書/system/etc/security/cacerts/路徑下
刷入方法:
等待系統重啟完成后,關機,音量加鍵與電源鍵進入rec。參考"卡刷包通用刷入方式"刷入即可。
Magisk包下載地址https://magisk.me/zip/,推薦下載卡刷包以及卸載包。

刷入成功后,推薦去隱藏Magic應用,隨機生成下包名,有些app會檢測,完成后添加桌面快捷方式即可,再次進入就是包名就隨機了。

Magisk模塊推薦
常用的magisk模塊,提高效率,刷入方法參考通用刷入教程
Move Certificates
將用戶手動安裝的證書移動到系統根證書/system/etc/security/cacerts/路徑下

magisk-frida
利用magisk開啟frida,frida是個輕量級別的hook框架,注意安裝版本需要與電腦安裝的版本相同。電腦上pip3安裝即可,pip3 install frida,沖沖沖!!!下載地址:https://github.com/ViRb3/magisk-frida/releases

Riru
Riru的原理是通過替換會被Zygote加載的libmemtrack.so從而實現Zygote注入
下載地址:https://github.com/RikkaApps/Riru/releases

LSPosed
LSPosed 是 Edxposed 的一個新的分支,LSPosed 與Edxposed 相互兼容,卻比 Edxposed 更加簡潔、易用和高效,是現如今飽受詬病的 Edxposed 的極佳替代品。
下載地址:
https://github.com/LSPosed/LSPosed/releases

安裝完成大概是這個樣子,先裝Riru,重啟進系統之后才可以裝LSPosed,這兩個順序不能亂的

xposed還是LSPosed?
xposed原版好像是只支持到安卓7.0,7.0之后陸陸續續也有很多類似的,比如太極、edxposed,LSPosed 是 Edxposed 的一個新的分支,所以替換成了LSPosed。
LSPosed模塊-sslunpinning
sslunpinning模塊能在一定程度上解決服務器服務端校驗客戶端證書的問題,防止中間人進行攻擊。ssl pinning簡單重要性具體可以參考:https://zhuanlan.zhihu.com/p/6039257

以某東為例子,模塊--sslunpinning--啟用模塊,配置后推薦重啟下手

抓包軟件證書(以burp為例)

安裝完成之后,重啟設備,證書變會被Move Certificates模塊移動到系統證書目錄下(圖片為安卓10,強烈建議使用安卓9!!!安卓10測試失敗),如果Move Certificates模塊移動失敗也可以用手動的方式安裝、移動證書。
手動安裝、移動證書
證書轉換,已經是pem格式的證書不需要執行這一步
openssl x509 -inform DER -in cacert_2020_12.cer -out cacert_2020_12.pem
進行MD5的hash顯示
openssl版本在1.0以上的版本的執行這一句
openssl x509 -inform PEM -subject_hash_old -in cacert_2020_12.pem
將pem證書重命名
使用上面復制的值(類似于347bacb5)對pem證書進行重命名
mv cacert_2020_12.pem d78f1bf0.0
將新證書放入手機系統證書目錄/system/etc/security/cacerts/
adb push d78f1bf0.0 /sdcard/adb shellsumount -o rw,remount /systemmv /sdcard/d78f1bf0.0 /system/etc/security/cacerts/chmod 644 /system/etc/security/cacerts/d78f1bf0.0reboot
代理、流量導向
之前還可以直接通過wifi代理的方法,將手機的流量直接轉發至電腦的開放端口上,如burp開的9999端口。
但是越來越多的app開發者會在app運行時優先檢測系統的wifi代理設置,如果配置了wifi代理則會屏蔽系統代理,例如OKHttp可以設置Proxy.NO_PROXY來屏蔽系統代理。

通過安裝Postern來進行流量導向,Postern是配置了一個本地的vpn將流量轉發至配置好的代理端口,如我配置的burp的192.168.1.2:9999,點擊打開vpn即可。
進階環境推薦
查殼

脫殼
既然查到了殼那就得有脫殼,大部分脫殼的思路都是從內存里dump出來dex,例如FRIDA-DEXDump就是這個原理。
FRIDA-DEXDump
下載地址:https://github.com/hluwa/FRIDA-DEXDump
FRIDA-DEXDump涉及到frida,所以先測試下frida是否運行正常。
frida-ps -U
能正常返回手機的app列表即可。說明magisk-frida運行正常,frida安裝版本也一樣。

dump一個dex試試
以酷安為例子
frida-dexdump -n com.coolapk.market

dump出來的dex用d2j-dex2jar轉換成jar包即可。

內存中dumpdex只是frida中的其中的一個玩法,更多有意思的可以參考下這個:https://github.com/hookmaster/frida-all-in-one
Blackdex
BlackDex是一個運行在Android手機上的脫殼工具,支持5.0~12,無需依賴任何環境任何手機都可以使用,包括模擬器。只需幾秒,即可對已安裝包括未安裝的APK進行脫殼。

下載地址:
https://github.com/CodingGay/BlackDex/releases

Brida
brida我不是很了解,是一個burp的插件,我也在學習的過程,推薦一些較好的學習鏈接:
https://blog.csdn.net/weixin_39190897/article/details/102691898(這篇比較詳細)
https://bbs.pediy.com/thread-248977.htm
下載地址:https://github.com/federicodotta/Brida

其他軟件推薦
HttpCanary小黃鳥

Scrcpy
scrcpy就是通過adb調試的方式來將手機屏幕投到電腦上,并可以通過電腦控制您的Android設備。
推薦參數:-Sw,關閉設備屏幕并防止設備休眠
