超级反爬学习系列2篇-壳1代码分析,控制流讲解

本文是超级反爬学习系列的第二部分,主要聚焦于一个JavaScript壳代码的分析。首先对代码进行了初步分析,发现大约1000行代码,核心在于一个700行的函数。关键点是一个无限循环`while (1)`,揭示了控制流平坦化的使用。控制流平坦化是一种降低代码可读性但保持执行顺序不变的技术。通过数组`_$Ps`(如[10, 5, 8, 7, 0, 1, 2, 9, 3, 6, 4])可以确定代码的执行路径,每个数字对应代码的一行,执行顺序固定。该技术对于动态转静态分析至关重要。" 125351353,7445085,ESP8266通过I2C驱动OLED显示屏教程,"['单片机', '嵌入式开发', '物联网']
摘要由CSDN通过智能技术生成

二 壳一代码分析

初步分析

首先一般分析一个js,先将所有代码都压缩,看看总体的架构

在这里插入图片描述

在这里插入图片描述

可以看到壳1的代码并不多,大概1000行。

主要代码集中在最后一个函数大概700行。

其中几个重点一开始有一个变量,一个数组

看到一个while (1) 循环不出意外就是某数的控制流平坦化了。

仔细看一下这个控制流,对后续做动态转静态有重要的作用
在这里插入图片描述

控制流讲解

控制流平坦化主要思想就是不影响代码执行顺序的前提,将代码可读性降低

实际上通过_$Ps 拿到[10, 5, 8, 7, 0, 1, 2, 9, 3, 6, 4]这样一个数组。

就已经拿到了代码的执行顺序。

这里面每一个数字都可以将它看作一行代码

这样的数组就

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值