andriod7.0+charles抓包unknown问题

文章目录

  • 前言
  • 反编译
  • 修改配置
  • 重新打包

前言

之前在做手机采集调研的时候,发现对于andriod7以上的版本,很多app用charles抓包都会显示unknown,于是上网查了一下,发现是在android7之后系统证书和用户自行安装的证书被分开了,很多app可以识别到非系统证书从而不让访问了。于是上网找了找解决方法,最终是反编译apk后修改了点东西再重新安装之后好了。
andriod7.0+charles抓包unknown问题_第1张图片

反编译

apk反编译需要apktool这一工具,网上的下载资源很多。下载完之后将apktool.jar和需要反编译的apk放在同一路径下,随后命令行运行java -jar apktool的名字 d(反编译) 要解包的apk -o(输出) 文件名,例如java -jar .\apktool_2.6.0.jar d .\douyin.apk -o douyin,运行成功之后应该会在路径下生成一个douyin的文件夹在这里插入图片描述
打开douyin文件夹,其中res和AndroidManifest.xml是本次关注的重点。
andriod7.0+charles抓包unknown问题_第2张图片

修改配置

在res路径下新建network_security_config.xml,内容为

<network-security-config>
    <debug-overrides>
        <trust-anchors>
       <certificates src="user" />
        trust-anchors>
    debug-overrides>
network-security-config>

在AndroidManifest.xml找到application,新增android:networkSecurityConfig="@xml/network_security_config
在这里插入图片描述

重新打包

命令行运行java -jar apktool的名字 b(打包) 要打包的文件夹名字,例如java -jar .\apktool_2.6.0.jar b .\douyin\,打包完之后会在该路径的dist目录下生成对应apk。但这个时候的apk还是不能安装的,因为还没有签名,接下来生成签名keytool -genkey -alias douyin.keystore -keyalg RSA -validity 40000 -keystore douyin.keystore该命令的使用参数为:
-genkey 产生证书文件
-alias 产生别名
-keystore 指定密钥库的.keystore文件中
-keyalg 指定密钥的算法,这里是RSA(非对称密钥算法)
-validity 为证书有效天数,这里是40000天
生成签名文件之后,运行以下命令给apk签名

jarsigner -verbose -keystore douyin.keystore douyin.apk douyin.keystore

然后这个apk就可以安装了,但是需要注意如果手机上有原来的app需要先卸载再重新安装

你可能感兴趣的:(android,爬虫)