JS逆向核心流程

JS逆向核心流程:

  • 从分析网络请求 -->
  • 定位加密参数生成处 -->
  • 扣加密参数的 “JS加密算法代码” -->
  • 补浏览器环境 -->
  • 到最终的node调用;

这个流程是JS逆向的主经脉,是JS逆向的核心,其中每个步骤都有各自的体系化分析方案,如 “定位加密参数生成处”,其方案有:

  • 搜索加密参数
  • 通过请求的Initiator去跟调用栈
  • xhr断点请求发送位置
  • DOM断点响应数据渲染位置
  • Event Listener断点触发事件位置
  • hook对象赋值-对象属性访问

等等。。。将这一系列分析方案结合起来形成体系化,最终的目的就是:“定位加密参数生成处”,然后进入后续流程-- 扣加密参数的“js加密算法代码”

对不同的反爬网站进行逆向,我们都要亲自去走前三个步骤,难有通杀方案;
前三个步骤都需要我们花时间去打磨,去练,才能运用自如,以应对更高难度的逆向;

“补浏览器环境” 这个步骤却比较特殊,有可行的通杀方案,
这个步骤的最终目的是 让扣出来的 “JS加密算法代码” 能在 node环境中正确运行。
实现这个目的的方案有两个:

  1. “JS加密算法代码” 中使用到的浏览器环境逻辑替换掉;如:
var flag;
if(navigator.userAgent){
    
    
flag=true
} 
替换为 var flag=true;
  • 使用js来伪造浏览器的各种环境,如 BOM: navigator.userAgent DOM:document.cookie等;

当然这两种方案可以糅合使用,但是其缺陷依然存在:

  • 第一种方案难点在于 需要定位代码使用了哪些浏览器环境,然后才能进行逻辑替换; 而且当网站js逻辑更新时,需要再替换一遍。。无法对不同网站进行通杀

  • 第二种方案难点在于 浏览器环境太多,需要伪造的对象太多了,但是补的足够多时可 ”通杀“

为了减少在这个步骤花费的精力,极大提高工作效率,我们选择优化第二种方案 达到通杀目的:
通杀方案 – 通过js模拟一个趋于完美的浏览器环境,让扣出来的 “JS加密算法代码” 犹如运行在真实浏览器中;
这个方案工程代码量较大,需要借助 “补环境框架” 来组织各种浏览器环境代码以达到最终效果。
“补环境框架直通车“:JS逆向之浏览器补环境详解

猜你喜欢

转载自blog.csdn.net/qq_36291294/article/details/127702973