天天看点

安卓逆向环境搭建 Genymotion

完整内容及源码关注公众号:ReverseCode,发送冲

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

开机键+音量减 进入recovery

ES文件浏览器 查看系统文件

玩逆向必备一台真机,那么非谷歌亲儿子莫属,模拟器缺失native/so层,属于精简版系统,故还是真机香呀。

官网下载pixel 8.1.0镜像,建议刷OPM1.171019.011版本安卓8.1.0

设置-关于手机-版本号8下点击-进入开发者模式,进入系统-高级-打开开发者选项-USB调试

twrp作为第三方刷机工具,刷入Magisk,nethunter等魔改系统。

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

linux下载最新的platform-tools刷机的时候,fastboot会报各种unknow command或接近的错误,把fastboot文件替换成随着aosp一起编译出来的即可,使用自行编译的fastboot即可。

通过wifi连接adb可实现群控

<code>adb -s 192.168.0.104:5555 install com.ttxapps.wifiadb_2.1.3-810031745_minAPI15(nodpi)_apkmirror.com.apk</code> 安装apk

<code>adb connect 192.168.0.104:5555</code> 使用adb连接手机

termux

<code>adb -s 192.168.0.104:5555 install com.termux_92.apk</code> adb被禁时在app端使用命令行操作

<code>pkg update &amp;&amp; pkg install htop</code> 在app端安装管理进程的包

xdebuggable &amp;&amp; XAppDebug

启动EdXposed,搜索xdebuggable 和XAppDebug模块并安装开启debug apk(需要借助梯子)

ro.debuggable

<code>adb push MagiskHidePropsConf-v5.3.4.zip /sdcard/Download</code> 并通过Magisk Manager-模块-下载-安装MagiskHidePropsConf-v5.3.4.zip

reboot-adb shell-props

getprop ro.debuggable 即可查看1,开启全局可调式

lineageos,twrp

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

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

设置-关于手机-版本号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&amp;ts=1598862686

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

搭配QtScrcpy就可以在电脑上观看手机屏幕上的内容,或者通过usb一拖四实现鼠标键盘完全电脑操作。该系统自动集成了java,BurpSuite2020.06,charles,python3,python。

点开<code>Nethunter</code>这个<code>app</code>

切换到<code>Kali Chroot Manager</code>,START KALI CHROOT

切换到<code>Kali Services</code>,将<code>SSH</code>启动并且勾选<code>Start at Boot</code>,这样就拥有了<code>sshd</code>

切换到<code>Kex Manage</code>--<code>SETUP LOCAL SERVER</code> 设置好密码后--取消Localhost Only--START SERVER--OPEN KEX CLIENT

安卓逆向环境搭建 Genymotion

打开VNC Viewer,通过NetHunter 终端查看ip地址,显示器为1,开启VNC登录

安卓逆向环境搭建 Genymotion

通过一拖四的typec转USB,连接键盘鼠标,将Nexus 6p变成一台kali电脑。

安卓逆向环境搭建 Genymotion

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

安卓逆向环境搭建 Genymotion

打开开发者选项-usb调试

-设备解锁状态-绑定账号和设备

adb reboot bootloader 解锁bootloader,执行miflash_unlock.exe

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

twrp-3.3.1-1-chiron.img

安装全程开全局代理,安装nexus 5x 8.0

安卓逆向环境搭建 Genymotion

network mode选择Bridge或者在virtualbox中修改网络为桥接,如virtualbox网络连接里没有桥接网卡选择

修改D:\VirtualBox\drivers\network\netlwf\VBoxNetLwf.inf

安卓逆向环境搭建 Genymotion

settings-system-Languages&amp;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桥接

<code>uname -a i686</code> 查看cpu架构为x86 32位 不支持arm,需要安装arm桥,直接将 Genymotion-ARM-Translation_for_8.0.zip拖入nexus 5x 8.0, 进行安装

adb reboot 即可安装带有arm的so的apk

别用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 定期删除拷贝的文件缓存

安卓逆向环境搭建 Genymotion
as若报错<code>To build this project, accept the SDK license agreements and install the missing components?</code> 执行/root/Android/Sdk/tools/bin/sdkmanager --licenses

Android设备投屏

NodeJs

jadx-1.2.0.zip多dex打开,修改jadx-gui中<code>set DEFAULT_JVM_OPTS="-Xms512M" "-Xmx8g"</code>,加入zshrc的环境变量中<code>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"</code>

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,版本太高了<code>ln -s /root/Desktop/android-studio/jre/ /root/Android/Sdk/tools/lib/monitor-x86_64/</code>,然后通过~/Android/Sdk/tools/monitor打开ddms

vim ~/.bashrc &amp;&amp; source ~/.bashrc

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

jdk1.8

nexus 5x

安装流程 twrp-&gt;SuperSu-&gt; nethunter

kali nethunter下载nexus 5x nethunter,使用投屏可变成一个迷你的linux渗透系统,通过twrp进行install ,<code>sh userinit.sh</code> 同步时间

安卓逆向环境搭建 Genymotion

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

查看所有安装的包

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

全套安装最新版本:<code>proxychains pip install objection</code>

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

特定版本frida

按照这个顺序,在装objection的时候,就会直接Requirement already satisfied,不会再去下载新的frida来安装了。

frida开发环境

pyenv local 3.8.0 &amp;&amp; ./fs128arm64

git clone https://github.com/oleavr/frida-agent-example.git

cd frida-agent-example/

npm install

使用VSCode等IDE打开此工程,在agent下编写typescript,会有智能提示。

npm run watch会监控代码修改自动编译生成js文件

frida -UF -l demo.js usb连接手机保存将自动调用demo.js 进行hook <code>Java.perform(function(){console.log("frida hook")})</code>

frida -UF -l demo.js --runtime=v8 使用v8引擎 <code>Java.perform(()=&gt;{console.log("Hello World")})</code>

frida-ps -U 查看所有进程

frida -H 192.168.0.100:5555 -f com.ttxapps.wifiadb -l demo.js --runtime=v8 远程hook,-l指定脚本

frida -Uf com.android.settings -l demo.js --runtime=v8 --no-pause 经过usb主动启动应用调用demo.js,-f是spawn模式,--no-pause直接加载应用,没有的话需要%resume启动主线程

frida -UF --runtime=v8 -e "Java.perform(()=&gt;{console.log('Hello World')})" -o /root/log.txt 直接执行脚本写入文件

远程连接

<code>./fs128arm64 -v -l 0.0.0.0:8888</code> 指定端口启动frida,默认端口27042

<code>frida-ps -H 192.168.0.8:8888</code> 指定-U表示usb,-H表示主机ip

<code>frida -H 192.168.0.8:8888 -F</code> 指定-H表示主机ip,-F表示前台应用,输入frida即可查看Frida信息

cd frida-agent-example/ &amp;&amp; npm install &amp;&amp; npm run watch &amp;&amp; frida -H 192.168.0.8:8888 -F -l agent/demo.js 远程调用js脚本

远程调用

plugins

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