【AI 逆向专栏】某搜登录逆向

0 阅读6分钟

NKu3Ob.jpg

声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在公众号【K哥爬虫】联系作者立即删除!

前言

近来,AI 的浪潮席卷并重塑了各行各业,互联网领域首当其冲、受冲击尤为剧烈。早先被讨论最多的或许还是前端工程师,而随着大模型持续迭代、能力不断突破,如今这场变革早已蔓延至整个互联网行业,对每一位从业者都构成了前所未有的挑战。

“要么拥抱 AI,要么被 AI 替代”,这句话正从一句警示,变成越来越真切的行业现实。如果仍抱着几年前的固有印象,把 AI 当成可有可无的 “玩具”,固守旧有工作方式不愿升级,很快就会在效率竞争中掉队,甚至被更懂工具、更能协同 AI 的人所取代。这不是在危言耸听!

NKu6tQ.png

就 ”爬虫与逆向工程“ 这条赛道而言,如今 AI 在各端的算法逆向、协议分析、代码还原能力,已经迎来了质的飞跃。配合 MCP,亦或是直接将混淆后的代码丢给 AI,其都能一步步拆解逻辑,分析出正确的加密算法。哪怕是 wasm、jsvmp 这类传统的硬骨头,只要稍加调教、给对思路,AI 也只是会多耗费一些推理时间而已。

过去需要数小时甚至数天才能手动还原的加密逻辑,现在借助 AI 可以大幅缩短周期,效率提升肉眼可见。

为此,K 哥将新开 AI 逆向专栏,分享如何利用 AI 解决各类逆向过程中可能会遇到的难题,感受新时代的技术风口。

逆向目标

  • 目标:某搜登录逆向
  • 网址:aHR0cHM6Ly9nZW8uYWlkc28uY29t
  • AI 模型: gpt-5.3-codex

抓包分析

先打开开发者工具,进入网站,然后点击右上角的 “登录/注册”,选择账密登录,随便输入,点登录按钮,即可抓包到登录接口 /api/user/login,加密参数为 he、sign、secret、pwd 以及请求头中的 d-v:

NHpPhe.png

响应内容如下:

  • 参数错误:{"code":652,"msg":"签名验证失败:-13"}
  • 参数正确:{"code":405,"msg":"账号未注册或密码不正确!"}

逆向分析

先跟栈分析下,看看强度,简单的直接扣就行了,没必要浪费 tokens。

跟到 app.0e3582c0.js 文件中,r = r.then(t.shift(), t.shift()); 是典型的异步流程:

NHpRrP.png

鼠标选中 t,各函数逐一点进去看看先,发现关键的算法部分就在第一个函数里面,he、sign、d-v 的生成位置如下图所示(pwd 跟栈到 handleLogin 中或者直接搜索 pwd: qa()(n) 都可定位到,md5 算法加密明文密码生成):

NHpYew.png

这几个参数的算法都在 s.js?v=1 文件中,选中 window.he 之类的,就能跟进去,该文件经过混淆:

NHpFsY.png

可以将文件保存到本地,让 AI 解混淆,当然,想要解的很完全,需要根据文件结构,加一些提示词。等 AI 开始干活,就可以泡杯茶,刷刷新闻了:

NHpdEH.png

NHLkpq.png

AI 处理完后,会生成解完混淆后的文件,甚至包括 AST 脚本,还能学习 AI 的思路。检查一下,看能否替换成功,如果觉得有的地方解的还不够深入,可以让 AI 继续处理,比如将壳函数、链式表达式、包装函数调用做批量还原,内联成原始运算/调用等等。相关解混淆后的文件,会分享到知识星球中,AI 解混淆前后的对比图如下(以 sh 函数为例):

NKuElP.png

解完混淆之后,之前那几个参数的算法都较为清晰,直接扣下来即可,如果扣下来发现值不对,同样可以交给 AI,比如说当前算法与网站原算法入参相同(相应文件都在当前目录下),但是生成的值不一致,让他对比分析,定位问题。还不行就丢大招,跟他说 “你干不了,有的是 AI 能干”!

NKuOSq.jpg

甚至直接给代码段,他都能结合原文件,无需古法断点调试,就能硬看出算法实现流程:

NHrDNc.png

在过去,为了提升执行效率,都会尝试把 JavaScript 算法还原成 Python 算法,这个过程还是相当烧脑的。现在时代变了,直接让 AI 干这个活,简单的描述需求即可,然后等着就完事了。以 he 参数为例,AI 完美复现,还原成 Python 算法带来的速度提升相当明显,足足 100 倍(相关算法也会分享到知识星球中):

NHrJNZ.png

接下来主要看 secret 参数,这个参数直接搜,其实也是能定位到出值位置的。搜索 secret,会跟到 "DLCyb": "secret",这部分在大对象 _0x545b43 中,该对象的作用就是用于混淆,动态取值避免静态分析,因此,接下来搜 DLCyb,看在哪儿被调用了即可,定位到如下位置(下图代码是解混淆后替换的):

NKulfe.png

按照古法逆向的思路,接下来就需要往上跟,看 secret 究竟用到了哪些算法生成的,小伙伴们可以自行尝试下,看溯源出该参数的算法逻辑,需要花多少时间。这里直接将这行代码丢给 AI,大概 1 分钟,就能分析出大致的逻辑以及相应的位置:

NKu9JV.png

NKuTgJ.png

然后让他继续深入分析,做字节码级还原、反汇编,最后根据相关逻辑,生成可运行、可出值的算法脚本即可。如果值不对,就给提示,接着让他分析,AI 会自行想办法定位差异,修正、优化算法:

NKuBTL.png

下图正确定位到问题所在,最终对比测试,入参相同时,结果与网页生成的一致:

NKumYG.png

还能让其描述分析过程,定位思路,答疑解惑:

NKupdB.png

至此,所有参数就分析完了,AI 的逆向、解混淆能力有目共睹,已经今非昔比了。平时用 AI 解决逆向问题,最好还是购买类似 Coding Plan 的套餐,天/周/月 限额的那种,纯耗 tokens 的话,成本太高。

文中提到的部分算法、解混淆后的文件,都会分享到知识星球中,仅供学习交流。

结果验证

NKusm6.png