menu Chancel's blog
rss_feed
Chancel's blog
我就是这样的人

Android APP抓包

作者:Chancel, 时间:2021 Aug 17, 阅读:81

Fiddler抓包HTTPS需要安装其证书到系统内,对于桌面端操作系统/IOS来说比较容易,都是直接安装到系统内置证书然后选择信任即可

Android7.0之前也较为简单,同样是安装到系统内即可,但7.0之后大部分APP默认不再信任用户证书

Android7.0如果要抓包,方法还是有不少的,这里选择将Fiddler的证书内置到系统中(需要Root权限)

开启adb超级管理员授权后,步骤分为以下几步

  1. 下载Fiddler证书
  2. 转换Fiddler证书为Android设备所需要的特殊证书格式
  3. 将Android设备的system分区挂载(不挂载的话默认为只读无法操作)
  4. 推送制作好的证书到/system/etc/security/cacerts/中并更改权限
  5. 重启设备后即可抓包

操作过程如下

# 首先将Fiddler的cer证书转换成pem证书
➜  openssl x509 -inform der -in FiddlerRoot.cer -out FiddlerRoot.pem 

# 制作Android的内置证书(一)
➜  openssl x509 -inform PEM -subject_hash_old -in FiddlerRoot.pem | head -1
e5c3944b
➜  cat FiddlerRoot.pem > e5c3944b.0 
➜  openssl x509 -inform PEM -text -in FiddlerRoot.pem -out /dev/null >> e5c3944b.0
# 制作Android的内置证书(二)
➜  openssl x509 -inform PEM -subject_hash -in FiddlerRoot.pem | head -1 
82635c12
➜  cat FiddlerRoot.pem > 82635c12.0
➜  openssl x509 -inform PEM -text -in FiddlerRoot.pem -out /dev/null >> 82635c12.0

# 将制作完的2个证书推送到Android的sdcard/中
➜  adb push 82635c12.0 /sdcard/
82635c12.0: 1 file pushed, 0 skipped. 7.6 MB/s (1322 bytes in 0.000s)
➜  adb push e5c3944b.0 /sdcard/
e5c3944b.0: 1 file pushed, 0 skipped. 5.3 MB/s (1322 bytes in 0.000s)

# 使用shell模式并进入Root用户操作Android手机
➜  adb shell
polaris:/ # su

# 挂载system分区,然后复制2张Android证书到系统内部,更改其权限后重启机器
:/ mount -o remount,rw /system
:/ cp /sdcard/e5c3944b.0 /system/etc/security/cacerts/                            
:/ cp /sdcard/82635c12.0 /system/etc/security/cacerts/                            
:/ chmod 644 /system/etc/security/cacerts/e5c3944b.0
:/ chmod 644 /system/etc/security/cacerts/82635c12.0
:/ reboot

[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]