APP逆向入门(adb和Charles抓包)
day02 逆向入门
目标:了解app逆向的流程和必要的环境准备。
课堂随笔
day02 逆向入门
今日概要:
- 逆向步骤
- adb电脑管理手机(安装、下载)
- 抓包
1.逆向必备步骤
- 手机安装APK
- 抓包分析
- 反编译apk得到java + 分析java定位算法位置 + Hook
- Python代码算法还原
2.手机安装APK
- 下载
- 应用市场,下载手机
- Web平台(豌豆荚) 老版本 可用版本 最新版本【电脑】
- 安装
- apk文件发到手机,手机找到apk文件,点击运行安装
- adb
- adb的安装和使用
- [电脑]下载压缩包 & 解压并放到某个目录
- [电脑]把目录添加系统环境变量
>>>D:\platform-tools\
>>>...
- [电脑]终端运行命令
>>>adb start-server
>>>adb kill-server
- [手机]开启 开发者模式 + USB调试
- 开发者模式
- 开启USB调试
- 数据线 手机 + 电脑 链接 -> 提示:同意
- 操作
>>>adb devices
>>>adb install D:/Download/xxx.apk
>>>adb uninstall com.taobao.idlefish[包名]
>>>adb push 电脑文件 手机目录 /sdcard/Download/
>>>adb pull 手机文件 电脑
>>>adb pull /sdcard/Download/code.js D:/xxx/
>>>adb shell getprop ro.product.cpu.abi
- arm64-v8a [一般真机]
- arm-v7a [几百块钱]
- x86-64 [模拟器]
>>>adb shell [直接登录到手机]
- 小结
>>>adb kill-server
>>>adb start-server
>>>adb devices
>>>adb install ....
>>>adb push ...
>>>adb pull ...
>>>adb shell getprop ro.product.cpu.abi
>>>adb shell
>>>adb reboot
答疑:
- adb shell 的命令和 linux一样吗?
- 安卓手机本质Linux操作系统
- adb shell【SSH】
- 安卓命令=Linux操作系统
- adb -s 文档中有吗?
- adb install xxxx.apk
- adb -s 9B181FFAZ001F3 install xxxx.apk
- 需要ROOT吗?
- 使用adb远程控制手机,不需要ROOT,只需要手机上:开发者模式+USB调试
- adb 版本有关系?
- 简单的操作,其他版本一般都可以。
- 30.0.5版本
3.抓包
3.1 http请求抓包【2】
- [电脑]安装charles + 激活 + 配置 -> 电脑IP地址 + charles端口
- Charles配置端口:9888
- 电脑IP地址:192.168.0.7
- [手机]配置系统代理 ->
- 电脑IP地址:192.168.0.7
- charles端口:9888
注意:电脑 + 手机 必须在同一个局域网内(同一个路由器)。
-> 电脑上的charles就可以抓取手机上的请求包
案例:臧航准备网
答疑:任意真机+模拟器 都可以进行测试。
3.2 https请求抓包【4】+ 证书
本质流程:
- [电脑]安装charles + 激活 + 配置 -> 电脑IP地址 + charles端口
- Charles配置端口:9888
- 电脑IP地址:192.168.0.7
- [手机]配置系统代理 ->
- 电脑IP地址:192.168.0.7
- charles端口:9888
- [手机]下载并安装charles证书
- 安卓7以下,只需要把证书安装在“用户级别” 【网易mumu模拟器,安卓6】
- [电脑]安装charles + 激活 + 配置 -> 电脑IP地址 + charles端口
- Charles配置端口:9888
- 电脑IP地址:192.168.0.7
- [手机]配置系统代理 ->
- 电脑IP地址:192.168.0.7
- charles端口:9888
- [手机]下载并安装charles证书 “用户级别”
- 手机浏览器中打开一个网址 chls.pro/ssl
- 安装成功
案例:爱安丘、油联合伙人、B站
- 安卓7及以上,必须把证书安装在“系统级别”(默认安卓禁止操作) 【真机】
- 证书安装在“用户级别”
- ROOT + Magisk面具 + move cert模块(手机重启)
- “用户级别” -> “系统级别”
----------------------------------------------------------------
- [电脑]安装charles + 激活 + 配置 -> 电脑IP地址 + charles端口
- Charles配置端口:9888
- 电脑IP地址:192.168.0.7
- [手机]配置系统代理 ->
- 电脑IP地址:192.168.0.7
- charles端口:9888
- [手机]下载并安装charles证书 “用户级别”
- 手机浏览器中打开一个网址 chls.pro/ssl
- 安装成功
- [手机]magisk面具中刷入move cert模块(重启手机)
- ROOT + magisk面具 + 刷入move cert模块
1.获取move cert模块 zip文件,在电脑 D:\move-cert.zip
2.adb push D:\move-cert.zip /sdcard/Download/
3.打开magisk面具去刷刷入move cert模块
4.重启手机
- 愉快的抓包https的包了。
案例:爱安丘、B站
# 总结
- 一部真机 + ROOT
- adb
- https证书
实现:
- adb控制手机
- 常见:爱安丘、B站抓包
1.逆向基本流程
常见app的逆向的基本流程:
- 安装运行
- 抓包分析
- 反编译apk
- 在Java代码中定位 + Hook校验
- 基于Python还原算法
2.安装运行
后续我们对手机会经常进行:安装、卸载、上传、下载等操作。
- 【电脑】下载adb
- 【手机】开启开发者模式 + 打开usb调试 + USB线连接手机
- 【电脑】启动adb
- 【电脑】通过命令控制手机
2.1 adb
Android Debug Bridge,简称 adb(调试桥 ) 是一种功能多样的命令行工具,可让您与设备进行通信。
2.1.1 platform-tools
下载platform-tools(压缩包)内部包含adb
地址:https://developer.android.google.cn/studio/releases/platform-tools
但是有些同学会发现,自己电脑上下载的最新版 platform-tools
无法使用,此时可以选择下载低一点的版本。
推荐:r30.0.5版本
https://dl.google.com/android/repository/platform-tools_r30.0.5-windows.zip
https://dl.google.com/android/repository/platform-tools_r30.0.5-linux.zip
https://dl.google.com/android/repository/platform-tools_r30.0.5-mac.zip
2.1.2 解压
platform-tools是一个压缩包,解压后就是一个普通的文件夹(内部包含adb、fastboot)。
将解压后的文件夹拷贝到指定目录(当做安装目录),不要有中文路径。
2.1.3 环境变量
为了以后更加方便的使用adb和fastboot,我要讲将platform-tools的目录加入到系统环境变量。
-
win系统:
-
mac系统:将以下两行代码,添加到你的
~.zprofile
文件中
PATH="/Library/Android/sdk/platform-tools:${PATH}" export PATH PATH="/Users/wupeiqi/service/platform-tools:${PATH}" export PATH
2.1.4 测试adb
- win
adb --version
fastboot --version
-
mac
adb --version fastboot --version
2.1.5 连接手机
开启手机的USB调试,然后:
-
用数据线连(官方线)接手机和电脑,会提示是否授权窗口,点击授权。
尽量使用官方自带的数据线,不要用自己网上几块钱买的。
-
打开终端输入
adb devices
查看是否连接:win和mac系统:adb devices ubuntu系统:sudo adb devices
看到设备信息,则表示连接成功。。。
如果你是windows操作系统,可能一直无法显示连接的设备,可能是因为电脑为安装谷歌USB驱动导致。
例如:fastboot devices 无法读取到设备。
2.2 操作
-
启动和关闭
>>>adb start-server 启动ADB >>>adb kill-server 关闭ADB >>>adb devices 查看已连接的设备
-
上传和下载文件
adb -s 1a9f22350107 push C:\2345Downloads\demo.txt /sdcard
adb -s 1a9f22350107 pull /sdcard/demo.txt C:\2345Downloads
-
安装和卸载app
adb -s 1a9f22350107 install C:\2345Downloads\xianyu.apk
adb -s 1a9f22350107 uninstall 包名称 adb -s 1a9f22350107 uninstall com.taobao.idlefish adb -s 1a9f22350107 uninstall com.nb.city
adb -s 1a9f22350107 shell pm list packages # 查看包列表 adb -s 1a9f22350107 shell pm list packages -e 关键字 # 查看包列表(搜索)
-
查看处理器(32位/64位)
adb shell -s 1a9f22350107 getprop ro.product.cpu.abi
armeabi-v7a(32位ARM设备) arm64-v8a (64位ARM设备)
-
进入系统
C:\luffy\platform-tools> adb shell olivelite:/ $ su olivelite:/ # ls acct init.exaid.hardware.rc lost+found apex init.mishow.ctl.rc mnt bin init.miui.cust.rc odm
-
其他
- 查看手机设备:adb devices - 查看设备型号:adb shell getprop ro.product.model - 查看电池信息:adb shell dumpsys battery - 查看设备ID:adb shell settings get secure android_id - 查看设备IMEI:adb shell dumpsys iphonesubinfo - 查看Android版本:adb shell getprop ro.build.version.release - 查看手机网络信息:adb shell ifconfig - 查看设备日志:adb logcat - 重启手机设备:adb reboot - 安装一个apk:adb install /path/demo.apk - 卸载一个apk:adb uninstall <package> - 查看系统运行进程:adb shell ps - 查看系统磁盘情况:adb shell ls /path/ - 手机设备截屏:adb shell screencap -p /sdcard/aa.png - 手机文件下载到电脑:adb pull /sdcard/aa.png ./ - 电脑文件上传到手机:adb push aa.png /data/local/ - 手机设备录像:adb shell screenrecord /sdcard/ab.mp4 - 手机屏幕分辨率:adb shell wm size - 手机屏幕密度:adb shell wm density - 手机屏幕点击:adb shell input tap xvalue yvalue - 手机屏幕滑动:adb shell input swipe 1000 1500 200 200 - 手机屏幕带时间滑动:adb shell input swipe 1000 1500 0 0 1000 - 手机文本输入:adb shell input text xxxxx - 手机键盘事件:adb shell input keyevent xx
3.抓包
-
http请求
【电脑】安装并运行抓包工具,例如:charles 【手机】配置手机系统代理
-
https请求
-
安卓7以下
【电脑】安装并运行抓包工具,例如:charles 【手机】配置手机系统代理 【手机】安装charles证书(用户证书)
-
安卓7及以上(手机需ROOT)
【电脑】安装并运行抓包工具,例如:charles 【手机】配置手机系统代理 【手机】安装charles证书(用户证书) 【手机】安装ROOT + 面具 + movecert模块(重启自动将用户证书移动至系统证书)
-
3.1 charles安装和配置【电脑】
1.安装
-
mac用户
访问网址 https://xclient.info/s/charles.html 根据提示下载并破解。
-
windows用户:
注册码 Registered Name: https://zhile.io License Key: 48891cf209c6d32bf4
2.配置
打开 【Proxy】>【Proxy Settings】设置代理IP端口:
打开 【Proxy】>【SSL Proxy Settings】设置代理IP端口:
查看charles所在的电脑的IP地址:
打开 【Help】>【Local IP...】设置代理IP端口:
3.2 系统代理【手机】
3.3 案例:臧航(http抓包)
上述过程配置完成之后,就可以完成对http请求的抓包,案例:臧航准备网。
接下来在手机或模拟器上安装臧航准备网,就可以实现请求抓包。
注意:
- 手机和电脑必须在同一个局域网(连接同一个路由器)
- 手机不需要ROOT,就可以实现
3.4 安装charles证书【手机】
上述配置完成后,手机或模拟器只能抓取http请求的数据包,https无法抓取。
想要抓取,就需要在手机上安装charles的证书。
- 安卓7以下,证书安装在 用户级别。 【模拟器】
- 安卓7及以上,安装安装在 系统级别(需ROOT)。【真机】
3.4.1 用户证书
在手机上打开浏览器输入网址,下载并安装证书。
如果默认浏览器无法下载证书,可以尝试在手机上安装火狐浏览器下载并安装证书。
chls.pro/ssl
注意:需先在手机上线设置系统代理
3.4.2 案例:安卓7以下+https抓包
安卓7 以下的设备现在几乎没有,目前使用网易mumu模拟器来进行操作(安卓6)。
在模拟器上安装:爱安丘app然后进行抓包。
3.4.3 系统证书(手机需ROOT)
在安卓7及以上的手机中,想要抓app发送的https请求的包,必须把证书安装在系统级别(必须ROOT)。
- 手机ROOT + Magisk面具
- 安装用户证书(与上面操作一样)
- 在magisk面具中刷入move cert模块(关机重启,自动会将用户证书移至系统证书)
1.刷move cert模块
下载move cert模块并刷入到magisk面具中。
作用:可以将手机 用户级别
证书自动移动到 系统级别
。
模块已准备好,请大家去随堂课件中获取。
2.传至手机
将move cert压缩包传到手机(任意好找的一个目录 /sdcard/Download/
)。
3.magisk刷move cert模块
4.火狐浏览器
在手机上安装火狐浏览器,后续方便访问charles下载证书(有些机型Pixel自带谷歌浏览器不好使)。
>>>adb install xxx/xxx/xx/firefox.apk
https://www.wandoujia.com/apps/288613
5.配置代理
6.安装用户证书+重启
用浏览器打开网址 chls.pro/ssl
,下载并安装 用户证书。
3.4.4 案例:安卓7及以上+http抓包
案例:爱安丘、油联合伙人等
至此,无论你是什么设备,都可以进行抓包了。
注意:有些APP还会有其他的抓包防护,在后期的抓包专题会讲,当前测试请使用:B站、爱安丘、油联合伙人来进行测试自己的抓包情况。