好友
阅读权限25
听众
最后登录1970-1-1
|
揰掵佲
发表于 2019-3-5 13:10
本帖最后由 Kido 于 2019-6-6 18:33 编辑
先看效果图!发送视频,确定是可以播放的。然后,原理很简单。主要是看分析
逻辑分析
如果观察仔细,或者进入IDA分析过,这个发送逻辑的人应该了解了!
发送文本消息、艾特消息、图片消息等,只是这个函数中的不同分支,也就说是,里面可能包含着其他类型的消息,因此,我们在这个函数的头部下断,然后发送一个视频给某个好友或者群,断下之后,一路跟踪的分支 3 这里少去图片,直接给汇编代码,有空的自己可以分析一下
[Asm] 纯文本查看 复制代码 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的数据,我这边测试是一段固定数据。
[C++] 纯文本查看 复制代码 00DAE0C8 000001E6
00DAE0CC 0000033E
00DAE0D0 00000226
00DAE0D4 00000001
00DAE0D8 000001E6
这是数据结构的,下图是关键call下断图,有兴趣的参考!最终效果,如文章开始GIF演示
IDA分析一下很清晰的看到 sub_10233020 调用了多少个参数的。。就能明白了!好了,这个就分享到这里!感谢 Angelxf 分享备份语音方法、发送消息方法等
[Asm] 纯文本查看 复制代码 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; |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|