a_bogus逆向分析

这篇具有很好参考价值的文章主要介绍了a_bogus逆向分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最新版本的a_bogus生成步骤大致分为以下4步:
步骤 操作
根据请求的params、data、useragent以及环境参数生成四个数组
通过一些规则把步骤一生成的四个数组组合成一个大数组
通过一些随机数生成一个乱码字符串1,根据步骤二生成的大数组生成一个乱码字符串2,把乱码字符串1和乱码字符串2拼接成一个字符串并再次进行处理生成最终的乱码字符串。
根据最终的乱码字符串生成a_bogus

a_bogus逆向分析,java,算法,javascript

log插桩

添加合适的日志断点a_bogus的逆向基本上就成功一半了,a_bogus的逆向大部分依赖日志分析,只有步骤三需要动态调试,所以本文的重点会放在打日志断点上,具体的分析逻辑太过繁琐就不细说了。首先打开f12,在页面进行点赞操作,然后找到点赞请求查看调用堆栈,如下图所示:
a_bogus逆向分析,java,算法,javascript
点进标红的位置后来到下图位置,往前翻看代码发现这是一个循环,碰到循环二话不说,先在下图标示位置添加日志断点"fucn:",s,"content:",b,"args:",u,"result:",l,然后清空控制台,再次点击点赞按钮。
a_bogus逆向分析,java,算法,javascript
找到刚刚点赞的请求,复制a_bogus的值在控制台搜索。
a_bogus逆向分析,java,算法,javascript
可以看到已经定位到a_bogus生成的日志,红框里面就是生成a_bogus的方法以及传入的参数,args就是l = s.apply(b, u)里面的u,我们可以根据u的值打条件断点,这样做的目的是为了减少一些不必要的日志,我们先回到上面打日志断点的位置打上条件断点typeof u == "object" && u[0]==0 && u[1]==1 && u[3].indexOf("device_platform=webapp")==0 && u[4].indexOf("aweme_id=")==0 && u[5].indexOf("Mozilla/5.0")==0
a_bogus逆向分析,java,算法,javascript
然后回到控制台双击生成a_bogus的方法,我们会发现跳到了另外一个循环里面,往上翻看代码,类似的循环还有很多。
a_bogus逆向分析,java,算法,javascript
要把所有的apply方法都打上断点有两个方法,第一个方法比较麻烦,就是在bdms.js源码页面搜索“apply”关键字,然后把所有循环里面的apply都打上日志断点,第二个方法是把bdms.js下载到本地,然后修改源码,在头部添加hook Function.prototype.apply,然后

// 保存原始的 Function.prototype.apply 方法
const originalApply = Function.prototype.apply;// 修改 Function.prototype.apply 方法
Function.prototype.apply = function (thisArg, args) {
    // 调用原始的 apply 方法来执行函数
    const result = originalApply.call(this, thisArg, args);// 输出结果
    if (window.$_islog) {
        try {
            console.log("Function:", this, "\n 参数:", args, "\n结果:", JSON.stringify(result));} catch (e) {
            console.log("Function:", this, "\n 参数:", args, "\n结果:", result);
        }
    }
    // 返回结果
    return result;
};

第一个方法虽然麻烦,但是不会出什么问题,第二个方法必须要添加一个开关,在前面条件断点的位置的前一行以下代码,

if(typeof u == "object" && u[0]==0 && u[1]==1 && u[3].indexOf("device_platform=webapp")==0 && u[4].indexOf("aweme_id=")==0 && u[5].indexOf("Mozilla/5.0")==0
){
	window.$_islog=true
}

在条件断点位置的下一行添加以下代码,

if(window.$_islog=false){
	window.$_islog=false
}

这样就能过滤掉没用的日志,否则日志太多会把内存撑爆。
还有一些涉及位运算的关键位置也要打上日志断点,这个没有快捷方法,只能手动找出来。
a_bogus逆向分析,java,算法,javascript
a_bogus逆向分析,java,算法,javascript
a_bogus逆向分析,java,算法,javascript
a_bogus逆向分析,java,算法,javascript
a_bogus逆向分析,java,算法,javascript

以上截图只是其中几处,还有一些我就不一一列出来了,鉴于这种情况,我建议使用第一种方法打断点,替换js文件省不了多少事,可能还会出现一些问题。打上这些断点后就可以进行前期的分析了,前期分析完了之后就需要在循环的开头处打断日志断点了,这个断点日志是最多的,所以要放在最后打,如果一开始就打上整个日志会非常的混乱,
a_bogus逆向分析,java,算法,javascript
断点内容:"索引m", m,"索引r", r, "值p: ", JSON.stringify(p, function(key, value) {if (value == window) {return undefined} return value}), "值v: ", JSON.stringify(v, function(key, value) {if (value == window) {return undefined} return value}), "值l: ", JSON.stringify(l, function(key, value) {if (value == window) {return undefined} return value})

步骤一分析

在还原第一步代码的时候会发现一个数组, [1937774191, 1226093241,388252375,3666478592,2842636476,372324522,3817729613,2969243214]
数组的内容是固定的,随便copy一个数字百度一下就会发现这是SM3密码杂凑算法,params,data都是经过两次SM3加密后生成一个数组,useragent是先转成乱码,乱码经过base64加密(这里不是标准的base64,key改了),把base64解密结果进行SM3加密生成数组。环境参数就是1920|919|1920|1040|0|0|0|0|1920|1040|1920|1080|1920|919|24|24|Win32,这是直接是遍历每个字符转为Unicode编码值,结果放入数组。

步骤二分析

第二步是最麻烦的,params、data、useragent生成的数组都只挑选了几个元素出来,再通过两个时间戳、aid(6383)、6241等进行一些位运算,最终生成一个44位的数组,这一步需要动态调试。44位的数组和环境参数数组拼接成一个大数组,大数组的最后一个元素是44位数组的1-43位跟44进行^运算生成的。

第三步第四步比较简单,通过日志就能还原出来。文章来源地址https://www.toymoban.com/news/detail-860142.html

到了这里,关于a_bogus逆向分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 瑞数 6 代逆向纯算法大致流程分析

    aHR0cHM6Ly93d3cudXJidGl4LmhrLw== 第一次请求响应 202,响应内容中有一段 JS 代码会请求一个 JS 文件,Cookie 生成的核心代码由这个文件中的代码生成,并通过 eval 执行。 Cc2838679FS 55tgE9EWzzOxyDeuMRQ8rVOKqNZG4W9awmtpvnl1jpeviOqlzHzrnraSnPN8F2w6OqgnjY6ueb1NAN2kE03ryDG Cc2838679FT 6RifvpbsLR03qqqDtteJ.XqqugbVLuRivnvi

    2024年02月08日
    浏览(49)
  • 瑞数5.5逆向:纯算法解密与关键点分析

    本文详细记录了瑞数5.5版本的逆向分析过程,包括请求特征识别、动态内容解密、外链JS内容生成、自执行函数逻辑、以及生成cookie函数的关键步骤。

    2023年04月23日
    浏览(51)
  • 【验证码系列】用逆向思维深度分析滑动验证码(含轨迹算法)

      验证码是机器人防护(即爬虫)常用重要手段之一!在爬虫这个领域内专精某一项( 验证码识别 、 JS或者APP逆向 )都是可以成为大牛存在的 传统的验证码我们都知道是静态图片的形式,它们包含一些阿拉伯数字跟字母加一些干扰( 现在而言的话难度系数极低 )。目前

    2024年02月06日
    浏览(46)
  • 最新PDD批发Anti-Content参数逆向分析与算法还原

    【🏠作者主页】: 吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作! 【🌟作者推荐】:对爬虫领域以及JS逆向分析感兴趣的朋友可以关

    2024年04月16日
    浏览(46)
  • 《算法还原 - CTF》逆向exe程序 + ida Pro 反汇编分析伪C代码 + python算法复现

    二进制安全,能干什么 逆向分析: 负责成品软件的技术原理. 比如分析竞品软件,吸取技术上的优点,进行技术难点公关 病毒分析: 负责分析病毒样本.研究恶意代码的技术手段等工作.主要是在安全公司,尤其是在杀毒软件公司需求较多.如360 、腾讯电脑管家等. 漏洞挖掘分析: 负责

    2024年01月22日
    浏览(52)
  • 最新PDD商家端Anti-Content参数逆向分析与纯算法还原

    【🏠作者主页】: 吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作! 【🌟作者推荐】:对爬虫领域以及JS逆向分析感兴趣的朋友可以关

    2024年04月09日
    浏览(39)
  • 【干货最多】逆向分析学生机房管理助手7.8随机进程名算法、极域U盘、网络、键盘限制

    先给个开幕雷击吧: 这真不知道怎么评价好呢,学生机房管理助手上一个版本还是7.5,在11月23号这天直接跳到了7.8,咱也不知道它是有中间昙花一现的两个版本呢,还是避讳什么,必须跳版本。 说实话,在我满怀期待反编译它之后,一股酸劲涌满我全身:作者开摆了。为什

    2024年02月02日
    浏览(32)
  • Python之JavaScript逆向系列——1、URL——http与https

    目录 Python之JavaScript逆向系列——1、URL——http与https 前言 环境准备 正文 http与https的协议是什么? http与https的访问端口号区别 在js逆向中http与https访问的区别 大家好,本系列文章主要为大家提供的价值方向是网络信息获取,自动化的提取、收集、下载和记录互联网上的信息

    2024年02月03日
    浏览(34)
  • 分别用JavaScript,Java,PHP,C++实现桶排序的算法(附带源码)

    桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点: 在额外空间充足的情况下,尽量增大桶的数量 使用的映射函数能够将输入的 N 个数据均匀的分配到 K 个桶中 同时,对于桶中

    2024年02月22日
    浏览(49)
  • 【华为OD机考 统一考试机试C卷】文本统计分析(C++ Java JavaScript Python)

    目前在考C卷,经过两个月的收集整理, C卷真题已基本整理完毕 抽到原题的概率为2/3到3/3, 也就是最少抽到两道原题。 请注意:大家刷完C卷真题,最好要把B卷的真题刷一下,因为C卷的部分真题来自B卷。 另外订阅专栏还可以联系笔者开通在线OJ进行刷题,提高刷题效率。

    2024年02月03日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包