a_bogus 音 算法还原大赏

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

a_bogus算法还原大赏


hello,大家好呀,我是你的好兄弟,[星云牛马],花了几天时间算法还原了这个参数的加密过程,一起看看吧,记得加入我们的学习群:529528142

  • 天才第一步,F12你会不?

a_bogus,算法,python

  • 天才第二步,js断点要断住

a_bogus,算法,python

a_bogus,算法,python

从这里开始你的逐步断点之旅……

有经验的伙伴肯定知道,这是jsvmp扣代码意义不大,所以这篇文章,介绍算法还原

a_bogus,算法,python

每个循环的处理中,我们都加入这样的日志,将关键的存放运算中间值的变量全部输出到日志中。

另外,因为是算法还原,最重要的位运算相关的地方,全部加上输出日志:

a_bogus,算法,python

好的,你已经成功了1/2,毫不夸张的说,好的日志是还原算法的最重要的前提之一哦。

好的刷新页面,保存日志到本地,开始分析!

直接搜索a_bogus:

a_bogus,算法,python

定位到最开始出现的地方,接下来往上寻找依赖关系!

a_bogus,算法,python

 [xx]func function charCodeAt() { [native code] } called, args->, [30] ==> 10
 [algo]10&255 => 10
 [algo]10<<16 => 655360
 [algo] 31++ =>
 [xx]func function charCodeAt() { [native code] } called, args->, [31] ==> 217
 [algo]217&255 => 217
 [algo]217<<8 => 55552
 [algo]655360|55552 => 710912
 [algo] 32++ =>
 [xx]func function charCodeAt() { [native code] } called, args->, [32] ==> 153
 [algo]153&255 => 153
 [algo]710912|153 => 711065
 [algo]711065&16515072 => 524288
 [algo]524288>>18 => 2
 [xx]func function charAt() { [native code] } called, args->, [2] ==> d
 [algo]711065&258048 => 184320
 [algo]184320>>12 => 45
 [xx]func function charAt() { [native code] } called, args->, [45] ==> z
 [algo]711065&4032 => 2432
 [algo]2432>>6 => 38
 [xx]func function charAt() { [native code] } called, args->, [38] ==> o
 [algo]711065&63 => 25
 [xx]func function charAt() { [native code] } called, args->, [25] ==> 4

a_bogus,算法,python

a_bogus,算法,python

可以看到,是乱码的三个一组,三个一组地生成的4个字符,由乱码、和Dkdpgh2ZmsQB80/MfvV36XI1R45-WUAlEixNLwoqYTOPuzKFjJnry79HbGcaStCe字符串参与运算,得出。

乱码长度为33 那么最终产生的a_bogus长度就是33/3*4=44,和上面的截图一致

解密代码如下:

let lm1 = "�BàR¡ü<�\u0017=\u0004\u001c�PmÛ�H\bÍ\r¡Æé\u0010x-®­þ\nÙ�"  
let s = {
    "s0": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    "s1": "Dkdpgh4ZKsQB80/Mfvw36XI1R25+WUAlEi7NLboqYTOPuzmFjJnryx9HVGcaStCe=",
    "s2": "Dkdpgh4ZKsQB80/Mfvw36XI1R25-WUAlEi7NLboqYTOPuzmFjJnryx9HVGcaStCe=",
    "s3": "ckdp1h4ZKsUB80/Mfvw36XIgR25+WQAlEi7NLboqYTOPuzmFjJnryx9HVGDaStCe",
    "s4": "Dkdpgh2ZmsQB80/MfvV36XI1R45-WUAlEixNLwoqYTOPuzKFjJnry79HbGcaStCe"

  }
  let out = "";
  for (let i = 0; i < lm1.length; i = i + 3) {
    let num1 = lm1.charCodeAt(i) << 16 | lm1.charCodeAt(i + 1) << 8 | lm1.charCodeAt(i + 2) << 0
    out += s.s4.charAt((num1 & 16515072) >> 18)
    out += s.s4.charAt((num1 & 258048) >> 12)
    out += s.s4.charAt((num1 & 4032) >> 6)
    out += s.s4.charAt((num1 & 63) >> 0)
  }
  console.log(out)
  return out
}

接着就是看乱码是怎么产生的,那个s4是观察多几个日志发现是固定的。

往上看日志发现:

a_bogus,算法,python

乱码是由两个乱码产生:

let lm_part1 = "ƒBàR";
let lm_part2 = "¡ü<–\u0017=\u0004\u001c”PmÛŽH\bÍ\r¡Æé\u0010x-®­þ\nÙ™"

往上搜索lm_part1最开始出现的位置:

a_bogus,算法,python

a_bogus,算法,python

可以看出,日志打印出来的信息还是非常全面的,直接告诉你了是调用了String.fromCharCode()这个函数,参数是[131,66,224,82],我还是花费了些时间,思考如何添加日志点的,确实伤头发,哈哈。

那么这四个数来自于哪呢?当然是就在它上面的这地方寻找线索咯。

[xx]func function now() { [native code] } called, args->, [] ==> 1693911085249
[algo]1693911085250&255 => 194
[algo]1693911085250>>8 => 6617072
[algo]6617072&255 => 240
[algo]194&170 => 130
[algo]3&85 => 1
[algo]130|1 => 131
[algo]194&85 => 64
[algo]3&170 => 2
[algo]64|2 => 66
[algo]240&170 => 160
[algo]160|64 => 224
[algo]240&85 => 80
[algo]66&170 => 2
[algo]80|2 => 82
[xx]func function fromCharCode() { [native code] } called, args->, [131,66,224,82] ==> ƒBàR

为了让大家理解这个过程,我们看一下这个完整过程,下面大家就照葫芦画瓢就可以。

131  = 130|1,而130 = 194&170, 1 = 3&85,故:
131 = (194&170) | (3&85),而194 = 1693911085250&255,170、85、3为定数,故
131 = ((1693911085250&255)&170) | (3&85)

其余的数类似,解密代码为:

let t3 = 1693911085250
let n1 = t3 & 255
let n2 = (t3 >> 8) & 255
lm_part1_arr.push(n1, n2)
lm_part1_arr.push((n1 & 170) | (3 & 85), (n1 & 85) | (3 & 170), (n2 & 170) | (66 & 85), (n2 & 85) | (66 & 170))
console.log(lm_part1_arr);
let lm_part1 = String.fromCharCode(...lm_part1_arr.slice(5))

接下来我们看一下lm_part2的地方:

a_bogus,算法,python

从图上可以看出,这个乱码的生成涉及两个输入:

  • 乱码:Ad\u0000\u0004\u0000ôØ’÷\u0000\u0001\u0000©ÏÂà\u0000\u0000\u0000›\u0000\u0000\u000ed÷Æ\u000e\u0003à
  • 数组[62, 17, 140, 235, 54………………50, 219, 128, 218, 223]

这两个多次调试数组为固定的值,也可以去看日志里面的产生逻辑:

a_bogus,算法,python

这个是由乱码ƒ产生的数组序列,迭代256产生,这里我们就不多分析了。

我们继续分析,这个数组和乱码是怎么生成lm_part2的:

a_bogus,算法,python

a_bogus,算法,python

从这里可以看出,

¡ = String.fromCharCode(lm_in.charCodeAt(0) ^ arr_256[24])

ü = String.fromCharCode(lm_in.charCodeAt(1) ^ arr_256[47])

……

其余的类似,看日志就能得出结论,其中24、47等数字都是固定的,看日志就能得出。

这样这个¡ü<**–**\u0017=\u0004\u001c**”**PmÛ**Ž**H\\bë\\r¡Æn\u0010乱码就逆推完成了。

接下来是lm_in = Ad\u0000\u0004\u0000ôØ’÷\u0000\u0001\u0000©ÏÂÆ\u0000\u0000\u0000\u001c\u0000\u0000\u000ed÷Æ\u000e\u0003A这个的逆推:

a_bogus,算法,python

a_bogus,算法,python

显而易见是由这个数列产生的乱码。

那么这个数列怎么来的:

a_bogus,算法,python

仔细分析上面的日志发现这个数组是由另一个数组交换位置得来的,具体我们放在下一篇中介绍!
放一张算法验证成功截图:
a_bogus,算法,python

记得加入粉丝群哦,新鲜文章首先发布哦。文章来源地址https://www.toymoban.com/news/detail-780459.html

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

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

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

相关文章

  • 【Python爬虫案例】抖音下载视频+X-Bogus参数JS逆向分析

    【Python爬虫案例】抖音下载视频+X-Bogus参数JS逆向分析

    选择自己感兴趣的抖音博主,本次以“经典老歌【车载U盘】”为例 每次请求的页面会有很多接口,需要对接口进行筛选: 第一步筛选XHR筛选 第二步筛选URL中带有post 通过筛选play_add值找到视频的地址 通过对比两次请求发现只有X-Bogus数值会有变化,max_cursor是用翻页,后文再

    2024年03月15日
    浏览(13)
  • DX算法还原

    DX算法还原

    早在之前作者就写过一篇关于顶象的滑块验证,潦潦草草几句话就带过了。 出于互相学习的想法,给了一个大学生,奈何不讲武德把源码甩群里了,虽然在大佬们眼里不难, 不过拿着别人的东西乱传还是不太好。自认倒霉,大表哥们互相学习学习。文末作者留下还原的案 例

    2024年02月06日
    浏览(13)
  • 瑞数jsvmp算法还原流程讲解

    提示!本文章仅供学习交流,严禁用于任何商业和非法用途,如有侵权,可联系本文作者删除! 前言 ​ 又是很久没写文章了,今天水一篇文章吧,鉴于之前有看到过别人的文章被警告的案例,所以这篇文章就仅写一下还原瑞数vmp的大概流程吧(仅记录下自己还原的思路)

    2024年02月08日
    浏览(21)
  • 瑞数6代vmp算法还原流程笔记

    瑞数6代vmp算法还原流程笔记

    **本文主要提供思路和流程,不提供代码**         1.debugger解决         第一个debugger通过右键一律不在此暂停解决         第二个通过在控制台输入以下hook eval的代码便可解决         2.如何调试           1.将控制台的日志错误输出关闭,不然一直输出报错的日志    

    2024年02月03日
    浏览(12)
  • Bogus 实战:使用 Bogus 和 EFCore 生成模拟数据和种子数据【完整教程】

    Bogus 实战:使用 Bogus 和 EFCore 生成模拟数据和种子数据【完整教程】

    上一章我们介绍了在 xUnit 单元测试中用 xUnit.DependencyInject 来使用依赖注入,上一章我们的 Sample.Repository 仓储层有一个批量注入的接口没有做单元测试,今天用这个示例来演示一下如何用 Bogus 创建模拟数据 ,和 EFCore 的种子数据生成 丰富的数据生成支持 :Bogus 提供了广泛的

    2024年04月17日
    浏览(34)
  • 多种智能搜索算法可视化还原 3D 魔方

    多种智能搜索算法可视化还原 3D 魔方

    许久没有写图形化界面的程序了,最近学习了一些经典的盲目搜索算法与智能搜索算法,正好拿来还原三阶魔方!试试手! 提前声明 我不是专业搞人工智能的,理论或者实现过程有些许错误也很正常,评论区指出即可 先说一下开发环境吧! 源码及打包程序的下载链接放在文

    2024年03月18日
    浏览(44)
  • 最新abogus算法还原之传参加密

    最新abogus算法还原之传参加密

    本文只是我简要的分析过程,以及一些重要点的记录,不涉及核心算法   aHR0cHM6Ly9idXlpbi5qaW5yaXRlbWFpLmNvbS9kYXNoYm9hcmQvbWVyY2gtcGlja2luZy1saWJyYXJ5 base64解密即可,需要登录 直接从启动器追踪 或者根据url参数定位 最后定位到 bdms.js文件  经过分析是jsvmp,在这里采用的是算法还原方式 由于

    2024年04月25日
    浏览(18)
  • 某易将军令口令纯算法还原py篇

    这个是代码片,直接上代码 先转token 时间函数 转字节数组

    2024年02月12日
    浏览(46)
  • 人工智能迷惑行为大赏!

    人工智能迷惑行为大赏!

    目录 人工智能迷惑行为大赏 一:人工智能的“幽默”瞬间 1. 图像识别出现AI的极限 2. 小批量梯度下降优化器 3. 智能聊天机器人的冰雹问题 4. 大语言模型-3经典语录 二:技术原理探究 1. 深度学习 2. 机器学习 3. 自然语言处理 4. 计算机视觉 三:社会影响分析 1. 就业市场的变

    2024年03月16日
    浏览(14)
  • 人工智能迷惑行为大赏

    人工智能迷惑行为大赏

    把坚持当成一种习惯,别人光鲜的背后,都有加倍的付出,没有谁比谁更容易,只有谁比谁更努力! 在当今人工智能技术发展的浪潮下,越来越多的应用和平台开始推出自己的AI大模型,让我们似乎可以与人工智能进行更深入的互动和体验。例如,文心一言、通义千问等引人

    2024年03月13日
    浏览(14)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包