精华内容
下载资源
问答
  • 介绍: 本次分析抖音版本:13.3 X-...如果最近更新了新版抖音的app的人应该已经发现了,抖音安卓版的xg算法开头也变成了8408开头,因为84开头之前都是ios平台上的xg算法,到目前为止,IOS平台的xg还是8404开头。 ...

    介绍:

    本次分析抖音版本:13.3    X-Gorgon版本:0408  和 8408  可测试

    本次直接开始讲解分析0408和8408的区别。至于逆向记录可以参考我之前的文章!

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

    如果最近更新了新版抖音的app的人应该已经发现了,抖音安卓版的xg算法开头也变成了8408开头,因为84开头之前都是ios平台上的xg算法,到目前为止,IOS平台的xg还是8404开头。

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

    最近抖音更新到13.x版本以后,抓包会发现,xg变成了8408开头。我一开始是惊讶,怎么现在安卓端也开始跟ios端的xg算法一样了?于是我下功夫研究了一下。发现了猫腻所在。如下图

    抖音app先是检测了你的手机cpu架构,是x86还是armeabi,通过cpu架构的不同来调用so内不同的xg方法,所以导致现在最新版抖音app的xg算法有0408和8408两种。

    两种都是最新版,因为我发现当我使用oppo手机安装最新版抖音抓包的xg是8408,而当我用小米或者华为安装最新版抖音,抓包以后发现xg是0408

    下图是X-Gorgon具体的校验逻辑。

    总结

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

    免责声明

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

    展开全文
  • xg0361 不调用so 直接运行 xg0404不调用so 直接运行 欢迎交流学习 qq 1528906252

     xg0361 不调用so 直接运行

     

     xg0404 不调用so 直接运行

    欢迎评论留言交流学习

    展开全文
  • 抖音xg03算法逆向杂谈

    2020-09-17 02:44:16
    抖音xg03算法逆向杂谈 @[toc] # 1: 修复jni_onload不能f5 ## 1.1 jni_onload函数初探 使用ida打开libcms.so 定位到Jni_Onload函数。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OE94...
    抖音xg03算法逆向杂谈
    @[toc] # 1: 修复jni_onload不能f5 ## 1.1 jni_onload函数初探 使用ida打开libcms.so 定位到Jni_Onload函数。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OE94MTXP-1600281730856)(C:\Users\hcz\AppData\Roaming\Typora\typora-user-images\image-20200917013828865.png)]
    发现函数无法f5,按p创建函数,发现如下错误信息:
    在这里插入图片描述

    0000A86A DCW 0xB686 a886出的opcode 无法翻译成指令,竟然ida 无法翻译,那么原so的流程肯定不会经过改分支,经过的话程序会崩,修复方法是直接patch nop。 nop之后可以p键创建函数,但f5 之后又报A872: positive sp value has been found 错误,定位到0xa872,指令为 ADD SP, SP, #0xF0

    改指令导致堆栈不平衡,导致ida无法f5, 原so肯定不会运行到改分支,会崩溃,所以直接nop。nop之后u键->c键->p键创建函数,AAFA: positive sp value has been found 发现同理直接nop,nop堆栈之后的f5代码如下:
    在这里插入图片描述
    发现代码中出现大量jmpout。

    1.2 修复jmpoup

    截取一块jmpout代码块
    在这里插入图片描述
    可以看到导致jmpoup的原因是mov pc,r1,ida不知道目的地在哪,仔细观察从0000A9D0 push {r0-r3}开始至0000AA26 POP {R0-R3}结束,寄存器的值不会发生改变,这一段可以认为是花指令,直接在0000A9D0出patch 指令为b 0x0000AA28,0000A9D0- 0x0000AA28 中间的指令用nop填充,为方便修改,编写ida python脚本,脚本内容如下:

    # -*- coding:utf-8 -*-
    from idc import *
    from idaapi import *
    from keystone import *
    
    ks = Ks(KS_ARCH_ARM, KS_MODE_THUMB)
    
    
    def ks_dis_asm(dis_str):
        global ks
        encoding, count = ks.asm(dis_str)
        return encoding
    
    
    def un_junk_code(fun_start, fun_end):
        patch_start = None
        patch_end = None
        jmp_addr = []
        for i in range(fun_start, fun_end):
            # PUSH           {R0-R3}  or PUSH            {R0-R3,R7}
            # MOV            R0, PC
            # MOV            R1, PC
            buf = "".join(['%02x' % ord(j) for j in get_bytes(i, 6)]).lower()
            if buf == '0fb478467946' or buf == '8fb478467946':
                patch_start = i
            # end POP             {R0-R3}
            end_buf_one = "".join(['%02x' % ord(j) for j in get_bytes(i, 2)]).lower()
            #
            if end_buf_one == '0fbc':
                patch_end = i + 2
            # # end   POP             {R0-R2}
            # #       POP             {R3,R7}
            end_buf_two = "".join(['%02x' % ord(j) for j in get_bytes(i, 4)]).lower()
            if end_buf_two == '07bc88bc':
                patch_end = i + 4
            if patch_start != None and patch_end != None:
                for j in range(0, patch_end - patch_start, 2):
                    # patch nop
                    patch_byte(patch_start + j, 0x00)
                    patch_byte(patch_start + j + 1, 0xbf)
                # 跳转
                dis_str = 'b #{}-{}'.format(patch_end, patch_start)
                jmp_addr.append(patch_start)
                encoding = ks_dis_asm(dis_str)
                print dis_str, encoding
                for item in encoding:
                    print('{}'.format(hex(item)))
                for k in range(len(encoding)):
                    patch_byte(patch_start + k, encoding[k])
                print hex(patch_start), hex(patch_end)
                patch_start = None
                patch_end = None
    
    
    
    if __name__ == '__main__':
        # 函数开始位置与结束位置
        un_junk_code(0x000551C0, 0x00057784)
    

    修改un_junk_code 函数的参数,即可修复这类花指令。

    2、定位leviathan 函数

    2.1 Jni_onload 定位法

    长话短说,经过分析sub_7B10函数为RegisterNative函数的关键处。

    2.2 frida hook registernative

    好用的一批,强推,不多bb 直接上代码

    // hook register 打印动态注册的函数地址
    function hook_register(){
        // libart.so 所有导出函数表
        var symbols = Module.enumerateSymbolsSync("libart.so");
        var addr_register = null;
        for(var i = 0; i < symbols.length; i++){
            var symbol = symbols[i];
            var method_name = symbol.name;
            if(method_name.indexOf("art") >= 0){
        
                if(method_name.indexOf("_ZN3art3JNI15RegisterNativesEP7_JNIEnvP7_jclassPK15JNINativeMethodi") >= 0){
                    addr_register = symbol.address;
                }
            }
        }
    
        // 开始hook
        if(addr_register){
            Interceptor.attach(addr_register, {
                onEnter: function(args){
                    var methods = ptr(args[2]);
                    var method_count = args[3];
                    console.log("[RegisterNatives] method_count:", method_count);
                    for(var i = 0; i < method_count; i++){
                        var fn_ptr = methods.add(i * Process.pointerSize * 3 + Process.pointerSize * 2).readPointer();
                        var find_module = Process.findModuleByAddress(fn_ptr);
                        if(i == 0){
                            console.log("module name", find_module.name);
                            console.log("module base", find_module.base);
                        }
                        console.log("\t method_name:", methods.add(i * Process.pointerSize * 3).readPointer().readCString(), "method_sign:", methods.add(i * Process.pointerSize * 3 + Process.pointerSize).readPointer().readCString(), "method_fnPtr:", fn_ptr, "method offset:", fn_ptr.sub(find_module.base));
                    }
                }, onLeave(retval){
    
                }
            })
        }
    
    }
    
    function main(){
        hook_register();
    }
    
    setImmediate(main);
    

    3、算法还原:

    1、敏感话题, 不讨论。 算法的关键位置,f5之后的代码和汇编代码出入很多,要想还原得刚汇编。
    附上xg03 算法的还原图:
    在这里插入图片描述

    成功获取数据

    xg0408(最新版)算法的还原图:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-teKLo5Cu-1600281730863)(C:\Users\hcz\AppData\Roaming\Typora\typora-user-images\image-20200917022336604.png)]

    4注意

    还原出来的xgorgon只供学习研究,切勿商业用途及非法用途
    

    5 发现bug

    这两个发现了bug,unidbg还原出来的xg0408不登录的情况下不能搜索,正常设备能搜。经过验证发现是xgorgon中有设备检测,不正常的设备搜索会需要登录。 经过一系列的奋斗,已完善。
    在这里插入图片描述

    展开全文
  • 抖音xg8404 X-Gorgon算法 IOS苹果协议算法免责申明抖音xg8404算法 免责申明 此内容仅供学习交流使用,不用于商业用途,如果涉及侵权,联系作者删除。 q: 975436671,可调用测试交流 xg8404 X-Gorgon算法 IOS苹果协议...

    抖音xg8404 X-Gorgon算法 IOS苹果协议算法

    免责申明

    此内容仅供学习交流使用,不用于商业用途,如果涉及侵权,联系作者删除。

    xg8404 X-Gorgon算法 IOS苹果协议算法

    抖音xg8404算法

    在这里插入图片描述

    展开全文
  • 之后经过抓包抖音接口,查看Java层,so层代码。 X-SS-STUB是post请求时body部分的md5值,但是在为空的情况下,有时候不参与加密,有时候参与加密,具体接口需要具体分析 X-Khronos比较简单就是一个unix时间戳 X-...
  • xg0404算法 xg0408算法 xg8404算法 web端sign算法 总结: 免责声明 请勿使用本服务于商用 请勿使用本服务大量抓取 若因使用本服务与抖音官方造成不必要的纠纷,本人盖不负责 本人纯粹技术爱好,若侵犯抖音贵公司...
  • 抖音xg0408最新算法

    2021-04-01 10:07:44
    爬视频评论者 抖音号 地区 电话(有就爬) 爬主页视频列表 关键词检索排名查询 分析 xgorgon生成算法主要在libcms.so中,在JNI_Onload中动态注册jni函数。 算法用ollvm混淆了,主要是流程平坦化,流程混淆...
  • (新)抖音xg03免费生成接口

    千次阅读 2021-02-07 11:15:44
    之前写过一篇介绍抖音xg 03算法的文章,并且之前也给了对应的0361版本的XG生成的接口,后来阿里云到期了,于是乎我有搞了个百度云的服务器(学生优惠可真便宜,半年72块钱,百度云请打钱),因为之前提供的接口也...
  • 抖音xlog算法解密过程

    千次阅读 2020-08-08 22:15:41
    xg算法 xlog算法 xlog解密 今天,我们来看下xlog算法,xlog算法是抖音对于风控数据提交的算法,也叫设备解锁算法,我们根据抖音最新的12.0.1版本进行逆向,解密xlog接口的数据后,发现抖音在这方面真的是做到了极致...
  • 免责申明: 此内容仅供学习交流使用,不用于商业用途,如果涉及侵权,联系作者删除 交流: v:anti_jingzhongwa 设备id: 直播间详情接口测试,xg算法
  • 抖音x-gorgon04版(X-Gorgon)的获取方法及演示,本文未展示相关代码。单纯的从本地入手,仅提供思路和方法。从源码入手下载完apk之后,使用AK进行反编译,可能需要升级apktools到2.3.4,然后在 ...
  • 抖音xgorgon算法

    2020-08-30 17:30:10
    xgorgon算法        由于此算法本人对破解的方式不是很满意,所以不做任何具体分析,仅提供下图:        如果你想要具体的流程分析,抱歉...
  • dynew_Xg04.py

    2021-08-09 15:55:37
    抖音xg算法0401
  • device_id、iid等设备注册信息 详情看图: 附抖音XG算法 欢迎沟通交流
  • xg03算法核心

    2020-10-18 21:52:45
    随着抖音的不断升级,xg算法作为比较核心的一个算法,也经历过一次又一次的变化,2020年7月份的时候使用03的算法还可以使用,经过几个月的时间不晓得的还能不能,毕竟也没有继续深入研究抖音的算法了,这个行业水太...
  • 介绍: 本次分析抖音版本:11.1.0 ...小编自恋一下,逆向大神属于逆向爱好者,如需要交流技术或者算法请在评论区留下邮箱,或者联系我邮箱1610199291@qq.com 抓包 假设我们的业务需要爬虫获取抖音的热门视频列表,...
  • 抖音xgorgon及设备参数生成算法

    万次阅读 热门讨论 2019-11-11 18:57:34
    目录抖音xgorgon算法分析java层相关代码SO 层代码抖音设备参数生成算法分析Java层签名相关入口解决方案免责声明 抖音xgorgon算法分析 java层相关代码 该函数的参数,经过xposed hook打印如下: arg0=...
  • 抖音XGorgon04.java算法

    2021-02-20 18:51:36
    某音XGorgon0401Java版本源代码算法
  • 抖音X-Gorgon算法,实现视频列表信息获取 项目效果:在抖音搜索栏搜索关键字,获取视频相关数据(如:标题、用户、发布时间、视频、点赞等) 如:搜索"和平精英": 文件主要结构 ├─basic # 全局配置,主要包括...
  • 最近有项目需要做 监控采集抖音视频评论 搜索关键词获取视频列表并采集评论 用户主页视频及评论 输入关键词 查看在抖音搜索的排名 研究了一周 基本需要用到 X-Gorgon,X-SS-STUB,X-Khronos这些算法 研究 X-...
  • 抖音的X-gorgon算法,Python版本

    万次阅读 多人点赞 2020-05-05 11:29:09
    最近经常有朋友向我寻要X-gorgon算法的代码,不要问我是谁?请叫我雷锋。这里只公布python版本的哈,java版本的,感兴趣的朋友可以自己翻译过来,也希望大家有什么好东西能和我一起分享。 这个算法在国外有人出价...
  • 学习研究请加:qq,2468346257 给抖音抓包的时候发现抖音有很多个参数,...如果是post请求,那么需要把请求的内容进行MD5加密然后提交给xg算法进行加密 知道了接口需要哪个参数后我们对其进行逆向即可得到算法,
  • 介绍: 本次分析抖音版本:11.1.0 ...小编自恋一下,逆向大神属于逆向爱好者,如需要交流技术或者算法请在评论区留下邮箱,或者联系我邮箱1610199291@qq.com 抓包 假设我们的业务需要爬虫获取抖音的热门视频列表,...
  • 杨过听她说这几句话时眼神凄楚,一颗心怦的一跳,胸口一痛,失声叫道:“姑姑!” 就在此时,完颜萍已横刀自刎。耶律齐抢上两步,右手长出,又伸两指将她柳叶刀夺了过来,随手点了她臂上穴道,说道:“好端端的,...
  • 抖音app先是检测了你的手机cpu架构,是x86还是其他,通过cpu架构的不同来调用so内不同的xg方法,所以导致现在最新版抖音app的xg算法有0408和8408两种。 xgorgon生成算法主要在libcms.so中,在JNI_Onload中动态注册...
  • 抖音xgorgon算法是核心算法,基本每一个接口都需要用到,为什么说基本呢,因为有些如直播弹幕、私信协议是可以不用这个算法的。03版的算法算是一个老算法了,从5版本开始到9版本都是用的03版的算法算法一直可用,...
  • 有趣的是,根据抖音的推荐算法,连着刷几天之后,抖音里给你推荐的全是漂亮小姐姐了。 ​​​ 成果展示 先演示一下效果。 连接手机(手机要允许ADB调试),运行爬虫程序,程序会自动打开抖音APP,自动寻找漂亮的...
  • 使用python爬取抖音app视频

    千次阅读 2019-02-16 13:07:02
    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例。 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思路: 假设已经配置好我们所需要的工具 1、使用...

空空如也

空空如也

1 2 3
收藏数 50
精华内容 20
关键字:

抖音xg算法