某茄小说a_bogus参数逆向实战:bdms.js加密算法分析与还原

某茄小说a_bogus参数逆向实战:bdms.js加密算法分析与还原

最近沉迷小说,更新有所放缓。恰逢书荒,想找几本好书,便打算写个爬虫程序,抓取某茄小说网站的各大排行榜数据。在数据抓包实战分析过程中,我发现请求参数里有两位”老朋友”——msTokena_bogus。本文将完整呈现针对某茄小说的a_bogus参数逆向过程,重点分析加密逻辑的定位与还原技巧。

《JS逆向实战系列一|某头条a_bogus参数逆向分析与算法还原》相比,本次某茄小说加密分析的调用链路更为隐蔽,需要通过特定调试技巧才能精准定位加密位置。

本文目录

  1. 抓包分析:锁定目标接口与参数
  2. 初步尝试:全局搜索遇阻
  3. XHR断点:精准拦截请求
  4. 堆栈分析:追踪加密调用链
  5. 精准定位:条件断点锁定目标
  6. 扣取代码:提取加密逻辑
  7. 环境补全:适配Node.js环境
  8. 本地验证:运行结果对比
  9. 扩展思考:调试技巧分析
  10. 常见问题与解决方案
  11. 获取完整课件

1. 抓包分析:锁定目标接口与参数

在某茄小说排行榜页面进行抓包,点击任意排行榜分类后,会捕获到/api/rank/category/list接口。该接口的请求链接中包含两个关键加密参数,这次我们重点进行加密参数的分析。

a_bogus参数逆向某茄小说排行榜接口抓包
图1: 排行榜接口中的加密参数

2. 初步尝试:全局搜索遇阻

按照常规思路,首先在Sources面板使用全局搜索查找a_bogus关键词,但搜索结果并没有给a_bogus赋值的代码。这表明需要进行更深层次的加密分析来定位加密位置。

全局搜索无结果

3. XHR断点:精准拦截请求

在Sources面板中添加XHR断点,URL片段设置为/api/rank/category/list。刷新页面并点击排行榜分类后,代码执行暂停在关键位置:

return (0 === i.length || l) && _ ? _.apply(O, R) : o
XHR断点拦截请求

4. 堆栈分析:追踪加密调用链

通过Call Stack面板分析调用堆栈,在栈帧中发现了熟悉的bdms.js文件。点击进入关键栈帧,定位到核心代码:

(b = s.apply(l, u), p[++d] = b);

在此处添加日志断点,输出变量b的值,确认这就是a_bogus参数的生成位置。

堆栈分析定位加密位置

5. 精准定位:条件断点锁定目标

将日志断点升级为条件断点:b.length == 44。这样只有当生成44位长度的字符串时才会暂停,精准过滤其他加密过程。这次的bdms.js算法还原过程体现了精准定位的重要性。

else if (59 === m) c = f[r++], s = p[d--], (u = function e() { var r = e._v; return (0, e._u)(r[0], arguments, r[1], r[2], this) } )._v = [s, c, v], u._u = e, p[++d] = u; else

6. 扣取代码:提取加密逻辑

bdms.js文件完整复制到本地,在关键位置添加代码暴露加密函数:

u._u = e, window.task = u, // 暴露加密函数到全局 p[++d] = u;

7. 环境补全:适配Node.js环境

在文件开头添加环境补全代码,完成环境配置:

// 环境补全 window = global self = window; XMLHttpRequest = function(){} window.requestAnimationFrame = function(){} navigator = {}

在文件末尾添加调用函数,实现完整的a_bogus参数逆向功能。

function get_a_bogus(Path = null) { args =[ 0,1,0, "app_id=2503&rank_list_type=3&offset=0&limit=10&category_id=8&rank_version=&gender=0&rankMold=2&msToken=...", "","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36..." ] if(Path) args[3] = Path return window.task.apply(null, args); }

8. 本地验证:运行结果对比

在终端中运行node bdms.js,成功生成a_bogus参数值,与浏览器中的格式完全一致,标志着本次某茄小说加密分析的成功完成。

本地运行生成a_bogus

9. 扩展思考:调试技巧分析

为什么不直接跟栈找加密函数?因为该代码处于循环中,负责生成多个参数。使用条件断点b.length == 44可以精准锁定目标,这是逆向分析中的关键调试技巧。

10. 常见问题与解决方案

  • Q:补环境是否太简单?
    A:JS逆向的目标是让代码能运行,这种”够用就行”的方式最有效。
  • Q:不同站点加密为何差异大?
    A:核心算法相同,但集成方式和调用链可能完全不同。
  • Q:条件断点条件如何设置?
    A:通过抓包观察目标参数的长度特征来设定。

11. 获取完整课件

关注公众号:孤狼网络科技,回复:fanqie_a_bogus,获取完整代码课件。

技术总结
通过本JS逆向教程,我们完成了某茄小说的加密参数分析。与之前案例相比,本次重点在于条件断点的精准定位和最小化代码扣取方案。本文由林石工作室提供技术支持。

下篇预告: 下一篇《JS逆向实战:某看视频hk_sign参数逆向实战全记录》中,我们将直击某看视频核心接口,通过数据抓包实战,完整解析hk_sign参数逆向与MD5签名算法还原过程,并提供可落地的代码方案。

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注