深入分析某宝登录过程中涉及的 bx-ua 参数逆向思路,首先关注到的是 e 经过 addNCParamToRequest 函数处理后,params 集合新增了 bx-ua 参数。追踪 addNCParamToRequest 函数,最终导向关键函数 getFYToken。深入分析关键文件 fireyejs.js,借助本地代码分析,发现关键函数 t 指导整个流程。t 内键仿掘部通过 for 循环和两层 switch 结构控制代码流程,关键参数为 Ct 和 bt。bt 唯一赋值点仅出现在特定位置,并由 Ct 运算获得。Ct 在代码中各处均有赋值。代码中采用 St 作为判断条件的三目表达式,混淆执行流程。St 与 bt 类似,在每次循环后赋值,且其值根据 Ct 获得,Ct 也在 St 分支中修改自身值。流程大致如下:每个 Ct 值对应一个分支,通过 AST 还原此映射关系,再通过 hook 原代码获取 Ct 经历的所有值,从而通过映射还原整个流程。经过上述步骤,最终找到 Qo,即目标值。分析中发现 Qo 来自 $e,而 $e 由 Ie 得出。通过逐级回溯,最终定位到加密算法的核心。分析过程中,发现代码优化空间,但个人目前仅提供思路,期待与大家共同探讨。具体来看,某段循环代码展示了控制流逻辑。循环判断是否继续,自增操作和循环体内容被分隔在不稿核同分支中。理论上,结合分支的大此 case 值、Ct 赋值语句以及 if 语句、特殊处理的 for 循环,AST 可以帮助还原原始代码逻辑。但实际操作中,个人尝试的 AST 操作效果并不理想,主要问题集中在循环判断条件和循环体的提取上,期待高手分享解决方案。