揰掵佲 发表于 2019-3-5 13:11:40

微XinPC版发送视频消息研究

先看效果图!发送视频,确定是可以播放的。然后,原理很简单。主要是看分析


逻辑分析
如果观察仔细,或者进入ida分析过,这个发送逻辑的人应该了解了!
发送文本消息、艾特消息、图片消息等,只是这个函数中的不同分支,也就说是,里面可能包含着其他类型的消息,因此,我们在这个函数的头部下断,然后发送一个视频给某个好友或者群,断下之后,一路跟踪的分支 3这里少去图片,直接给汇编代码,有空的自己可以分析一下
0FE19D32|.6A 00         |PUSH 0x0
0FE19D34|.83EC 14       |SUB ESP, 0x14
0FE19D37|.8BCC          |MOV ECX, ESP
0FE19D39|.8965 D0       |MOV , 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 , 0xB
0FE19D52|.8BCC          |MOV ECX, ESP
0FE19D54|.8965 C0       |MOV , 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 , ESP
0FE19D65|.FF75 CC       |PUSH                          ;wx结构
0FE19D68|.E8 83903B00   |CALL 101D2DF0                           ;call返回的EAX是结构
0FE19D6D|.8D85 A4FBFFFF |LEA EAX,                   ;这个地址是一个固定的数据
0FE19D73|.C645 FC 0D    |MOV BYTE PTR SS:, 0xD
0FE19D77|.50            |PUSH EAX
0FE19D78|.E8 E301FAFF   |CALL 0FDB9F60
0FE19D7D|.8BC8          |MOV ECX, EAX
0FE19D7F|.C745 FC FFFFF>|MOV , -0x1
0FE19D86|.E8 95921600   |CALL 0FF83020                           ;这个是关键call

在关键call之前主要做了一件事情,组合数据结构,放到堆栈!这个call有17个参数。没经过一个call的返回值eax是一组数据。
在0FE19D6D出lea eax的数据,我这边测试是一段固定数据。
00DAE0C8000001E6
00DAE0CC0000033E
00DAE0D000000226
00DAE0D400000001
00DAE0D8000001E6
这是数据结构的,下图是关键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_100CB*F0(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;
页: [1]
查看完整版本: VXPC版发送视频消息研究