星空软件

 找回密码
 立即注册

[XML技术] 快手卡片生成器XML格式的消息体,支持私信对话代码分享

新库软件 | 2022-7-11 23:36:49 | 显示全部楼层 |阅读模式
大家有没有研究过快手的xml卡片消息呢,就是向对方发送的消息体是卡片形式的,点击后可以跳转到链接,而链接是可以对应到指定的脚本功能~~~比如跳QQ、微信等~
如下图所示!
快手官方版本是不支持这种形式的内容发送,是别人通过逆向快手APP客户端进而实现的,那么插件的话我们有下载链接,大家可以研究一下,如下为代码。
iOS逆向首先需要获取一个脱壳的APP,脱壳简单就不说了,可以用crackerxi+来操作。
截图202207112336449930.png
将下载后的ipa文件用解压缩软件(如7zip等)解压,从解压后的目录Payload/Aweme.app/找到Aweme可执行文件,拖入IDA进行反编译,ida可以检测objective-c语法。

然后进入主题,既然是聊天发消息,就尝试在ida里搜索"message",看看能否找到对应的类或函数。
这里找到了messageBaseViewController,发现一个名为didSendContent: 的函数,根据名字可以大概推断出这应是发送消息的入口,此函数又调用了checkAndSendMessage,
应该是发送前的检查操作,如消息长度等,重点关注回调block,
截图202207112337375462.png
进入回调函数,可以看到这里出现了一些参数,如目标uid,消息类型等,最后调用sendMessage方法
先看看prepareToSend 方法,里面发现了createConversation方法,应该是创建对话,每个聊天都需要先创建一个会话,
也就是先检查跟目标用户之间是否已有对话(可以理解为聊天列表是否有记录)
回到4中提到的prepareToSend 执行后的回调block(即创建对话完成后执行的操作)
可以看到这里继续调用了了sendMessage:conversation:方法(conversion即createConversation返回的会话对象)
截图202207112338026068.png
以看到im消息是走的google的protobuf协议(不熟悉的可以找相关资料了解一下,就是一个序列化协议),发送消息的protobuf
消息结构大致如下图,消息内容,类型等参数都是设置在TIMPBNSendMessageRequestBody里。
构建出protobuf消息体后,剩下的发送过程就很简单了,
首先protobuf消息体序列化得到字节集,
在这里插入图片描述
截图202207112338387904.png
然后使用常用的post操作就可以了,消息类型前面已经提到过了,这里补一张发送的名片、链接消息效果






上一篇:AUTOJS找不到控件试试这个方法,枚举全屏所有控件
下一篇:autojs 画图片轮廓,然后分割为小图片,附完整源码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

全站声明【必看】|小黑屋|新库软件 |网站地图

GMT+8, 2024-4-25 21:12 , Processed in 0.061694 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.