微信PC版Hook发送视频消息研究

 

逻辑分析
如果观察仔细,或者进入IDA分析过,这个发送逻辑的人应该了解了!
发送文本消息、艾特消息、图片消息等,只是这个函数中的不同分支,也就说是,里面可能包含着其他类型的消息,因此,我们在这个函数的头部下断,然后发送一个视频给某个好友或者群,断下之后,一路跟踪的分支 3  这里少去图片,直接给汇编代码,有空的自己可以分析一下 

0FE19D32  |.  6A 00         |PUSH 0x0
0FE19D34  |.  83EC 14       |SUB ESP, 0x14
0FE19D37  |.  8BCC          |MOV ECX, ESP
0FE19D39  |.  8965 D0       |MOV [LOCAL.12], ESP
0FE19D3C  |.  6A FF         |PUSH -0x1
0FE19D3E  |.  68 083BD410   |PUSH 10D43B08
0FE19D43  |.  E8 68903B00   |CALL 101D2DB0                           ;  call返回的EAX是结构
0FE19D48  |.  83EC 14       |SUB ESP, 0x14
0FE19D4B  |.  C745 FC 0B000>|MOV [LOCAL.1], 0xB
0FE19D52  |.  8BCC          |MOV ECX, ESP
0FE19D54  |.  8965 C0       |MOV [LOCAL.16], ESP
0FE19D57  |.  53            |PUSH EBX                                ;  视频路径结构
0FE19D58  |.  E8 93903B00   |CALL 101D2DF0                           ;  call返回的EAX是结构
0FE19D5D  |.  83EC 14       |SUB ESP, 0x14
0FE19D60  |.  8BCC          |MOV ECX, ESP
0FE19D62  |.  8965 BC       |MOV [LOCAL.17], ESP
0FE19D65  |.  FF75 CC       |PUSH [LOCAL.13]                         ;  wx结构
0FE19D68  |.  E8 83903B00   |CALL 101D2DF0                           ;  call返回的EAX是结构
0FE19D6D  |.  8D85 A4FBFFFF |LEA EAX, [LOCAL.279]                    ;  这个地址是一个固定的数据
0FE19D73  |.  C645 FC 0D    |MOV BYTE PTR SS:[EBP-0x4], 0xD
0FE19D77  |.  50            |PUSH EAX
0FE19D78  |.  E8 E301FAFF   |CALL 0FDB9F60
0FE19D7D  |.  8BC8          |MOV ECX, EAX
0FE19D7F  |.  C745 FC FFFFF>|MOV [LOCAL.1], -0x1
0FE19D86  |.  E8 95921600   |CALL 0FF83020                           ;  这个是关键call

在关键call之前主要做了一件事情,组合数据结构,放到堆栈!这个call有17个参数。没经过一个call的返回值eax是一组数据。
在0FE19D6D出lea eax的数据,我这边测试是一段固定数据。

00DAE0C8  000001E6
00DAE0CC  0000033E
00DAE0D0  00000226
00DAE0D4  00000001
00DAE0D8  000001E6

这是数据结构的,下图是关键call下断图,有兴趣的参考!最终效果,如文章开始GIF演示
 
IDA分析一下很清晰的看到 sub_10233020 调用了多少个参数的。。就能明白了!好了,这个就分享到这里!感谢 Angelxf 分享备份语音方法、发送消息方法等

case 3:
          if ( sub_10474FD0(v7) )
          {
            v60 = 0;
            v85 = &v55;
            sub_10482DB0(&unk_10FF3B08, -1);
            v87 = 11;
            v81 = &v50;
            sub_10482DF0(v7);
            v80 = &v45;
            sub_10482DF0(v84);
            LOBYTE(v87) = 13;
            v44 = &v65;
            sub_10069F60();
            v87 = -1;
            sub_10233020(v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60);
            v87 = 14;
            v20 = sub_1024EE70();
            v21 = sub_1040A5D0(v20);
            v85 = v22;
            if ( sub_1040A5D0(&v65) != v21 || v23 != v85 )
            {
              v24 = sub_1040A5D0(&v65);
              v25 = v83;
              v72 = v24;
              v73 = v26;
              sub_100CBDF0(&v72);
              if ( sub_100CBCF0(v25) )
              {
                sub_1004E320(&v66);
                v67 = 0;
                v68 = 0i64;
                v69 = 0;
                LOBYTE(v87) = 16;
                v70 = -1;
                sub_100596A0(&v65);
                LOBYTE(v87) = 17;
LABEL_26:
                sub_100CAC50(&v66, 1);
                sub_10083CC0(&v66);
              }
            }
LABEL_27:
            v87 = -1;
            sub_1004DC80(&v65);
          }
          break;

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值