介绍:

本次分析抖音版本:12.4    x-gorgon版本:0408  可测试

下列逆向hook记录来自抖音11.3  0401 ,新版hook跟之前类似

抖音作为目前流量最大、日活跃最高的平台,目前也有很多不同行业的人对它进行逆向分析研究,在抓包分析过程中,抖音的通讯会涉及到一个叫x-gorgon的签名,该签名是发送数据请求必不可少的基础参数,本次我就带大家分析下这个参数。

小编自恋一下,逆向大神 属于逆向爱好者,如需要交流技术或者算法请在评论区留下邮箱,或者联系我邮箱1610199291@qq.com

抓包

假设我们的业务需要爬虫获取抖音的热门视频列表,那么我们先通过抓包来定位到具体的接口,这里我选择使用charles工具进行抓包,具体配置https方法可以百度的方法。安卓手机抓包最好使用6.0以下的!

所有版本X-Gorgon和所有语言的如下图: 可测试

通过抓包发现接口是来自: https://aweme.snssdk.com/aweme/v2/feed/ 后面跟了很长的参数,具体字面意思分析估计是手机的型号以及抖音自己生成的一些信息,我们发现其返回的是protobuf格式,charles已经帮我们解析好了,那么我们编写python3脚本构造一个跟他一样的请求进行尝试。

我们发现能够正常的返回数据,但是我们看到他的header除了 x-gorgon和x-tt-trace-id以外,其他的都很好理解,我们会发现,如果我们改变了URL的参数,但是header内容得不到对应的修改,就会返回不到数据,如下所示:

{

  • status_code: 2154,

  • aweme_list: [ ],

  • has_more: 1,

  • min_cursor: 0,

  • max_cursor: 0

}

分析

那么我们就能够更加确信header里的x-gorgon对它进行了一次签名,所以我们直接jadx上手阅读一波反编译后的代码,这里我直接搜索了x-gorgon关键字,列出了以下结果:

这里我选择了hashMap.put("X-Gorgon", a3);这一行,跳转进去我们来分析一下它的代码

        这里我们看到有一个它的值是来自a3,a3则是通过String a3 = a.a(com.ss.sys.ces.a.leviathan(i, currentTimeMillis, a.a(a2 + str4 + str5 + str6)));这行代码进行获取到的结果,我们看到它传了4个参数,我们来仔细看一下这4个参数具体都是什么内容:

a2来源:

String b2 = tt.d(str);

d.a(b2);

str它就是该方法传进来的参数,我们后面可以通过hook方式来获取它的具体内容,而它会执行tt.d()、d.a() 进行2次操作,我们对其tt.d()跟进去

我们看到它对这个字符串进行了取 ? 和 # 中间值,怀疑是url,如果是url证明它只是取了url后面的参数,那么继续看它的下一个方法:d.a()

我们看到这里就是进行了MD5签名取值,那么a2分析到此结束,我们继续分析第2个参数

str4来源:

            

        这里非常简单,它就是枚举传进来的第二个参数map,判断如果有X-SS-STUB这个值的话就获取,反之则填充32个0,那么我们抓包发现并没有X-SS-STUB这个参数,实际上如果我们的包是POST的话它就会有,实际上它就是POST数据的一个MD5签名值。

str5来源:

    

str5也非常简单,也是枚举map里面有没有COOKIE,如果有就把COOKIE进行MD5,那么该参数也到此结束了

str6来源:

1

2

3

4

5

String c2 = tt.e(str3);

if (c2 != null && c2.length() > 0) {

     str6 = d.a(c2);

     StcSDKFactory.getInstance().setSession(c2);

}

这里我们记得str3是cookie,它执行了tt.e(str3) 方法获取一个返回值,如果它不是空同样给这个返回值md5,那么我们跟进去看一下它是做了什么处理:

这里我们看到它是枚举了cookie里面有没有sessionid这个值,如果有就取出来,那么str6到此结束

参数整理:

a2 = md5(url) 疑似对网址的参数进行md5

str4 = x-ss-stub,只有post时才有效,否则是32个0

str5 = md5(cookie)  对cookie进行md5

str6 = md5(cookie['sessionid'])    对cookie里面对sessionid进行md5,否则也是32个0

我们整理完了这4条参数后,继续分析,它将这4个参数进行了字符串合并,接着执行 a.a(a2+str4+str5+str6),我们跟进去看看里面做了什么操作

我们看到它这里循环了总长度/2次,每次都是把  str[i] 转换成十进制左移4,然后加上 str[i+1] 都一个简单运算,并返回结果,也就是本来是4个32位(128位)然后经过加密后缩短成了64位长度。最后它执行了com.ss.sys.ces.a.leviathan(i, currentTimeMillis, a.a(a2 + str4 + str5 + str6))进行计算,我们看到它还传了2个参数,i和currentTimeMillis,我们往前可以看到 i是-1,而currentTimeMillis是当前都十位时间戳。

最后把计算好都byteArray经过位移转换成了string类型,并put到map里面,那么我们也清楚到看到,k-khronos也就是刚刚到currentTimeMillis时间戳了。我们发现由于om.ss.sys.ces.a.leviathan是在so层到libcms.so文件,并且里面有大量到混淆就没有再度分析。我们可以通过xposed或者unidbg到方法进行调用。

0x02:参数确认

        这里我们分析完了它算法到具体参数构造完成后,我们还需要确认它传到参数是否是我们所联想到,那么这里我们发现由于它这个方法是一个callback,我们往前跟一下,寻找一个合适到hook点,使用frida进行hook

这里我对它进行了调用查找,看到只有1个地方,我们跟进去看看,跟进去之后它就是以下内容,就只是一个简单对赋值给sAddSecurityFactorProcessCallback,我们在对它进行调用查找,看看是什么地方对它进行对调用。

public static void setAddSecurityFactorProcessCallback(a aVar) {

sAddSecurityFactorProcessCallback = aVar;

}

这里我们看到它从这里取的回调指针变量,然后判断如果不为null则执行,那么我们就可以直接hook这个方法:tryAddSecurityFactor$___twin___,这里我的hook代码也就比较简单,直接输出它传进去的map和str的值以及返回的map进行确认。

//frida -U com.ss.android.ugc.aweme -l test.js
Java.perform(function() {var NetworkParams = Java.use("com.bytedance.frameworks.baselib.network.http.NetworkParams");NetworkParams['tryAddSecurityFactor$___twin___'].implementation = function(str,map){var keyset = map.keySet();var it = keyset.iterator();console.log("str:\t"+str)while(it.hasNext()){var keystr = it.next().toString();var valuestr = map.get(keystr).toString()console.log("map:\t"+keystr+"\t"+valuestr)}var retret = this.tryAddSecurityFactor$___twin___(str,map);var keyset = ret.keySet();var it = keyset.iterator();while(it.hasNext()){var keystr = it.next().toString();var valuestr = ret.get(keystr).toString()console.log("ret map:\t"+keystr+"\t"+valuestr)}return ret;}
});

绿色部分就是str参数1的值,黄色则是map,蓝色则是返回的map,我们看下charles的这个包的header里的xgorgon是不是返回的值。

总结

以上就是对抖音对一个简单的x-gorgon的分析笔记过程,联系我看第二图片中,希望能够有所帮助,也能够对自身的产品安全方面进行一个参考借鉴。

免责声明

  1. 请勿使用本服务于商用
  2. 请勿使用本服务大量抓取
  3. 若因使用本服务与抖音官方造成不必要的纠纷,本人盖不负责
  4. 本人纯粹技术爱好,若侵犯抖音贵公司的权益,请告知

最新 抖音 x-gorgon 0408 算法定位查找过程笔记 最新抖音12.4版本相关推荐

  1. 最新 抖音 X-Gorgon 0408 和8408 算法定位查找过程笔记 最新抖音xg算法13.3版本

    介绍: 本次分析抖音版本:13.3    X-Gorgon版本:0408  和 8408  可测试 本次直接开始讲解分析0408和8408的区别.至于逆向记录可以参考我之前的文章! 小编自恋一下,逆向 ...

  2. 抖音SEO搜索排名算法是什么?看完这篇就够了

    抖音SEO搜索排名算法是什么?很多人在做抖音SEO搜索排名的时候,对抖音SEO搜索排名算法并不是很了解,这就导致在操作的过程中关键词优化效果并不是很好,今天卢涛就跟大家详细讲解抖音搜素seo算法. 一 ...

  3. 全面揭秘快手与抖音的内容推荐算法

    快抖的视频内容分为推荐(发现).附近(同城)和关注三个模块,这里主要说明推荐模块的算法机制. 视频与用户画像的匹配程度 热度(赞.评论.转发等) 发布时间 根据用户数据和内容标签计算两者的匹配程度,是 ...

  4. 抖音新号如何精准定位,如何垂直定位,如何追踪定位?

    今天给大家分享的是:抖音新号如何精准定位,如何垂直定位,如何追踪定位? 一.为什么要做定位 定位是个比较宽泛的概念,在商业上,定位之父杰克•特劳特说过:所谓定位,就是令你的企业和产品与众不同,形成核心 ...

  5. 抖音推荐机制与算法探讨

    通过数据的分析,我们发现在传播效果方面,抖音>小红书>微信朋友圈>新浪微博.究其原因是内容分发的逻辑存在非常大的差异. 微信朋友圈.新浪微博:订阅模式,用户仅能看到好友或关注者的信息 ...

  6. 武汉新时标文化传媒有限公司抖音电商的算法逻辑

    我们想要在抖音上做好电商,只有理解了游戏规则以后,才有可能利用游戏的规则,顺势而为. 所以掌握抖音电商的算法逻辑,才是玩好这场游戏最底层最本质的东西.那到底如何理解这套机制? 一.权重决定推流的&qu ...

  7. 四川启之航:抖音小店账号怎么定位好?

    现在的抖音店铺受到很多人的关注,想要更好的创业,那么首先就要把自己的店铺定位好,很多人都不知道抖音小店账号怎么定位好?下面就和四川启之航一起来看看吧,希望能帮助到大家! 直播带货 定义:这是目前大部分 ...

  8. 抖音新号怎么快速涨粉(8种抖音运营吸粉技巧)

    今年是互联网+分享经济的时代,"两微一抖"已逐渐成为各行各业的营销标配.但对抖音还懵懵懂懂的你,是否急需一篇能快速掌握抖音技巧的干货,让你学会如何快速增粉. 1.抖音算法 抖音的算 ...

  9. 抖音运营工具有哪些?让你玩转抖音

    说到抖音,应该没有小伙伴不知道它是什么了吧,抖音一经推出,就顺利的引起了人们的关注,社会上掀起了玩抖音的热潮,那么,各位朋友们知道抖音运营工具有哪些吗? 乐观数据 1.抖音 乐观数据指出抖音于2016 ...

最新文章

  1. .Net架构篇:实用中小型公司支付中心设计
  2. 自定义Spring命名空间使JAXB更容易
  3. LeetCode 1537. 最大得分(切片取出局部最大值)
  4. python中实现sigmiod功能
  5. 什么样的数据才有价值?应该怎样收集和处理?终于有人讲明白了
  6. WebAPI——自动生成帮助文档
  7. 2.1Android底层开发需要哪些工具
  8. java--分布式ID生成器
  9. 2021李宏毅机器学习笔记
  10. php网易云随机音乐api源码开源,网易云音乐随机歌曲
  11. 学习制作横版游戏——2
  12. MPEG压缩中的 I、B、P帧
  13. Pg extention pg_buffercache
  14. 有关计算机的英语诗歌带翻译,经典的著名英语短诗歌带翻译
  15. goland试用期过后继续使用方式
  16. 电脑计算机和用户区分,电脑32位和64位的区别是什么
  17. windows10频繁出现“您的电脑遇到问题,需要重新启动”如何解决
  18. 快逸报表4.2 配置 PostgreSQL数据源
  19. paper 148: Face Databases
  20. poj 1264 || UVA 109 SCUD Busters

热门文章

  1. 【洛谷 P4921】—情侣?给我烧了!(加强版)(容斥+组合数学)
  2. 同一个网页在不同的浏览器里面字体不一样?
  3. c语言画猪程序,C/C++知识点之如何优雅的使用C语言绘制一只小猪佩奇
  4. 手摸手教学-利用原生POI对excel的导入导出以及阿里的easyexcel的基本操作
  5. 详解FLAS骨骼绑定教程
  6. 更改系统相机UIImagePickerController导航栏的cancle为自定义按钮
  7. 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include StdAfx.h”?
  8. 何以解忧,唯有泡妞——我和聊天机器人有个约会
  9. 轻松获取海量QQ号,一招包教包会!
  10. Python如何下载安装PCV