常见反爬及应对

一,特殊混淆的还原

1.1 还原 AAEncode 与 JJEncode

AAEncode是一种JavaScript代码混淆算法,利用它,可以将代码转换成 颜文字 表示的JavaScript代码。

去掉代码最后的 (‘‘),这是函数的自调用,去除后就是函数的声明。也可以在去掉 (’’)后,加上 .toString(),进一步将方法转化成字符串。

JJEncode 的还原方法与 AAEncode 一致。

1.2 还原JSFuck

JSFuck是一种基于JavaScript的极简编程语言,它使用六个不同的字符来表示所有可能的JavaScript代码。这六个字符是:! + - * . /。由于其极简的语法,JSFuck通常用于教学目的,展示编程语言的基本概念,如运算符优先级和变量声明等。

下面是JSFuck的一些基本操作:

  • “!” 代表 NOT 操作,用于翻转布尔值。
  • “+” 代表 ADD 操作,用于加法运算。
  • “-” 代表 SUBTRACT 操作,用于减法运算。
  • “*” 代表 MULTIPLY 操作,用于乘法运算。
  • “.” 代表 DECIMAL POINT 操作,用于在数字中表示小数点。
  • “/” 代表 DIVIDE 操作,用于除法运算。

虽然JSFuck只使用六个字符,但它可以表达复杂的JavaScript代码。例如,下面是一个简单的JSFuck程序,它将两个数字相加并输出结果:

js复制代码+!!.++[+[+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!]

虽然JSFuck的语法非常简单,但它并不适合编写复杂的程序。由于其可读性和可维护性较差,因此在实际开发中很少使用。

JSFuck能够使用六个不同的字符来表示所有可能的JavaScript代码,主要基于以下几个原因:

  1. 递归和链式操作:JSFuck利用了JavaScript中的递归和链式操作特性。通过连续使用相同的字符,JSFuck可以表示复杂的操作和逻辑。例如,连续的"+“字符可以表示多次的加法操作,连续的”*"字符可以表示多次的乘法操作。
  2. 位运算:JSFuck也利用了JavaScript中的位运算。通过将数字转换为二进制位,然后进行一系列的位运算(如NOT、AND、OR等),JSFuck可以表示几乎所有的数字和布尔逻辑操作。
  3. 字符编码:JSFuck还利用了字符编码的知识。通过将不同的字符组合表示特定的编码值,JSFuck可以创建出任何想要的字符串或标识符。
  4. 堆栈操作:JSFuck还利用了堆栈的概念。通过连续的".“和”/"字符,JSFuck可以模拟出堆栈的行为,如入栈、出栈等。

因此,尽管JSFuck只使用六个不同的字符,但它通过递归、链式操作、位运算、字符编码和堆栈操作等方式,能够表示所有可能的JavaScript代码。

还原JSFuck:

找到代码最后的一个右括号和其对应的左括号,将中间的内容粘贴到控制台打印出来,其内容就是传入的参数,将这部分内容删除,剩下的过程就和 AAEncode 一样了。

二,WebAssembly 分析

WebAssembly 是一种可以使用非 JavaScript 编程语言编写代码并且能在浏览器上运行的技术方案。常见的呈现形式就是 wasm 后缀的文件,即原生代码被编译成了 wasm 后缀的文件,JavaScript 通过调用 wasm 文件得到对应的计算结果,然后配合其他 JavaScript 代码实现页面数据的加载和页面的渲染。

示例使用如下:

在这里插入图片描述

进入 wasm 文件的 encrypt 方法后,代码如下:

在这里插入图片描述

这里面的逻辑原本是用 C++ 编写的,通过 Emscripten 转化为 wasm文 件,就成了上面的代码形式。

此时已经看不懂了,但可以通过模拟执行的方式得到加密结果:将 wasm 文件下载下来,要使用 python 模拟执行 wasm,可以使用两个 python 库,一个是 pywasm,另一个是 wasmer-python,具体内容见崔庆才第11章节内容。

三,绕过无限 debugger

debugger 是 JavaScript 中定义的一个专门用于断点调试的关键字,只要遇到它,JavaScript 的执行便会在此处中断,进入调试模式。

绕过方式有:

禁用全局断点,禁用局部断点(在断点行右键),条件断点(在断点行右键),替换原始文件等。

禁用全局断点图示:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【揭秘】国内十大顶尖AI大模型,引领智能科技新纪元

大模型大模型通常指的是参数量非常大、数据量也非常大的深度学习模型。这些模型由数百万到数十亿甚至更多的参数组成,需要海量的数据和强大的计算资源进行训练和推理学习的模型。大模型设计的目的在于提高模型的表示能力和性能、应对复杂数据集和任务、提升泛化能力…

嵌入式学习——硬件(Linux系统在2440上的启动)——day57

1. Linux2.6系统在s3c2440上的启动过程分三个阶段 1.1 启动u-boot 1.2 启动Linux内核 1.3 挂载根文件系统 2. bootloader 2.1 定义 bootloader的本质是一个裸机程序,bootlood专门是为了能够正确地启动linux操作系 统,在系统初上电时需要对系统做一些…

BK145FRC10HSK、BK165FRC10HSK电液比例开环控制变量泵放大器

BK15FRC10HAK、BK35FRC10HAK、BK45FRC10HAK、BK55FRC10HAK、BK70FRC10HSK、BK80FRC10HSK、BK90FRC10HSK、BK100FRC10HSK、BK120FRC10HSK、BK145FRC10HSK、BK165FRC10HSK、BK180FRC10HSK电液比例开环控制柱塞泵主要是在传统的液压泵基础上,增加了电液比例控制先导阀。…

从零开始实现大语言模型(二):文本数据处理

1. 前言 神经网络不能直接处理自然语言文本,文本数据处理的核心是做tokenization,将自然语言文本分割成一系列tokens。 本文介绍tokenization的基本原理,OpenAI的GPT系列大语言模型使用的tokenization方法——字节对编码(BPE, byte pair en…

【bug报错已解决】ERROR: Could not find a version that satisfies the requirement

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言一、问题描述1.1 报错示例1.2 报错分析 二、解决方法2.1 方法一2.2 方法二 三、总结 引言 有没有遇到过那种让人…

墨烯的C语言技术栈-C语言基础-003

三.数据类型 1.char // 字符数据型 2.short // 短整型 3.int // 整型 4.long // 长整型 5.long long // 更长的整型 6.float // 单精度浮点数 7.double // 双精度浮点数 为什么写代码? 为了解决生活中的问题 购物,点餐,看电影 为什么有这么多类型呢? 因为说的话都是字符型…

CM-UNet: Hybrid CNN-Mamba UNet for Remote Sensing Image Semantic Segmentation

论文:CM-UNet: Hybrid :CNN-Mamba UNet for Remote Sensing Image Semantic Segmentation 代码:https://github.com/XiaoBuL/CM-UNet Abstrcat: 由于大规模图像尺寸和对象变化,当前基于 CNN 和 Transformer 的遥感图像语义分割方…

openGauss真的比PostgreSQL差了10年?

前不久写了MogDB针对PostgreSQL的兼容性文章,我在文中提到针对PostgreSQL而言,MogDB兼容性还是不错的,其中也给出了其中一个能源客户之前POC的迁移报告数据。 But很快我发现总有人回留言喷我,而且我发现每次喷的这帮人是根本不看文…

2024广州智能音箱展|广州蓝牙耳机展

2024广州智能音箱展|广州蓝牙耳机展 时间:2024年11月29日-12月1日 地点:广州琶洲保利世贸博览馆 【展会简介】 中国是全球最大的音频产品制造基地和消费市场,随着国内外互联网巨头纷纷瞄准音频行业并投入巨资布局AI产品矩阵,音…

pom.xml文件加载后没有变成maven图标

原因: 开启了IDEA的节电模式 现象为: xml会变橙色,yml变粉色,自动提示关闭等 把这个节能模式的勾选给取消掉就可以正常显示了

python提取图片中的文字写入excel文件,并打包为exe可执行文件

python提取图片数据写入excel,并打包为exe可执行文件 1. 以下面的图片为例2. python环境需要的依赖包3. 创建交互式窗口4. 读取文件夹下的所有文件并提取数据5. 提取图片中字段的代码6. 打包代码为exe可执行文件安装打包依赖文件运行打包代码 1. 以下面的图片为例 2…

入门Salesforce:必须掌握的20+基础专业术语!

Salesforce的发展令人印象深刻。在过去的20年中,Salesforce创建了一个由管理员、开发人员、顾问和用户组成的生态系统,不断颠覆创新CRM,促进平等和多样性。 作为初学者,探索Salesforce领域就像学习一门新语言。Salesforce中有着大…

YOLOv8改进 | 卷积模块 | 减少冗余计算和内存访问的PConv【CVPR2023】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

Vue3详解

vite和webpack区别 vite vite使用原生ES模块进行开发,无需在编译时将所有代码转换为JS打包,从而提供了更快的热更新和自动刷新功能; vite在开发模式下没有打包步骤,而是利用浏览器的ES Module Imports特性实现按需编译&#xff…

Firefox 编译指南2024 Windows10篇- 编译Firefox(三)

1.引言 在成功获取了Firefox源码之后,下一步就是将这些源码编译成一个可执行的浏览器。编译是开发流程中的关键环节,通过编译,我们可以将源代码转换为可执行的程序,测试其功能,并进行必要的优化和调试。 对于像Firef…

git命令含有中文,终端输出中文乱码的问题

目录 1、[当前代码页] 的936 (ANSI/OEM - 简体中文 GBK) 是导致中文乱码的原因 2、这样会导致什么问题呢? (1) 问题一: 【属性】选项的【字体】无法识别自定义文字样式,【默认值】选项可选自定义字体样式,却无法覆盖【属性】选项 (2) 问题…

品牌推广怎么样?掌握正确做法,让品牌大放异彩!

品牌推广对于初创公司来说是一项至关重要的任务。在市场众多品牌中,如何脱颖而出,是每个品牌方都要考虑的问题。 作为一名手工酸奶品牌的创始人,目前全国复制了100多家门店,我来分享下,如何推广,可以让品牌…

通过shell脚本创建MySQl数据库

通过shell脚本创建数据库 #!/bin/bashserverIP10.1.1.196 SERVER_NAMEecho $serverIP | cut -d . -f4cat<<EOF>db.sql drop database if exists ${SERVER_NAME}_scheduler; drop database if exists ${SERVER_NAME}_kms; drop database if exists ${SERVER_NAME}_uim…

Centos7修改yum源

安装好系统后&#xff0c;网络能通信&#xff0c;源也没有配置&#xff0c;但是安装软件失败。 解决办法&#xff1a;配置阿里yum源 # curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # yum clean all # yum make cache再次安装软…

二分查找1

1. 二分查找&#xff08;704&#xff09; 题目描述&#xff1a; 算法原理&#xff1a; 暴力解法就是遍历数组来找到相应的元素&#xff0c;使用二分查找的解法就是每次在数组中选定一个元素来将数组划分为两部分&#xff0c;然后因为数组有序&#xff0c;所以通过大小关系舍弃…