0x01 前言:

app抓包是逆向协议的前提,也是一个爬虫工程师的基本要求,最近发现这块知识非常欠缺就抓紧补补了(我太菜了)

然后接下来是通过vpn将流量导出到抓包软件的方式,而不是通过wifi设置代理,因为太容易被检测了。

0x02 环境配置

vpn代理软件就下载postern这个软件,vpn是在网络层这样可以把传输层和应用层的流量都抓到,大概是这样

当然这个配置规则的ip和端口其实是charles的socket代理的端口,和charles所在机器的ip,所以接下来继续配置charles,打开最右上角的按钮

修改proxy setting,把socket代理配置打开。

之后再返回到postern中,设置配置代理,然后设置配置规则,都在左边的按钮,点开就能看见

0x03 https的抓包

  然后前面大体已经配好了,http的流量完全可以抓了,不过现在的app将重要功能的请求方式全改成https了,会涉及到一个证书的验证

又因为在应用层抓包本质是一个中间人在拦截流量,导致客服端到服务器端的通信一分为二了,一部分是客户端到抓包软件,另一部分是

抓包软件到服务器端,所以得分开来考虑,

一.第一部分的情况分为客户端没有校验app证书和有校验证书

1.如果没有校验证书,首先需要把charles的证书安装到手机的根目录下并安装信任,

这里放个表哥的图片2333

图中的浏览器是手机的浏览器,也就是在手机去访问。

2.然后如果客户端有校验证书的话,也就是客户端并不默认信任系统根目录安装的证书,额外增加一手代码验证,也就是证书绑定机制,这里有好几种处理方式

2.1 hook住checkServerTrusted的所有重载,把所有重载置空。贴个肉丝表哥的代码

function hook_ssl() {
Java.perform(function() {
var ClassName = "com.android.org.conscrypt.Platform";
var Platform = Java.use(ClassName);
var targetMethod = "checkServerTrusted";
var len = Platform[targetMethod].overloads.length;
console.log(len);
for(var i = 0; i < len; ++i) {
Platform[targetMethod].overloads[i].implementation = function () {
console.log("class:", ClassName, "target:", targetMethod, " i:", i, arguments);
//printStack(ClassName + "." + targetMethod);
}
}
});

2.2 objection直接把ssl ping给关了

android sslpinning disable

2.3 还没研究,还在继续学习中

二.服务器端有校验证书,这波其实和第一部分类似,不过我们不能再通过hook服务器端的代码来bypass了,我们得学会伪装

比如charles这个中间人,穿上客户端的衣服,给服务器端发请求不就好了,所以这里解决方式就是将手机app中的内置证书,装入

charles中,这波操作,首先需要找到证书文件和证书密码,

对apk解包后,直接搜索p12为后缀的文件,常见命令tree -NCfhl |grep -i p12,直接打印出p12的路径,有些app狡猾的话,

会估计把p12文件的后缀改成别的格式,file文件可以查看一下文件格式,找到文件中,hook出密码,这里贴一波表哥的代码

function hook_KeyStore_load() {
Java.perform(function () {
var StringClass = Java.use("java.lang.String");
var KeyStore = Java.use("java.security.KeyStore");
KeyStore.load.overload('java.security.KeyStore$LoadStoreParameter').implementation = function (arg0) {
printStack("KeyStore.load1");
console.log("KeyStore.load1:", arg0);
this.load(arg0);
};
KeyStore.load.overload('java.io.InputStream', '[C').implementation = function (arg0, arg1) {
printStack("KeyStore.load2");
console.log("KeyStore.load2:", arg0, arg1 ? StringClass.$new(arg1) : null);
this.load(arg0, arg1);
}; console.log("hook_KeyStore_load...");
});
}

然后就打开charles添加证书,

APP 抓包(应用层)的更多相关文章

  1. Fiddler和app抓包

    1:请在“运行”,即下面这个地方输入certmgr.msc并回车,打开证书管理. 打开后,请点击操作--查找证书,如下所示: 然后输入“fiddler”查找所有相关证书,如下所示: 可以看到,我们找到 ...

  2. Fiddler 网页采集抓包利器__手机app抓包

    用curl技术开发了一个微信文章聚合类产品,把抓取到的数据转换成json格式,并在android端调用json数据接口加以显示: 基于weiphp做了一个掌上头条插件,也是用的网页采集技术:和一个创业 ...

  3. scrapy之手机app抓包爬虫

    手机App抓包爬虫 1. items.py class DouyuspiderItem(scrapy.Item): name = scrapy.Field()# 存储照片的名字 imagesUrls ...

  4. Scrapy——6 APP抓包—scrapy框架下载图片

    Scrapy——6 怎样进行APP抓包 scrapy框架抓取APP豆果美食数据 怎样用scrapy框架下载图片 怎样用scrapy框架去下载斗鱼APP的图片? Scrapy创建下载图片常见那些问题 怎 ...

  5. 猫眼电影App抓包获取评论数据接口

     之前在CSDN程序人生公众号上看到了这篇文章<邪不压正>评分持续走低,上万条网友评论揭秘,是救救姜文还是救救观众?,文中提到了通过抓包猫眼App发现了评论的数据接口:http://m.m ...

  6. APP 抓包-fiddler

    App抓包原理 客户端向服务器发起HTTPS请求 抓包工具拦截客户端的请求,伪装成客户端向服务器进行请求 服务器向客户端(实际上是抓包工具)返回服务器的CA证书 抓包工具拦截服务器的响应,获取服务器证 ...

  7. 【破解APP抓包限制】Xposed+JustTrustMe关闭SSL证书验证!

    转载:https://www.jianshu.com/p/310d930dd62f 1 前言 这篇文章主要想解决的问题是,在对安卓手机APP抓包时,出现的HTTPS报文通过MITM代理后证书不被信任的 ...

  8. fiddler抓包+安卓机 完成手机app抓包的配置 遇到的一些问题

    fiddler抓包+安卓模拟器完成手机app抓包的配置:fiddler抓包+雷电模拟器 完成手机app抓包的配置 其实在安卓真机上弄比在虚拟机上弄更麻烦一点,它们的步骤都差不多一样,就是在安卓真机上弄 ...

  9. Fiddler+雷电模拟器进行APP抓包

    1.下载最新版Fiddler,强烈建议在官网下载:https://www.telerik.com/download/fiddler 2. 正常傻瓜式安装,下一步,下一步,安装完毕后,先不用急于打开软件 ...

随机推荐

  1. C语言编程 菜鸟练习100题(11-20)

    [练习11]计算 int, float, double 和 char 字节大小 0. 题目: 计算 int, float, double 和 char 字节大小 1. 分析: 使用 sizeof 操作 ...

  2. Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用

    写在前面   Api网关我们之前是用 .netcore写的 Ocelot的,使用后并没有完全达到我们的预期,花了些时间了解后觉得kong可能是个更合适的选择. 简单说下kong对比ocelot打动我的 ...

  3. 企业微信三种token

    http://www.upwqy.com/doc/28.html 基本配置介绍 区分三种类型access_token 服务商的token 说明:以corpid(服务商CorpID).provider_ ...

  4. GO学习-(31) Go语言操作Elasticsearch

    Elasticsearch 本文简单介绍了ES.Kibana和Go语言操作ES. Elasticsearch 介绍 Elasticsearch(ES)是一个基于Lucene构建的开源.分布式.REST ...

  5. Step By Step(userdata)

    Step By Step(userdata) 在Lua中可以通过自定义类型的方式与C语言代码更高效.更灵活的交互.这里我们通过一个简单完整的示例来学习一下Lua中userdata的使用方式.需要说明的 ...

  6. 分布式 redis 延时任务 基于 springboot 示例

    Lilishop 技术栈 官方公众号 & 开源不易,如有帮助请点Star 介绍 官网:https://pickmall.cn Lilishop 是一款Java开发,基于SpringBoot研发 ...

  7. Django(62)自定义认证类

    前言 如果我们不用使用drf那套认证规则,我们想自定义认证类,那么我们首先要知道,drf本身是如何定义认证规则的,也就是要查看它的源码是如何写的 源码分析 源码的入口在APIView.py文件下的di ...

  8. 【Python报错】RuntimeError: DataLoader worker (pid(s) 9764, 15128) exited unexpectedly

    batch_size = 2# 256 def get_dataloader_workers(): #@save """使用4个进程来读取数据.""& ...

  9. 【NX二次开发】指定矢量控件,记住上次选择的方向

    block UI控件如果有RetainValue属性,就用这个属性.没有这个属性可以参考下面这种方法.以矢量控件为例: 1.在apply_cb回调中,将控件值保存到文本中 double TopForT ...

  10. Pytest测试框架入门到精通(一)

    Python测试框架之前一直用的是unittest+HTMLTestRunner,听到有人说Pytest很好用,所以这边给大家介绍一下Pytest的使用 pytest是一个非常成熟的全功能的Pytho ...