js逆向-逆向部分技巧总结
前面我们已经学习了不少JavaScript逆向相关的知识,包括浏览器调试、Hook、AST、无限debugger的绕过以及JavaScript的模拟调用等,这些知识点都比较松散,有时大家学完了可能觉得没有形成一个知识体系,或者说没有一个常规“套路”来应对一些JavaScript逆向的处理流程。
本节中,我们就对前面的知识点做一个串联和总结,总结出JavaScript逆向过程中常用的流程,这个流程适用于大多数JavaScript逆向过程。大家熟练运用之后,可以在不同情况下运用不同的技巧来进行JavaScript逆向操作。
总的来说,JavaScript逆向可以分为三大部分:寻找入口、调试分析、模拟执行。下面我们来分别介绍。
- 寻找入口:这是非常关键的一步,逆向在大部分情况下就是找一些加密参数到底是怎么来的,比如请求中token、sign等参数到底是在哪里构造的,这个关键逻辑可能写在某个关键的方法里面或者隐藏在某个关键变量里面。一个网站加载了很多JavaScript文件,那么怎么从这么多JavaScript代码里面找到关键的位置,那就是一个关键问题。这就是寻找入口。
- 调试分析:找到入口之后,比如说我们可以定位到某个参数可能是在某个方法里面执行的了,那么里面的逻辑究竟是怎样的,里面调用了多少加密算法,经过了多少变量赋值和转换等,这些我们需要先把整体思路搞清楚,以便于我们后面进行模拟调用或者逻辑改写。在这个过程中,我们主要借助于浏览器的调试工具进行调试分析,或者借助于一些反混淆工具进行代码的反混淆等。
- 模拟执行:经过调试分析之后,我们差不多已经搞清楚整个逻辑了,但我们的最终目的还是写爬虫,怎么爬到数据才