安卓逆向環境搭建


篇幅有限

完整內容及源碼關注公眾號:ReverseCode,發送

刷機

https://developers.google.com/android/images#angler

開機鍵+音量減 進入recovery

Pixel

ES文件瀏覽器 查看系統文件

玩逆向必備一台真機,那么非谷歌親兒子莫屬,模擬器缺失native/so層,屬於精簡版系統,故還是真機香呀。

  1. 官網下載pixel 8.1.0鏡像,建議刷OPM1.171019.011版本安卓8.1.0
adb reboot bootloader 或 按住音量向下鍵和開機鍵 進入fastboot狀態
cd sailfish-opm4.171019.021.p1-factory-0bcf4315/sailfish-opm4.171019.021.p1 && flash-all.sh 開始刷機

設置-關於手機-版本號8下點擊-進入開發者模式,進入系統-高級-打開開發者選項-USB調試

adb push Magisk-v20.4.zip /sdcard    
adb push magisk-riru-v21.3.zip /sdcard/Download 使用magisk模塊安裝並重啟
adb push magisk-EdXposed-SandHook-v0.4.5.1_beta.4463.-release.zip /sdcard/Download  使用magisk模塊安裝並重啟
adb install EdXposedManager-4.5.7-45700-org.meowcat.edxposed.manager-release.apk    安裝xposed
adb push MagiskHidePropsConf-v5.3.4.zip /sdcard/Download   
adb install JustTrustMePlus-debug.apk  用於結合xposed突破SSL Pinning抓包限制

twrp作為第三方刷機工具,刷入Magisk,nethunter等魔改系統。

fastboot flash recovery twrp-3.3.0-0-angler.img

adb reboot bootloader
fastboot boot twrp-3.4.0-0-sailfish.img   進入recovery mode
install Magisk-v20.4.zip
adb install MagiskManager-v7.5.1.apk
settings put global captive_portal_http_url https://www.google.cn/generate_204  去除wifi上的×
settings put global captive_portal_https_url https://www.google.cn/generate_204
settings put global ntp_server 1.hk.pool.ntp.org  修改時區
reboot

linux下載最新的platform-tools刷機的時候,fastboot會報各種unknow command或接近的錯誤,把fastboot文件替換成隨着aosp一起編譯出來的即可,使用自行編譯的fastboot即可。

rm ~/Android/Sdk/platform-tools/fastboot
cp fastboot810r1 fastboot
fastboot --version

通過wifi連接adb可實現群控
adb -s 192.168.0.104:5555 install com.ttxapps.wifiadb_2.1.3-810031745_minAPI15(nodpi)_apkmirror.com.apk 安裝apk

adb connect 192.168.0.104:5555 使用adb連接手機

termux

adb -s 192.168.0.104:5555 install com.termux_92.apk adb被禁時在app端使用命令行操作

pkg update && pkg install htop 在app端安裝管理進程的包

xdebuggable && XAppDebug
啟動EdXposed,搜索xdebuggable 和XAppDebug模塊並安裝開啟debug apk(需要借助梯子)

ro.debuggable

adb push MagiskHidePropsConf-v5.3.4.zip /sdcard/Download 並通過Magisk Manager-模塊-下載-安裝MagiskHidePropsConf-v5.3.4.zip

reboot-adb shell-props

1 - Edit device fingerprint
2 - Force BASIC key attestation
3 - Device simulation (disabled)
4 - Edit MagiskHide props
5 - Add/edit custom props
6 - Delete prop values
7 - Script settings
8 - Collect logs
u - Perform module update check
r - Reset all options/settings
b - Reboot device
e - Exit

See the module readme or the
support thread @ XDA for details.

Enter your desired option: 4

1 - ro.debuggable
2 - ro.secure
3 - ro.build.type
4 - ro.build.tags
5 - ro.bootmode
6 - ro.boot.mode
a - Change all props
b - Go back to main menu
e - Exit

Pick several options at once by
separating inputs with a comma.
Example: 1,3,4

See the module readme or the
support thread @ XDA for details.

Enter your desired option: 1


You currently have the safe value set.
Are you sure you want to change it to 1?

Enter y(es), n(o) or e(xit): y

Do you want to reboot now (y/n)?

Enter y(es), n(o) or e(xit): y

getprop ro.debuggable 即可查看1,開啟全局可調式

Pixel XL

lineageos,twrp

adb reboot bootloader 
fastboot boot twrp-3.4.0-0-marlin.img 進入twrp
「TWRP主界面」->「Wipe」->「Format Data」  輸入yes
「Adavanced Wipe」-> 勾選「Dalvik / ART Cache」、「Cache」、「System」、「Data」、「Internal Storage」(切勿勾選到「Vendor」) -> 划過滑動條確認擦除  
「TWRP主界面」->「Advanced」->「ADB Sideload」(划過滑條即可)  勾選雙清
adb sideload lineage-17.1-20201028-nightly-marlin-signed.zip  重啟
設置-關於手機-版本號-8次打開開發者選項
設置-系統-高級-開發者選項-Android 調試
adb install MagiskManager-v7.5.1.apk
adb install EdXposedManager-4.5.7-45700-org.meowcat.edxposed.manager-release.apk
adb push magisk-riru-v21.3.zip /sdcard/Download
adb push MagiskHidePropsConf-v5.3.4.zip /sdcard/Download
adb push EdXposed-SandHook-v0.4.6.2.4529.-release.zip /sdcard/Download
adb reboot bootloader
fastboot boot twrp-3.4.0-0-marlin.img
「TWRP主界面」->「Advanced」->「ADB Sideload」(划過滑條即可)
adb sideload Magisk-v20.4.zip 重啟
通過Magisk模塊新增選擇下載目錄,安裝riru,MagiskHidePropsConf,EdXposed
adb install JustTrustMePlus-debug.apk

marlin,SR5-SuperSU-v2.82-SR5-20171001224502.zip,xposed-v89-sdk25-arm64.zip,XposedInstaller_3.1.5

adb reboot bootloader 
./flash-all.bat
設置-關於手機-版本號-8次打開開發者選項
設置-系統-高級-開發者選項-Android 調試
adb install XposedInstaller_3.1.5.apk
fastboot boot twrp-3.4.0-0-marlin.img
install SR5-SuperSU-v2.82-SR5-20171001224502.zip,xposed-v89-sdk25-arm64.zip
adb push timeadjust.sh /data/local/tmp && sh timeadjust.sh

pixel系列安裝xposed不可使用xposed-v89-sdk25-arm64.zip,只能ssr后谷歌下載xposed框架安裝。

Nexus 6P

adb reboot bootloader
fastboot devices
fastboot erase cache 如出現< waiting for any device >,插拔usb
fastboot erase userdata
fastboot flashing unlock
fastboot flash bootloader .\bootloader-angler-angler-03.68.img
fastboot reboot-bootloader
fastboot flash radio .\radio-angler-angler-03.81.img
fastboot reboot-bootloader
fastboot flash vendor .\image-angler-n2g48c\vendor.img
fastboot reboot-bootloader
fastboot flash system .\image-angler-n2g48c\system.img
fastboot flash boot .\image-angler-n2g48c\boot.img
fastboot flash recovery recovery.img
fastboot erase cache
fastboot erase userdata
fastboot flash cache cache.img
fastboot flash userdata userdata.img
fastboot flashing lock

設置-關於手機-版本號8下點擊-進入開發者模式-打開開發者選項

adb push UPDATE-SuperSU-v2.79-20161211114519.zip /sdcard

adb push xposed-v89-sdk25-arm64.zip /sdcard

rom:https://dl.google.com/dl/android/aosp/angler-n2g48c-factory-6a21e528.zip

解壓得到angler-n2g48c-factory-6a21e528\angler-n2g48c\image-angler-n2g48c

superSu:https://download.chainfire.eu/1016/SuperSU/UPDATE-SuperSU-v2.79-20161211114519.zip

xposed安卓7.1對應sdk:https://dl-xda.xposed.info/framework/sdk25/arm64/xposed-v89-sdk25-arm64.zip

xposed apk:https://dl.xda-cdn.com/4/3/9/3/0/8/2/XposedInstaller_3.1.5.apk?key=4Rkip9MZy_4KitcodXSxBw&ts=1598862686

twrp:https://dl.twrp.me/angler/twrp-3.4.0-0-angler.img

Kali NetHunter

wget https://dl.google.com/dl/android/aosp/angler-opm1.171019.011-factory-39448337.zip
adb kill-server
adb start-server
adb reboot bootloader
./flash-all.sh 如報錯替換fastboot,which fastboot,使用fastboot8.1.0r1,開啟開發者選項,打開USB調試 
https://www.kali.org/kali-nethunter/
https://www.offensive-security.com/kali-linux-nethunter-download/
Nexus 6P Oreo (ZIP)
adb push SR5-SuperSU-v2.82-SR5-20171001224502.zip /sdcard/
adb push nethunter-2021.1-angler-oreo-kalifs-full.zip /sdcard/
adb push timeadjust.sh /sdcard/
adb reboot bootloader
fastboot flash recovery twrp-3.4.0-0-angler.img
刷完之后按音量向下鍵,選擇Recovery mode,按電源鍵進入,
進入Recovery之后,選擇Install→SR5-SuperSU-v2.82-SR5-20171001224502.zip開始刷機。
再次進入recovery,把nethunter-2020.2-pre3-angler-oreo-kalifs-full.zip.torrent刷進去,中間解壓Kali rootfs的過程,會至多25分鍾
連接wifi
sh timeadjust.sh  同步時間,reboot
刷機結束后進入系統首次也要先點擊Nethunter的應用,申請的所有權限都給,左側導航進入Kali Chroot Manager,點擊START KALI CHROOT,只要初始化這一次,后續無論如何重啟都會出現如圖所示的Everything is fine and Chroot has been started!。

點開Nethunter終端這款App,選擇KALI,進入Kali系統
apt update升級系統中的軟件庫信息
apt install neofetch htop jnettop

點開Nethunter進入標左側簽KeX Manager,點擊“SETUP LOCAL SERVER”,會要求輸入一個連接密碼和顯示密碼,輸入和確認即可,然后點擊“START SERVER”開啟服務器。點開“Nethunter KeX”這個App,在密碼那一欄輸入密碼之后,點擊“Connect”進行連接,即可直接進入Kali Nethunter操作系統的桌面。

搭配QtScrcpy就可以在電腦上觀看手機屏幕上的內容,或者通過usb一拖四實現鼠標鍵盤完全電腦操作。該系統自動集成了java,BurpSuite2020.06,charles,python3,python。

vnc

點開Nethunter這個app

  • 切換到Kali Chroot Manager,START KALI CHROOT
  • 切換到Kali Services,將SSH啟動並且勾選Start at Boot,這樣就擁有了sshd
  • 切換到Kex Manage--SETUP LOCAL SERVER 設置好密碼后--取消Localhost Only--START SERVER--OPEN KEX CLIENT

image-20210601103108877

打開VNC Viewer,通過NetHunter 終端查看ip地址,顯示器為1,開啟VNC登錄

image-20210601103213687

通過一拖四的typec轉USB,連接鍵盤鼠標,將Nexus 6p變成一台kali電腦。

image-20210601103619564

Nexus

adb reboot bootloader
fastboot oem unlock
fastboot erase cache 如出現< waiting for any device >,插拔usb
fastboot erase userdata
fastboot flash bootloader .\bootloader-hammerhead-hhz20h.img
fastboot flash radio .\radio-hammerhead-m8974a-2.0.50.2.30.img
fastboot reboot-bootloader
cd .\image-hammerhead-m4b30z\
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot erase cache
fastboot erase userdata
fastboot flash cache cache.img
fastboot flash userdata userdata.img
fastboot reboot

設置-關於手機-版本號8下點擊-進入開發者模式-打開開發者選項

adb push UPDATE-SuperSU-v2.79-20161211114519.zip /sdcard

adb push .\xposed-v89-sdk23-arm.zip /sdcard

adb reboot bootloader
fastboot flash recovery twrp-3.4.0-0-hammerhead.img 然后進入recovery mode
adb install .\XposedInstaller_3.1.5.apk  安裝Xposed
adb shell
adb shell 輸入su獲取超級用戶權限
chmod 711 /data/user/0/de.robv.android.xposed.installer
reboot 安裝完畢

img

小米 Mix 2

打開開發者選項-usb調試
-設備解鎖狀態-綁定賬號和設備

adb reboot bootloader 解鎖bootloader,執行miflash_unlock.exe

EdXposed-SandHook-v0.4.6.2.4529.-release.zip

twrp-3.3.1-1-chiron.img

adb reboot bootloader
fastboot flash recovery twrp-3.3.1-1-chiron.img
fastboot boot twrp-3.3.1-1-chiron.img
adb push lineage-17.0-chiron.zip  不能有中文
進入twrp后清除Cache,System,Data分區
install lineage-17.0-chiron.zip
install Magisk-v20.4.zip
adb install MagiskManager-v7.5.1.apk 
adb install EdXposedManager-4.5.7-45700-org.meowcat.edxposed.manager-release.apk
在magisk中安裝
adb push magisk-riru-v21.3.zip /sdcard/Download
adb push MagiskHidePropsConf-v5.3.4.zip /sdcard/Download
adb push EdXposed-SandHook-v0.4.6.2.4529.-release.zip /sdcard/Download

Genymotion

安裝全程開全局代理,安裝nexus 5x 8.0nexus_5x
network mode選擇Bridge或者在virtualbox中修改網絡為橋接,如virtualbox網絡連接里沒有橋接網卡選擇
修改D:\VirtualBox\drivers\network\netlwf\VBoxNetLwf.inf
橋接網絡
settings-system-Languages&input-Languages-Add a language-簡體中文

adb 無法連接genymotion怎么辦?

修改genymotion的settings,Use custom Android SDK tools為本地android sdk路徑
adb kill-server + adb start-server 重啟adb
安裝wifiadb后即可,默認可以連接192網段,配置橋接,可adb connect 192.168.0.104:5555

arm橋接

uname -a i686 查看cpu架構為x86 32位 不支持arm,需要安裝arm橋,直接將 Genymotion-ARM-Translation_for_8.0.zip拖入nexus 5x 8.0, 進行安裝
adb reboot 即可安裝帶有arm的so的apk

Kali

別用Windows了,魯迅曾經說過,他在逆向生涯中超過一半的苦難均由Windows賜予

vmware安裝文件 秘鑰:YC34H-6WWDK-085MQ-JYPNX-NZRA2

kali-linux-2020.4-vmware-amd64.7z種子,使用vmware打開vmx文件,配置6g內存,80g磁盤存儲,網絡適配選擇橋接到本地網卡(虛擬網絡編輯器),默認賬密:kali/kali,sudo passwd root 修改密碼123456

重啟后使用root登錄,android-studio-ide-201.7042882-linux.tar.gz安裝包
~/.cache/vmware/drag_and_drop 定期刪除拷貝的文件緩存
drag_and_drop

基本配置

apt update;apt install htop jnettop tmux iotop
dpkg-reconfigure tzdata 選擇Asia-Shanghai  
apt update 更新自動同步時間
apt install xfonts-intl-chinese 裝中文字體
apt-get install ttf-wqy-microhei
# nano /etc/ssh/sshd_config  開啟sshd
PermitRootLogin yes
# /etc/init.d/ssh start

常用軟件

tar zxf android-studio-ide-201.7042882-linux.tar.gz
cd ~/Desktop/android-studio/bin && ./studio.sh 啟動android studio
ctrl+shift+t 當前窗口新建終端
vim ~/.zshrc
export PATH="/root/Android/Sdk/platform-tools:$PATH"  加入環境變量
exec "$SHELL"
dpkg -i code_1.52.1-1608136922_amd64.deb  安裝vscode

as若報錯To build this project, accept the SDK license agreements and install the missing components?

執行/root/Android/Sdk/tools/bin/sdkmanager --licenses

Android設備投屏

NodeJs

jadx-1.2.0.zip多dex打開,修改jadx-gui中set DEFAULT_JVM_OPTS="-Xms512M" "-Xmx8g",加入zshrc的環境變量中export PATH="/root/Android/Sdk/ndk-bundle:/root/Android/Sdk/platform-tools:${JAVA_HOME}/bin:$PATH:/root/Desktop/charles/bin:/root/Desktop/jadx-1.2.0/bin:$NDK_HOME"

curl -fsSL https://deb.nodesource.com/setup_14.x | bash -
apt-get install -y nodejs
npm install --save @types/frida-gum  frida代碼提示

jeb-pro-3.19.1.202005071620_pwd_ilbtcdnwiuypbzeo_.7z 運行./jeb_linux.sh,輸入密碼:ilbtcdnwiuypbzeo,進入界面點擊Manual Key Generation中間按鈕獲取LICENSE DATA,運行jebKeygen.py 獲取license key后輸入到界面的key中,continue

Kali Linux里的as4的DDMS啟動失敗,原因是要用as自帶的jre來啟動,直接./monitor用的是Kali系統的jdk,版本太高了ln -s /root/Desktop/android-studio/jre/ /root/Android/Sdk/tools/lib/monitor-x86_64/,然后通過~/Android/Sdk/tools/monitor打開ddms

vim ~/.bashrc && source ~/.bashrc

export PATH=$PATH:/root/Android/Sdk/platform-tools

jdk1.8

apt-get remove openjdk-11-jre-headless:amd64
apt-get remove openjdk-11-jre:amd64
tar zxf jdk-8u191-linux-x64.tar.gz -C /opt/jdk
vim ~/.zshrc
export JAVA_HOME=/opt/jdk
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH="/root/Android/Sdk/ndk-bundle:/root/Android/Sdk/platform-tools:${JAVA_HOME}/bin:$PATH"
source ~/.zshrc
update-alternatives --install /usr/bin/java java /opt/jdk/bin/java 1
update-alternatives --install /usr/bin/javac javac /opt/jdk/bin/javac 1
update-alternatives --set java /opt/jdk/bin/java
update-alternatives --set javac /opt/jdk/bin/javac

nexus 5x

安裝流程 twrp->SuperSu-> nethunter

kali nethunter下載nexus 5x nethunter,使用投屏可變成一個迷你的linux滲透系統,通過twrp進行install ,sh userinit.sh 同步時間
運行nethunter

tab smali與java代碼轉換
ctrl+b 下斷點(注意這個必須在smali代碼界面才有用)
esc 回退上一級引用

activity_main.xml中配置的view組件:jeb中以十六進制存在於代碼中,利用計算器的程序員模式轉為十進制,jadx將該十進制存入resources.arsc,gda有APK入口直接進入MainActivity,同樣以十六進制存入代碼中。

基本命令

getprop ro.product.cpu.abi 判斷系統cpu版本 虛擬機一般都是x86
dumpsys meminfo pid 查看進程占用內存映射的信息
cat /proc/pid/maps 進程加載的so
cat /proc/pid/maps | grep -i libart.so 所有java代碼通過libart.so解析,脫殼機的關鍵
dumpsys activity top 顯示當前的Activity,顯示View Hierarchy,看view的類信息
dumpsys package com.soviet.hook4crawler 查看運行包信息
pm list packages 查看所有安裝的包

pyenv環境

對python不同包(frida,objection...)多版本管理

全套安裝最新版本:proxychains pip install objection

3.8.0

PYTHON_CONFIGURE_OPTS="--disable-ipv6" proxychains4 pyenv install 3.8.0 
pyenv local 3.8.0 
PYTHON_CONFIGURE_OPTS="--disable-ipv6" proxychains4 pip install frida==12.8.0
PYTHON_CONFIGURE_OPTS="--disable-ipv6" proxychains4 pip install frida-tools==5.3.0
PYTHON_CONFIGURE_OPTS="--disable-ipv6" proxychains4 pip install objection==1.8.4
objection -g com.android.settings explore

7z x frida-server-12.8.0-android-arm64

adb push frida-server-12.8.0-android-arm64 /data/local/tmp
mv frida-server-12.8.0-android-arm64 fs128arm64 改名防止反調試
chmod 777 frida-server-12.8.0-android-arm64
objection -g com.android.settings explore
android hooking list classes

特定版本frida

按照這個順序,在裝objection的時候,就會直接Requirement already satisfied,不會再去下載新的frida來安裝了。

pip install frida==12.8.0 
pip install frida-tools==5.3.0 
pip install objection==1.8.4 

frida開發環境

pyenv local 3.8.0 && ./fs128arm64

  1. git clone https://github.com/oleavr/frida-agent-example.git
  2. cd frida-agent-example/
  3. npm install
  4. 使用VSCode等IDE打開此工程,在agent下編寫typescript,會有智能提示。
  5. npm run watch會監控代碼修改自動編譯生成js文件
  6. frida -UF -l demo.js usb連接手機保存將自動調用demo.js 進行hook Java.perform(function(){console.log("frida hook")})
  7. frida -UF -l demo.js --runtime=v8 使用v8引擎 Java.perform(()=>{console.log("Hello World")})
  8. frida-ps -U 查看所有進程
  9. frida -H 192.168.0.100:5555 -f com.ttxapps.wifiadb -l demo.js --runtime=v8 遠程hook,-l指定腳本
  10. frida -Uf com.android.settings -l demo.js --runtime=v8 --no-pause 經過usb主動啟動應用調用demo.js,-f是spawn模式,--no-pause直接加載應用,沒有的話需要%resume啟動主線程
  11. frida -UF --runtime=v8 -e "Java.perform(()=>{console.log('Hello World')})" -o /root/log.txt 直接執行腳本寫入文件

遠程連接

./fs128arm64 -v -l 0.0.0.0:8888 指定端口啟動frida,默認端口27042

frida-ps -H 192.168.0.8:8888 指定-U表示usb,-H表示主機ip

frida -H 192.168.0.8:8888 -F 指定-H表示主機ip,-F表示前台應用,輸入frida即可查看Frida信息

cd frida-agent-example/ && npm install && npm run watch && frida -H 192.168.0.8:8888 -F -l agent/demo.js 遠程調用js腳本

Java.perform(()=>{console.log("Hello World")}) 
function main(){
    Java.perform(function(){
        console.log("hello")
    })
}
setImmediate(main)

遠程調用

import frida
device = frida.get_usb_device() 
print(device.get_frontmost_application())
#pid = device.spawn(["com.onejane.demo02"])
pid=device.get_frontmost_application().pid  # 若雙進程保護,指定pid進行hook 
print(device.enumerate_processes())   # 枚舉所有進程
print(device.enumerate_applications())  # 枚舉所有包名
# device.resume(pid)
# time.sleep(1)
session = device.attach(pid) 
with open("demo.js") as f:
    script = session.create_script(f.read())
script.load()

plugins

proxychains git clone https://github.com/hluwa/FRIDA-DEXDump ~/Downloads/FRIDA-DEXDump  脫殼
mv ~/Downloads/FRIDA-DEXDump/frida_dexdump ~/.objection/plugins/dexdump  在plugins子目錄插件下必須有__init__.py
proxychains git clone https://github.com/hluwa/Wallbreaker ~/.objection/plugins/Wallbreaker  內存漫游
objection -N -h 192.168.0.8 -p 8888 -g com.android.settings explore -P ~/.objection/plugins  遠程連接批量加載插件

本文由博客一文多發平台 OpenWrite 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM