抖音短连接v.douyin.com/xxx 如何生成?

最近公司有个需求,在抖音里如何宣传自己的网站,并且不要有拦截域名的提示,截图如下。

通过ida反编译抖音的app后,将下载后的ipa文件用解压缩软件(如7zip等)解压,从解压后的目录Payload/Aweme.app/找到Aweme可执行文件,拖入ida进行反编译,ida可以检测objective-c语法。
然后进入主题,既然是聊天发消息,就尝试在ida里搜索"message",看看能否找到对应的类或函数。
这里找到了messageBaseViewController,发现一个名为didSendContent: 的函数,根据名字可以大概推断出这应是发送消息的入口,此函数又调用了checkAndSendMessage,
应该是发送前的检查操作,如消息长度等,重点关注回调block,得到

可以看到im消息是走的google的protobuf协议(不熟悉的可以找相关资料了解一下,就是一个序列化协议),发送消息的protobuf
消息结构大致如下图,消息内容,类型等参数都是设置在TIMPBNSendMessageRequestBody里。然后要做的就是找到上述几个结构是什么样的,这里我们可以通过逆向出抖音代码的头文件进行查看。
使用class-dump工具(使用方法请自行查找)从第1步中的可执行文件中dump出头文件。
这里贴出来,构建protobuf消息体只需要将头文件中的字段联系起来就行。

总结一下:抖音聊天消息发送过程就是:
   第一步:调用cloud/token接口获取im token
   第二步:登录im服务,登录过程参考【7】的调用链
   第三步:构建创建对话protobuf,创建对话
   第四步:使用获取到的对话信息,构建发送消息protobuf,发送消息

就可以直接生成出短域名连接了。

 消息发送这块主要是找到消息体的构建方法,本身不涉及复杂的算法,只有发送post中才会用到通用算法as/mas、x-gorgon、x-ss-stub等,
这些算法有时间,可以整理一下源码(纯c源码),另外看到论坛上已经有朋友分享了用过hook 方式搭建webServer方式来调用app 内部api
来进行加密,也是很巧妙、省时省力的方式。

猜你喜欢

转载自www.cnblogs.com/ticket/p/11691048.html