设为首页收藏本站 今天是: 2022-08-08    美好的一天,从现在开始

复仇者黑客组织

 找回密码
 立即注册

QQ登录

只需一步,快速开始

    查看: 152|回复: 11

    某音jsvmp下参数分析笔记

    [复制链接]

    该用户从未签到

    28

    主题

    28

    帖子

    90

    积分

    审核员

    Rank: 7Rank: 7Rank: 7

    积分
    90
    发表于 前天 05:03 | 显示全部楼层 |阅读模式
    @TOC
    在获取个人主页发布视频的时候,会有两个特别的参数
    TBC茶馆-复仇者黑客组织@TOC在获取个人主页发布视频的时间,会有两个特别的参数X-Bogus和_signature,但是在全局搜索的时复仇者黑客组织(1)
    X-Bogus和_signature,但是在全局搜索的时候,却完全没有搜索到这两个关键字,按照以往的经验,字节的会重写XMLHttpRequest原型下的方法,当发出请求前,会经过一段加密逻辑,自己加上校验的参数,那么在网站上试一试
    TBC茶馆-复仇者黑客组织@TOC在获取个人主页发布视频的时间,会有两个特别的参数X-Bogus和_signature,但是在全局搜索的时复仇者黑客组织(2)
    果然XMLHttpRequest原型下的open方法被重写了,点进去后,发现在webmssdk.js这个里面,这个就是jsvmp的入口
    TBC茶馆-复仇者黑客组织@TOC在获取个人主页发布视频的时间,会有两个特别的参数X-Bogus和_signature,但是在全局搜索的时复仇者黑客组织(3)
    下一个断点往下拉,当触发请求的时候,就会断下,可以看到open方法的三个参数,跟着单步往下走,就会进入_0x20653b函数
    TBC茶馆-复仇者黑客组织@TOC在获取个人主页发布视频的时间,会有两个特别的参数X-Bogus和_signature,但是在全局搜索的时复仇者黑客组织(4)
    这个函数带有8个参数,既然是jsvmp,那就用jsvmp的思路来看看这8个参数分别代表什么意思,经过多次对比,可以得到下方的表格
    变量名含义
    _0x52f757字节码
    _0x1f5661函数基址
    _0xabd09a函数长度
    _0x204c10本地变量
    _0x2bf5d9闭包变量
    _0x5cca65函数调用者
    _0x1a0d5a无意义
    _0x4420e0分支类型
    知道变量的类型后,那么可以尝试根据字节码,来编写一个对应的解释器,根据函数基址为578,函数长度为71,生成open方法的伪代码如下
    1. function open(){
    2.     this["_byted_intercept_list"] = [];
    3.     var local_var_0x0 = new window["Object"]();
    4.     local_var_0x0["func"] = "open";
    5.     local_var_0x0["arguments"] = argument_$2;
    6.     this["_byted_method"] = argument_0["toUpperCase"].apply(argument_0, []);
    7.     this["_byted_url"] = argument_1;
    8.     return argument_$0[26].apply(this, argument_$2);
    9. }
    复制代码
    函数非常短,看起来不像是生成两个参数的,功能只是把设置了_byted_method和_bytedurl这两个属性,其中argument$0[26]正是底层的open方法
    既然不在open方法,那么很有可能就是在send方法了
    TBC茶馆-复仇者黑客组织@TOC在获取个人主页发布视频的时间,会有两个特别的参数X-Bogus和_signature,但是在全局搜索的时复仇者黑客组织(5)
    继续点进去
    TBC茶馆-复仇者黑客组织@TOC在获取个人主页发布视频的时间,会有两个特别的参数X-Bogus和_signature,但是在全局搜索的时复仇者黑客组织(6)
    可以看到send方法被绑定到这里了,继续单步调试,又来到了熟悉的地方
    TBC茶馆-复仇者黑客组织@TOC在获取个人主页发布视频的时间,会有两个特别的参数X-Bogus和_signature,但是在全局搜索的时复仇者黑客组织(7)
    继续往下单步调试,可以看到send方法的字节码以及函数基址等数值,继续尝试生成伪代码
    1. function send()  {
    2.   for (; this["_byted_url"]["indexOf"].apply(this["_byted_url"], ["_signature="]) > 0 - 1;) {
    3.     return argument_$0[28].apply(this, argument_$2);
    4.   }
    5.   this["_byted_body"] = argument_0;
    6.   argument_7 = this["onreadystatechange"];
    7.   argument_8 = this["onabort"];
    8.   argument_9 = this["onerror"];
    9.   argument_10 = this["onload"];
    10.   argument_11 = this["onloadend"];
    11.   argument_12 = this["onloadstart"];
    12.   argument_13 = this["onprogress"];
    13.   argument_14 = this["ontimeout"];
    14.   var local_var_0x0 = new window["Object"]();
    15.   argument_15 = local_var_0x0;
    16.   argument_50 = 0;
    17.   for (; argument_50 < argument_$0[30]["length"];) {
    18.     argument_15[argument_$0[30][argument_50]] = this["upload"][argument_$0[30][argument_50]];
    19.     argument_50++;
    20.     argument_50 = argument_50;
    21.   }
    22.   argument_16 = argument_$0[3]["msStatus"];
    23.   *********省略代码****************
    24. }
    复制代码
    明显,这次的伪代码逻辑上存在问题,代码并不可信,但是还是能从中获取到一些逻辑,那么这些伪代码就可以作为辅助来还原算法。最终可以在send函数中分别找到X-Bogus和_signature的生成函数,分别根据伪代码辅助,手动调试的方法,还原出python版本的算法。
    使用还原的算法测试抖音弹幕的获取,可以正常获取。
    TBC茶馆-复仇者黑客组织@TOC在获取个人主页发布视频的时间,会有两个特别的参数X-Bogus和_signature,但是在全局搜索的时复仇者黑客组织(8)
    在深入研究发现,其实还有一些参数也是jsvmp中生成,但是并是在这个这同一个js,如__ac_signature和captchaBody。其中__ac_signature是从首次访问任何页面返回的
    TBC茶馆-复仇者黑客组织@TOC在获取个人主页发布视频的时间,会有两个特别的参数X-Bogus和_signature,但是在全局搜索的时复仇者黑客组织(9)
    而captchaBody则是从captcha.js文件中生成的,不过其中所有的文件中,字节码的魔数都是一样的,也就是说可以使用同一套解释器生成伪代码,从而辅助还原算法
    TBC茶馆-复仇者黑客组织@TOC在获取个人主页发布视频的时间,会有两个特别的参数X-Bogus和_signature,但是在全局搜索的时复仇者黑客组织(10)
    参考文献
    1.【JS逆向系列】某乎x96参数与jsvmp初体验
    2. [原创] 给"某音"的js虚拟机写一个编译器
    3.某音新版本逻辑分析




    上一篇:某影视站加密js的还原及自动化获取真实视频地址
    下一篇:植物大战僵尸之这豌豆有毒啃着啃着就炸了

    该用户从未签到

    1

    主题

    1012

    帖子

    530

    积分

    高级会员

    Rank: 4

    积分
    530
    发表于 前天 05:04 | 显示全部楼层
    求大神解密一下拉雅音频,谢谢了
    https://m.ximalaya.com/sound/448005113
    https://www.ximalaya.com/sound/448005113
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    997

    帖子

    813

    积分

    高级会员

    Rank: 4

    积分
    813
    发表于 前天 05:05 | 显示全部楼层
    这个也是需要自己通过ast编写虚拟化代码
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    934

    帖子

    276

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    276
    发表于 前天 05:05 | 显示全部楼层
    TBC茶馆-复仇者黑客组织复仇者黑客组织(11)
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1008

    帖子

    2

    积分

    新手上路

    Rank: 1

    积分
    2
    发表于 前天 05:05 | 显示全部楼层
    渔哥太厉害了啊我去
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    1012

    帖子

    530

    积分

    高级会员

    Rank: 4

    积分
    530
    发表于 前天 05:05 | 显示全部楼层
    goods,学习了谢谢
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1008

    帖子

    2

    积分

    新手上路

    Rank: 1

    积分
    2
    发表于 前天 05:06 | 显示全部楼层
    小漁,我的偶像
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    969

    帖子

    954

    积分

    高级会员

    Rank: 4

    积分
    954
    发表于 前天 05:06 | 显示全部楼层
    我只能说。永远滴神!
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    934

    帖子

    276

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    276
    发表于 前天 05:07 | 显示全部楼层
    看了半天还是没看懂
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    1012

    帖子

    530

    积分

    高级会员

    Rank: 4

    积分
    530
    发表于 前天 05:08 | 显示全部楼层
    学习经验,谢谢楼主
    回复

    使用道具 举报

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

    本版积分规则

    Loading...
    嗨!您好:
    欢迎来到 复仇者黑客组织。
    我的名字叫小光
    很高兴能够为您服务!
    如果已经注册【立即登录】
    还没有账号请立即注册
    关闭Powered by ©科大讯飞语音云
    快速回复 返回顶部 返回列表