AST反混淆实战|变种ob混淆还原指南一

news2025/7/27 20:50:46

关注它,不迷路。       

本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!

1.需求

ob混淆是我们最常见的混淆代码,标准的混淆 可以用星球里的一键还原直接还原干净。但是不可能每个网站都使用标准的混淆。对于变种的ob混淆,使用星球里的 还原框架 就有点无用武之地了。

因此,写下此系列文章,帮助星友们学习反混淆的思路。

2.实例

由于网站一时半会找不到实例,之前还原过的实例可以用来演示,今天要还原的demo地址:

https://t.zsxq.com/13r5ZzxeP

3.预处理

拿到 demo.js 后,打开后发现代码被压缩了,不好分析,我们使用星球里的预处理还原框架进行处理,处理后的文件代码如下:

bf7492b501e3bdad83caaba39cc56883.png

可以看到,开头定义的大数组,数组元素全部是字符串,确认是 旧版的ob混淆。

尝试使用星球里的框架进行还原:

https://t.zsxq.com/13pPHogXc

虽然看运行日志,解密了部分字符串,但是打开结果文件发现,还有部分字符串没有被还原,如图:

dde8afd4aefd51505981e1b31e51dd2e.png

从上图中可以发现,函数 _0x14b87b 没有被还原。通篇下来,类似的函数还有很多。

观察这个函数的定义:

var _0x14b87b = _0x43ee89;

这很明显是函数名被反复赋值,因此,在还原字符串之前,还要处理一下被反复赋值的函数。

4.还原

函数名被反复赋值,可以使用星球里的插件,直接拿来用就行,插件地址:

https://t.zsxq.com/13eSeSprP

将这个插件添加到字符串还原之前,如下图所示:

33d504171c792e57b7daf82d241bdade.png

再次运行 一键还原脚本,发现所有的字符串都正常还原了。

bb46ea14ec811287c7fab3d01544bc2c.png

完美!

今天的文章就分享到这里,后续分享更多的技巧,敬请期待。

415cbdd36d96e31313ff7741af6b9134.jpeg

欢迎加入知识星球,学习更多AST和爬虫技巧。

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

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

相关文章

如何读懂深度学习python项目,以`Multi-label learning from single positive label`为例

Paper : Multi-label learning from single positive label Code 先读一读README.md 可能有意想不到的收获; 实验环境设置要仔细看哦! 读论文 如何读论文,Readpaper经典十问 (可能在我博客里有写) How to read a …

【UE5】如何在UE5.1中创建级联粒子系统

1. 可以先新建一个actor蓝图,然后在该蓝图中添加一个“Cascade Particle System Component” 2. 在右侧的细节面板中,点击“模板”一项中的下拉框,然后点击“Cascade粒子系统(旧版)” 然后就可以选择在哪个路径下创建级…

Notepad++下载、使用

下载 https://notepad-plus-plus.org/downloads/ 安装 双击安装 选择安装路径 使用 在文件夹中搜索 文件类型可以根据需要设置 如 *.* 说明是所有文件类型; *.tar 说明是所有文件后缀是是tar的文件‘;

【Rust日报】2023-10-30 理解 Rust 中的生命周期

理解 Rust 中的生命周期 生命周期(Lifetime)是让 Rust 成为 Rust 的关键因素。 没有了生命周期,轻松的并发、直接的内存分配和整体的数据安全都是不可能的。 但是,生命周期也很难理解,这篇教程会帮助人们理解生命周期的…

【强化学习】13 —— Actor-Critic 算法

文章目录 REINFORCE 存在的问题Actor-CriticA2C: Advantageous Actor-Critic代码实践结果 参考 REINFORCE 存在的问题 基于片段式数据的任务 通常情况下,任务需要有终止状态,REINFORCE才能直接计算累计折扣奖励 低数据利用效率 实际中&#…

【Java】多线程案例(单例模式,阻塞队列,定时器,线程池)

❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 文章目录 实现安全版本的单例模式饿汉模式类和对象的概念类对象类的静态成员与实例成员 懒汉模式如何保证…

C++设计模式_21_Iterator 迭代器(理解;面向对象的迭代器已过时;C++中使用泛型编程的方式实现)

Iterator 迭代器也是属于“数据结构”模式。GoF中面向对象的迭代器已经过时,C中目前使用泛型编程的方式实现,其他语言还在使用面向对象的迭代器。 文章目录 1. 动机(Motivation)2. 模式定义3. Iterator 迭代器代码分析4. 面向对象的迭代器与泛型编程实现…

一天写一个(前端、后端、全栈)个人简历项目(附详源码)

一、项目简介 此项目是用前端技术HTMLCSSjquery写的一个简单的个人简历项目模板,图片可点击放大查看,还可以直接下载你的word或者PDF的简历模板。 如果有需要的同学可以直接拿去使用,需自行填写个人的详细信息,发布,…

uniapp 开发微信小程序 v-bind给子组件传递函数,该函数中的this不是父组件的二是子组件的this

解决办法:子组件通过缓存子组件this然后,用bind改写this 这个方法因为定义了全局变量that 那么该变量就只能用一次,不然会有赋值覆盖的情况。 要么就弃用v-bind传入函数,改为emit传入自定义事件 [uniapp] uview(1.x) 二次封装u-navbar 导致…

程序开发设计原则

(图片来自网络) 单一职责 Single Responsibility Principle 不论是在设计类,接口还是方法,单一职责都会处处体现,单一职责的定义:我们把职责定义为系统变化的原因。所有在定 义类,接口&#xff…

CV2 将图片中某个点与中心点的角度变换成0-360度

众所周知,CV2中的坐标方向是这样的: 所以一般我们想计算图片中某个点P1(x1,y1)与中心点P0(x0,y0)的方向时,我们会先将y坐标翻上去,然后计算角度。即: p1_xint(x1) # p1_yint(y1)p0_xint(x0) #图像大小为512*512中心点坐标为25…

PO-提示json不能为空 not valid json at character 2 of ““““

问题描述: 调用第三方REST接口,提示提示json不能为空 not valid json at character 2 of """" 原因分析: 一般都是对方接收后出现错误没有处理,返回空值;有可能是他们映射有问题 解决方案&…

小程序获取头像和昵称的思路

小程序获取头像和昵称的基本方法是调用小程序自带的API wx.getUserProfile(),这也是小程序官方目前最推荐的做法。成功获取用户名头像之后,小程序允许保存调用的结果,以便下一次打开页面的时候自动显示头像和名字。保存用户名和头像并不是保存…

JMeter组件

1.JMeter常用组件 必须组件:测试计划,线程组(包含多个线程),取样器 测试计划,JMeter默认创建且仅有一个 线程组: 添加步骤: 选择TestPlan并点击鼠标右键添加 分类以及使用&…

MyBatisPlus 使用枚举

MyBatisPlus 使用枚举 表中的有些字段值是固定的,例如性别(男或女),此时我们可以使用MyBatis-Plus的通用枚举来实现 数据库表添加字段sex 创建通用枚举类型 Getter public enum SexEnum {MALE(1, "男"),FEMALE(2, &qu…

MySQL与MongoDB,该如何做技术选型?

hello,大家好,我是张张,「架构精进之路」公号作者。 引言 一般情况下,会考虑到MySQL与MongoDB如何做技术选型的时候,你一定是遇到了类似于非结构化数据JSON的存取难题,否则大家都直接MySQL开始搞起了。 为什…

西工大CSAPP第二章课后题2.56~2.58答案及解析

因为我获取并阅读CSAPP电子书的方式是通过第三方网站免费下载,没有付给原书作者相应的报酬,遵循价值交换原则,我会尽我所能通过博客的方式,推广这本书以及原书作者就职的大学,以此回馈原书作者的劳动成果。另外&#x…

【JMeter】逻辑控制器分类以及功能介绍

常用逻辑控制器的分类以及介绍 If Controller 满足if条件才会执行取样器 Loop Controller 对取样器循环多次 ForEach Controller

MySQL笔记--SQL语句

1--SQL的通用语法 2--SQL语句的分类 3--DDL语句 3-1--数据库操作 # 查询所有数据库 show databases;# 查询当前使用数据库 select database();# 创建数据库 create database 数据库名 create database if not exists 数据库名; # 不存在时创建,存在则不创建 creat…

【设计模式】第25节:行为型模式之“访问者模式”

一、简介 访问者模式允许一个或者多个操作应用到一组对象上,设计意图是解耦操作和对象本身,保持类职责单一、满足开闭原则以及应对代码的复杂性。 二、优点 分离操作和数据结构增加新操作更容易集中化操作 三、适用场景 数据结构稳定,操…