目录
  1. 1. 20200520
    1. 1.1. 代理抓包
    2. 1.2. 开启全局代理
    3. 1.3. 修改代码中的代理设置
反编五-结束

20200520

上篇说到拿到了一些项目需要的Key 然后请求地址什么的都有了就想自己组装报文模拟请求了。 想拉取一个原来的请求看看大致的内容是什么,这时候发现我一直都没有拦截到过报文。尴尬了。。。
打开Charles发现除了刚开始的oss请求和广告分销的请求抓到了, 后面就是websocket的请求了。中间这么多登录的请求,用户数据的请求去哪里了?

代理抓包

google 搜了一下还真的发现一篇比较有意思的文章, 里面大概的也是就是, 你抓包其实是开了一个代理,让网络请求都通过你设定的代理走这样Charles才能抓到报文,但是如果这个时候有个请求选择了不往你的代理走那么你的Charles也就抓不到这个数据了。所以这里就可能需要一个真正的全局的代理了。

开启全局代理

博客中有提到一个代理apk, 但是了解下来那玩意不太好用,需要root权限,放弃考虑。
其他的关键词文章里面 发现了一个神器 Packet Capture , 一个免root手机抓包的工具,但是经测试还是不适用,正常环境下Packet Capture 正常运行 但是因为报文是HTTPS的 所以都是一些错误数据所以想转到VirtualXposed中 用Hook把请求都替换成http应该就能看到报文了。但是在VirtualXposed环境下,Packet Capture 正常情况是要获取系统一个VPN的权限的,但是在VirtualXposed中,VPN的权限也会申请但是在允许后没有任何反应,这个应该是VirtualXposed的一个问题把。

修改代码中的代理设置

本来以为没啥方案了, 后面在搜索apk防抓包的时候搜到确实有这种代码限制不使用代理来防止抓包的。就是设置okHttp的proxy属性,正常是个null, 就是跟随系统。 Proxy中有个Type枚举有三种属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public enum Type {
/**
* Represents a direct connection, or the absence of a proxy.
*/
DIRECT,
/**
* Represents proxy for high level protocols such as HTTP or FTP.
*/
HTTP,
/**
* Represents a SOCKS (V4 or V5) proxy.
*/
SOCKS
};

DIRECT: 表示直接连接或不使用代理。就是不走任何代理管你系统设置的是啥
HTTP: 代表高级协议(例如HTTP或FTP)的代理。 就是走Http或Ftp之类请求的代理
SOCKS: 代表SOCKS(V4或V5)代理。 就是走Socks的代理

而在Proxy的一个私有构造函数中就是

1
2
3
4
private Proxy() {
type = Type.DIRECT;
sa = null;
}

不使用代理,而在他上面,申明了一个全局常量

1
public final static Proxy NO_PROXY = new Proxy();

顺着这个思路在反编出来的代码中搜索Proxy,真的找到了相关的代理设置。

1
2
3
4
5
6
7
8
9
10
11
12
13
public OkHttpClient getClient() {
return (new OkHttpClient.Builder())
.connectTimeout(this.connectTimeout, TimeUnit.MILLISECONDS)
.readTimeout(this.readTimeout, TimeUnit.MILLISECONDS)
.retryOnConnectionFailure(true)
.writeTimeout(this.writeTimeout, TimeUnit.MILLISECONDS)
.proxy(Proxy.NO_PROXY)
.hostnameVerifier(new HostnameVerifier() {
public boolean verify(String param1String, SSLSession param1SSLSession) {
return true;
}
}).build();
}

代码里面真的设置了不使用代理。 看到整个是方法的 return值 瞬间就想到hook它!
hock点 getClient方法, 方法返回一个自定义的OkHttpClient 想想就简单。
然而一顿操作结束后 它crash了。。。
换了okhttp的版本,甚至把他包里面的okhttp拿过来也还是不行。 深思。。。
突然,hock啥, 直接改代码啊。
找到对应的smali 然后直接搜 NO_PROXY 直接删。
打包。签名。安装。转移到VirtualXposed 重启环境。数据出来了。

可以愉快的修改金额了。

但是这里还是没办法做到免费白嫖,修改金额只是你本地展示的金额,并不能真的用于扣款。

最后没啥办法了。 不过幸运的是还是有所收获的,比如防代理NO_PROXY,还有密钥存储。

文章作者: sovwcwsfm
文章链接: http://sovwcwsfm.com/blog/page/decompile05.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 _L