开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 26040|回复: 10
收起左侧

[Android逆向] 利用Hook技术实现对Instagram的抓包

[复制链接]
结帖率:0% (0/1)
发表于 2021-5-7 18:17:53 | 显示全部楼层 |阅读模式   湖北省天门市
利用Hook技术实现Instagram抓包
前言
听别人说Instagram没法抓包,于是这篇文章诞生了。

Instagram的防护做的很好,自己实现了一层SSL,直接过掉了r0capture等一些常见的工具,既然大佬的轮子用不了,那就只能自己动手了。

分析样本:Instagram 184.0.0.30.117

思路
使用反编译工具导入,发现对变量名进行了混淆,先捋一下思路:

抓不到包,看不到关键字,那就只能根据经验猜测字段了,APP有登录功能,尝试搜索常见的API名称 login,login/,login","login","login 。定位到URI的处理点在附近查看有没有关于协议头,URL和HTTP的处理。找到底层Send函数,Hook,拿到HTTP报文。

定位迷途
一番查找之后,初步断定URI的处理在X.6s1
这里的参数生成的过程及算法暂时不去管,先抓到包才是首要的

通过参数r3,追到了X.0uU,翻看之后看到了一堆像是协议头的操作




又发现了https链接的格式化,Hook试了试,URL就出来了。




之后线索就断了,堆栈回溯看了都没什么发现,突破点是在查看交叉引用向上找,在X.222.A7c,发现了一个用于打印错误的函数。



本着死马当活马医的想法,搜了一下builder.,发现了可疑点



跟进去看,尝试Hook了一下,调用到了这个类



再Hook看了看调用的A02方法,看看有没有找歪




既然没找错,看A02方法,发现JADX反编译不出来,换用GDA。



明显的协议头,明显的http,引用了apache开源的HTTP框架




executeWithDefragmentation调用了sendHeadersWithBodyAndEom




继续往下看



已经到底了...再往下就是Native,再追下去没什么意义,所以下面就是最终的Hook了~

HOOK打印HTTP报文
综上分析,只需要Hook com.facebook.proxygen.JniHandler.sendHeadersWithBodyAndEom 就能得到包数据了。

google了一下org.apache.http的源码:org.apache.http - Google


  1. function getClassName(obj) {
  2.     const objClass = Java.use("java.lang.Object").getClass.apply(obj);
  3.     return Java.use("java.lang.Class").getName.apply(objClass);
  4. }
  5. function getNetPack() {
  6.     Java.perform(function(){
  7.         var jString = Java.use("java.lang.String");
  8.         var jHttpMessage = Java.use("org.apache.http.HttpMessage");
  9.         var JniHandler = Java.use("com.facebook.proxygen.JniHandler");
  10.         var jBasicHeader = Java.use("org.apache.http.message.BasicHeader");
  11.         JniHandler.sendRequestWithBodyAndEom.overload('org.apache.http.client.methods.HttpUriRequest', '[B', 'int', 'int').implementation = function(jHttpUriRequest,bArr,i,i2){
  12.             console.log("\n-------------------------Headers-------------------------\n");
  13.             console.log(jhttpUriRequest.getURI() + "\n");
  14.             var headers = Java.cast(jhttpUriRequest, jHttpMessage).getAllHeaders();
  15.             for(var i = 0; i < headers.length; i++) {
  16.                 if (getClassName(headers[i]) === "org.apache.http.message.BasicHeader") {
  17.                     console.log(Java.cast(headers[i], jBasicHeader).toString());
  18.                 } else {
  19.                     console.log(headers[i].toString());
  20.                 }
  21.             }
  22.             console.log("\n" + jString.$new(bArr) + "\n");
  23.             return this.sendRequestWithBodyAndEom(jHttpUriRequest,bArr,i,i2);
  24.         }
  25.     })
  26. }
  27. setImmediate(function(){
  28.     setTimeout(getNetPack,10);
  29. })
复制代码




题外话
看了看enc_password的加密,看起来是RSA+AES-GCM,满心欢喜。

仔细一看native层调用,动态加载so… dump出来一看是vmp,mmp…


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2022-9-20 14:35:28 | 显示全部楼层   浙江省丽水市
非常不错。谢谢
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 20 天

发表于 2021-5-16 17:25:59 | 显示全部楼层   广东省佛山市
技术支持111111
回复 支持 反对

使用道具 举报

结帖率:67% (4/6)

签到天数: 14 天

发表于 2021-5-8 09:45:58 | 显示全部楼层   广东省广州市
想请教楼主一个问题,用xposed来hook某方法 能否知道是哪里调用了本方法   
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
 楼主| 发表于 2021-5-8 09:14:37 | 显示全部楼层   湖北省天门市
sanduosoft 发表于 2021-5-7 22:41
52大神来降维打击了,哈哈!!!!!!!

多多交流
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)

签到天数: 17 天

发表于 2021-5-7 22:41:53 | 显示全部楼层   河南省郑州市
52大神来降维打击了,哈哈!!!!!!!
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)

签到天数: 17 天

发表于 2021-5-7 22:39:03 | 显示全部楼层   河南省郑州市
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
 楼主| 发表于 2021-5-7 21:41:11 | 显示全部楼层   湖北省天门市
f100long 发表于 2021-5-7 20:56
大神无处不在。膜拜

哈哈,多多交流
回复 支持 反对

使用道具 举报

结帖率:80% (4/5)

签到天数: 13 天

发表于 2021-5-7 20:56:39 | 显示全部楼层   山东省济南市
大神无处不在。膜拜
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
 楼主| 发表于 2021-5-7 19:47:49 | 显示全部楼层   湖北省天门市

多多交流
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表