wx朋友圈Hook(一)

   日期:2020-10-03     浏览:168    评论:0    
核心提示:一、定位到关键代码第一次尝试首先想到使用adb shell dumpsys activity top代码获取朋友圈界面的Activity,com.tencent.mm/.plugin.sns.ui.SnsUploadUI,直接反编译微信得到源码第二次尝试然后发现代码实在太多,很难浏览,然后想到DDMS的轨迹追踪功能,我们录取一个发表朋友圈的轨迹,查找OnClick方法,果然找到一个OnMenuItemClick直接搜索这个方法无奈代码还是太多,感觉很难继续分析下去第三次尝试这里考虑

一、定位到关键代码

第一次尝试

首先想到使用adb shell dumpsys activity top代码

获取朋友圈界面的Activity,com.tencent.mm/.plugin.sns.ui.SnsUploadUI,直接反编译微信得到源码

第二次尝试

然后发现代码实在太多,很难浏览,然后想到DDMS的轨迹追踪功能,我们录取一个发表朋友圈的轨迹,查找OnClick方法,果然找到一个OnMenuItemClick

直接搜索这个方法


无奈代码还是太多,感觉很难继续分析下去

第三次尝试

这里考虑到使用DDMS的Dump View Hierarchy for UlAutomator功能,首先微信进入发送朋友圈的界面,然后dump

最后找到“测试测试”对应的id,然后通过搜索findViewById,得到了关键的代码

分析znn的调用情况

没有发现函数的调用,但是发现了一个赋值,那就搜索一下this.desc

果然找到一个赋值,但是当我们开始分析zno的a方法时,发现他只是一个接口

既然如此,那就只能考虑搜索zno类的赋值了,全局搜索一下,查看每一个赋值操作

终于找到关键的类QA

QA这里先对传入的参数进行了判断,然后返回对应的类实例

this.ziU=0时:

this.ziU=14时:

这里应该已经可以猜测这个参数和朋友圈发送的方式有关系了,继续分析ziU的值

使用frida脚本打印一下各种情况的this.ziU参数

import frida
import sys
jscode ='''
Java.perform(function(){ 
    var SnsUploadUI = Java.use('com.tencent.mm.plugin.sns.ui.SnsUploadUI');
    var ao = SnsUploadUI.ao.overload("android.os.Bundle");//重载
    ao.implementation = function(bundle)
    { 
    var ret = ao.call(this, bundle);//调用方法获取返回值
    send("sns type = " + this.ziU.value);//打印ziU的值
    return ret;
    }
}
);
'''
def message(message,data):
    if message["type"] == 'send':
        print("[*] {0}".format(message["payload"]))
    else:
        print(message)

process = frida.get_remote_device().attach("com.tencent.mm")
script = process.create_script(jscode)
script.on("message",message)
script.load()
sys.stdin.read()

最后总结如下:

9:纯文本动态
,0:纯图片、图片+文字动态
,14:纯视频、视频+文字动态

由于微信不支持视频加图片,所以没有进行这个测试

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服