iOS表格绘制

Windows抓包http请求

2023-02-11  本文已影响0人  Yellowtail

概述

玩了一段时间的逆向破解,对Windows上抓包有了一定的经验,在这里分享给大家

限制:
如果要抓包的对象,网络协议是tcp,那就只能用 wireshark了,此文方法不好使

原理

抓包大概分为两大类

  1. 嗅探
    wireshark eCapture,技术上比较底层一点,在驱动或者内核里,什么包都能抓到,一般来说无法修改
  2. 中间人
    技术上在应用层,适用面窄一些,但是可以修改请求和响应

此文重点描述中间人这种模式,因为门槛低,UI界面友好

中间人

先简单介绍一下中间人原理
假设有一个游戏A,游戏服务器B
原本的流量路径是A->B
中间人就是通过某种手段,把这条路径变成 A->C->B
这里的C一般包含抓包软件,这样我们就能抓到所有的请求,看到发生了什么事情

根据某种手段的不同,分为几类

  1. 代理模式
  2. 虚拟网卡
  3. hosts/dns

代理模式

有一些编程语言和框架,内部默认实现支持代理模式,如Java的 apache http client,我们可以通过修改环境变量来达到这个目的;
如果是手机,那么还可以在WiFi设置里填写

总而言之,要使用这种模式,需要应用或者操作系统支持

比如Windows就提供了这种设置入口,但是不一定有用,因为应用程序可以不理会Windows的这种标准

image.png

同理还有 charles 的 windows proxy, IE的全局代理

对于安卓手机或苹果手机,连上路由器wifi,或者电脑热点wifi(笔记本),再在手机上设置wifi代理
成功率也不是100%
流量的确会经过这个wifi,但是应用程序不一定认这个系统代理,程序员也可以手动关闭代理选项,如Java的OkHttp

虚拟网卡

代理模式,属于制定了一个标准,但是这个标准的执行,就听天由命了,完全看运气,目标程序可以遵循这个标准,也可以不遵循
所以就有了另外一个技术路线虚拟网卡

大概原理就是:不管你代码怎么写的,你想联网,肯定要通过物理硬件网卡才行,那么如果伪造一个网卡,那么目标程序的流量肯定100%经过这个网卡的,那么请求数据就肯定可以抓到了,这个就是虚拟网卡

hosts/dns

现实世界中,目标程序访问互联网一般都是通过域名
而域名最后都会转为ip来进行访问的
所以也可以在这个环节来操作,修改解析的ip,让请求直接发到某个地方来抓包

基本步骤是:

  1. 修改hosts,或者设置自定义dns,让指定域名解析到自定义ip(一般来说都是自己电脑)
  2. 在自定义ip这台机器上,起一个服务,开启80端口(http)和443端口(Https)
  3. 这个服务其实自己就可以抓包了,但是没有找到开源成品,所以我是自己写了一个(记得处理证书问题),把接收到的流量再转到抓包软件上,如Charles
  4. 不管是自己的服务还是抓包软件,现在能接收请求了,但是无法发出请求,因为dns变了,会死循环,所以需要借助Dns Over Http来修正这个问题,如果是 charles,可以通过设置 External DNS Resolver来解决
image.png image.png

整体而言,这个方案很繁琐,比较绕,不太友好
不太建议使用

clash 实战

上面介绍了各种技术路线,这里用比较通用的虚拟网卡路线,选一个场景,给大家演示一下

安装虚拟网卡

image.png image.png

操作好之后,修改配置文件


image.png

这里贴一份我的配置,大家看着改

mixed-port: 7890
allow-lan: false
external-controller: 127.0.0.1:65360
secret: 462a5c83-xxx

proxies:
  - name: Fiddler
    type: socks5
    server: 127.0.0.1
    port: 1080
// charles 代理
  - name: charles  
    type: socks5
    server: 127.0.0.1
    port: 8889
proxy-groups:
  - name: Proxy
    proxies:
      - Fiddler
    type: select
rules:
  - PROCESS-NAME,Python.exe,DIRECT
  - PROCESS-NAME,qbittorent.exe,DIRECT
  - PROCESS-NAME,WeChatAppEx.exe,Fiddler
  - PROCESS-NAME,WeChat.exe,Fiddler
  - PROCESS-NAME,WeChatPlayer.exe,Fiddler
  - PROCESS-NAME,WeChatBrowser.exe,Fiddler
// 进程名
  - PROCESS-NAME,BloonsTD6.exe,charles   
  - MATCH,DIRECT

关键点就是

  1. 首先配置一个代理,charles,协议细节是socks://127.0.0.1:8889
  2. 新增规则,指定进程名BloonsTD6.exe的流量转到 代理charles

里面也有几个规则是针对微信小程序的,可以抓羊了个羊这种 🥰

charles

image.png image.png

测试

接下来启动游戏试一下


image.png
上一篇下一篇

猜你喜欢

热点阅读