zoukankan      html  css  js  c++  java
  • 微信Hook劫获protobuf数据

        网上相关的微信Hook教程,讲的基本都是相同的功能,比如获取当前微信号,二维码登录,加群,获取群信息,发消息。但是貌似protobuf方面的没什么人讲到,我自己百度,Google了下是没找到,所以只能自食其力了。

        因为微信用的协议是mmtls,发送的数据呢是用的google的protobuf,知道这点后,咱可以自己去用protobuf练习写个demo,怎么写demo,咱就不赘述了,咱就说怎么来获取微信发送的protobuf数据吧。

        1.首先咱都知道微信发请求都会调用req2buf相关的函数然后再post出去,接受数据呢会调用buf2resp相关的函数对protobuf数据进行反序列化,然后再进行接下来的逻辑处理。所以咱就随便OD里面找个req2buf相关的函数头进行断点

       

     

        2.接下来咱可以推断req2buf函数里面肯定调用了protobuf相关的序列化函数功能的。那咱就借助IDA,来找下关键字。首先打开IDA,载入WeChatWin.dll,按快捷键shift+f12,切到字符串搜索窗口。然后输入关键词“google"查找,结果如下图:

     

       注意看截图里面画红框的”message_lite.cc“,那为什么是它呢?是因为我自己在写protobuf练习的demo过程中,发现protobuf序列化和protobuf反序列化过程中都会调用到这个文件里面的相关函数。

        那是不是只要把这个字符相关的函数给下个断点,就可以获取调用入口了呢。ok,接下来看有哪几个函数引用了这个字符串,

        3.双击红框的地方,跳过去,然后再按”X“键查看引用的地方,结果如图:

     

        可以看到有3个函数引用到了,那咱就开OD,对3个函数下断点,然后1步步进行调试了,就会找到调用的入口函数。因为我自己已经用OD调试过了,就不再演示怎么用OD找入口函数了,直接用IDA来找了。

    -----------------------------------------

    IDA快速查找protobuf序列化,反序列化入口函数。

    1. 随便查找个req2buf相关的函数

       

        因为有了前面的推断,及OD的调试经验。所以可以知道这个函数里面肯定要有调用protobuf序列化的函数。咱就1个函数1个函数的点进去看。过程就不说了,目标函数就是画红框那个。它的2个参数呢,就是咱要的

    第1个参数是放的序列化后的数据缓冲区,第2个参数是缓冲区大小。在OD调试的时候就可以把数据给拷出来,放到protobuf解析工具里面做解析。

    1.序列化函数入口断点:

     

    2.继续下一步,然后复制数据

     

    3.处理空格,然后解析

     

        protobuf反序列化的入口函数过程是模一样的,先找个buf2resp的函数头断点。再相关的message_lite.cc函数断点,下面附一图IDA里面的找buf2resp反序列化的函数入口点吧。

     

  • 相关阅读:
    VB中String的用法及原理
    SQL中的left outer join,inner join,right outer join用法详解
    SqlServer,Oracle 常用函数比较
    sql 使用视图的好处
    修改数据库的兼容级别
    sql server2008修改登录名下的默认架构名
    SQL事务回滚 ADO BeginTrans, CommitTran 以及 RollbackTrans 方法
    sql事务(Transaction)用法介绍及回滚实例
    SQL Server更新表(用一张表的数据更新另一张表的数据)
    VB如何连接SQL Server数据库
  • 原文地址:https://www.cnblogs.com/qing123/p/15393544.html
Copyright © 2011-2022 走看看