本文来自于 安卓逆向与JavaScript逆向组合课 中的 第六课,略有修改。
JavaScript逆向技术选型
众所周知,在确定了逆向目标之后,就要思考如何选型逆向使用的方案,在JavaScript中通常可以分为三种:
破解方案 | 适用场景 | 特性 |
---|---|---|
白盒还原 | 适用于简单的未混淆JS,加密算法简单或者为标准的AES、RSA等 | 完全掌控对方JS,可直接翻译为Python等语言,但还原过程需要人工分析,耗时可能较长 |
Node还原 | 对方JS加密算法复杂、无法剥离,但是加密过程与设备指纹或用户信息无关 | 与rpc调用方式适用场景类似,但实现比RPC复杂,需要模拟浏览器环境,但优点在于可直接移植到JVM中执行,无需维护实体浏览器和其他角色 |
RPC调用 | 对方JS加密算法复杂、无法剥离,但是加密过程与设备指纹或用户信息无关 | 不关注对方运行过程,直接通过RPC方式调用,破解快速,但交互链路涉及多个系统,且需保证实体浏览器存活 |
浏览器自动化技术 | 适用于无法破解的情况,例如某支付 | 最接近真人行为,但是存在很多自动化痕迹(可绕过) |
上述三种破解方案各有不同的使用场景和优缺点,在破解难度上依次降低,使用时可以根据破解时间、JS分析难度、风控难度进行选择。