AST反混淆实战|找出某里滑块226混淆代码隐藏的字符串

news2024/9/22 11:41:11

关注它,不迷路。       

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

1. 常见的字符串

在还原控制流之后,接下来的动作就是还原字符串了,在混淆代码中,可以看到类似这样的代码:

var f = "\u01de\u01dc\u01d1\u01d1";
var m = "";
var b = 0;
while (b < f.length) {
    var j = 445 ^ f.charCodeAt(b);
    m += String.fromCharCode(j);
    b++;
}

它可以置换成:

var m = 'call';

以及这样的代码:

U = "\u0307\u0366\u0314\u0334\u0355\u0368\u0309\u037b\u031c\u0369\u0304\u0361\u030f\u037b\u0308\u0333\u0341\u0324\u0350\u0325\u0357\u0339\u0319\u036d\u0305\u036c\u031f\u0344\u0325\u037e\u034f\u0312\u034f\u036e\u0353\u036e\u030f\u0354\u0364\u0339";
se = "";
$ = 0;
ke = 0;
while (ke < U.length) {
    if (!ke) {
        $ = 881;
    }
    Ee = U.charCodeAt(ke);
    De = Ee ^ $;
    $ = Ee;
    se += String.fromCharCode(De);
    ke++;
}

它可以置换成:

se = 'var a=arguments;return this[a[1]]!==a[0]';

还有这样的代码:

ae = "c";
ae += "han";
ae += "nel";
ae += "Inter";
ae += "pretation";

它可以置换成:

ae = 'channelInterpretation';

以上的还原,根据特征的不同,需要编写不同的还原插件。这样的替换,大大减少了代码量。让分析变得更容易。

上面的字符串是很容易被发现并还原的。还有一类字符串需要研究代码才能发现并将其还原。

2. 隐藏的字符串

再将整个混淆代码还原后,其实可以发现他的函数 函数 i,是个递归函数,其实也是一个个函数组成,如:

32c456307cd7fdbb322fce90421cbc02.png

通过不同的实参,来执行不同的语句,其实是可以看成一个个的函数。

这个时候,可以发现有个 "函数" 比较特殊,有很多的函数调用:

4e2c6df1eeba37a3fcaace352d683ed4.png

可以看到,实参都一样,并且,还有一个特殊的地方,就是它的前一个语句还后一个语句,基本都是一样的:

s.push(2285859110262, 1, 2);
i(29, 2, -1);
Ke = s.pop();

基本都是这种类型,在混淆代码中还比较多,先是变量 s push一些数值进去,经过 i 函数的处理后,再 pop给其他的变量。

来看看 i(29,2,-1)到底是干嘛的:

f584e9810b0c5fcfc12a15456f83f2d4.png

这不就和上面的比较类似嘛,最后 s 有个 push的动作,函数结束后,又 pop了,因此可以断定,它就是保存了结果(字符串),然后再pop给其他的变量使用。

3. 代码改写

将代码抠出来并改写:

0f5d850a8ad3a43fc5c0a3d8a412ae77.png

  1. 先是定义了一个变量 s,

  2. 然后将 if (29 == o) 里面的代码抠出来,并改成成函数

  3. 根据代码中的提示,给 s push几个数值,然后调用 i_29函数,然后再将 s 给 pop出来。

  4. 得到 pop出来的值 :toString.

07b17cfb9ffb220f323297491aae34fa.png

有个这个函数,就可以将 类似上面的代码全部进行还原了。如下面的代码:

s.push(19, 2319055194983, 2, 1);
i(29, 2, -1);
fo = s.pop();

可以置换成:

fo = "toString";

完美!

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

74839f004e2fd89b55b76c8c2c4228be.jpeg

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

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

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

相关文章

高效翻译工具GPT插件的使用教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

【语义分割】语义分割概念及算法介绍

文章目录 一、基本概念二、研究现状2.1 传统算法2.2 深度学习方法 三、数据集及评价指标3.1 常用数据集3.2 常用指标 四、经典模型参考资料 一、基本概念 语义分割是计算机视觉中很重要的一个方向。不同于目标检测和识别&#xff0c;语义分割实现了图像像素级的分类。它能够将…

【【萌新的FPGA学习之Vivado下的仿真入门-2】】

萌新的FPGA学习之Vivado下的仿真入门-2 我们上一章大概了解了 我们所需要进行各项操作的基本框架 对于内部实现其实一知半解 我们先从基本的出发 但从FPGA 了解一下 vivado下的仿真入门 正好帮我把自己的riscV 波形拉一下 行为级仿真 step1: 进入仿真界面&#xff1a;SIMULAT…

凉鞋的 Unity 笔记 204. 语句

204. 语句 在上一篇&#xff0c;我们接触了三种常见的类型&#xff0c;如下所示&#xff1a; 这样我们算是对变量进行了一个入门年了。 其实我们除了变量&#xff0c;我们还接触了一个叫做语句的概念。 我们可以看下代码&#xff1a; using System.Collections; using Syst…

四川云汇优想教育咨询有限公司电商服务正规吗

随着抖音等短视频平台的火热&#xff0c;越来越多的消费者选择在平台上购物。四川云汇优想教育咨询有限公司也推出了抖音电商服务&#xff0c;但它的服务是否正规呢&#xff1f;本文将为您揭开真相。 首先&#xff0c;我们先来了解一下四川云汇优想教育咨询有限公司。这是一家致…

基于Java的足球赛会管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

C#,数值计算——分类与推理Phylo_wpgma的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Phylo_wpgma : Phylagglom { public override void premin(double[,] d, int[] nextp) { } public override double dminfn(double…

java基础篇-环境变量

java基础 编程学习的关键点、重点1.环境变量设置待续 编程学习的关键点、重点 输入输出 Java语言、C语言、Python语言、甚至SQL语言&#xff0c;都需要实战、做大量输入输出等 1.环境变量设置 1.下载jdk安装 jdk官网下载直达链接&#xff1a;https://www.oracle.com/java/te…

2.9.C++项目:网络版五子棋对战之业务处理模块的设计

文章目录 一、意义二、功能三、管理&#xff08;一&#xff09;客户端请求&#xff08;二&#xff09;websocket 四、框架五、完整代码 一、意义 将所有的模块整合在一起&#xff0c;通过网络通信获取到客户端的请求&#xff0c;提供不同的业务处理。 服务器模块&#xff0c;是…

类加载机制和双亲委派机制

文章目录 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。&#x1f30e;跑过十五…

winodos下使用VS2022编译eclipse-paho.mqtt.c并演示简单使用的 demo

本文演示C语言如何使用eclipse-paho.mqtt.c库&#xff0c;包含自行编译库的步骤或者下载编译好的文件。 1.下载paho.mqtt.c库源码&#xff08;zip 文件&#xff09; 到官网选择C版本的paho源码进行下载 Eclipse Paho | The Eclipse Foundation 或者到下述连接下载 Releases ec…

docker在java项目中打成tar包

docker在java项目中打成tar包 1、首先安装一个docker desktop 2、mvn install项目后&#xff0c;建立一个自己的dockerfile 这里我以我的代码举例&#xff0c;from 镜像&#xff0c;这里你也能打包好一个镜像的基础上&#xff0c;from打好的镜像&#xff0c;这里我们用openj…

【C语言初阶】 一文详解分支语句 if

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《速学C语言》《数据结构篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言结构化程序设计的三种基本结构&#x1f4ac; 分支语句 &#xff08;选择结构&#xff09;&#x1f4d1; if 语句…

平衡二叉树(AVL)

平衡二叉树 基本介绍 左旋转调整成平衡二叉树 右旋转调整成平衡二叉树 双旋转调整成平衡二叉树 上述三种旋转方式的代码实现 class Node:"""创建 Node 节点"""value: int 0left Noneright Nonedef __init__(self, value: int):self.value …

HFS 快速搭建 http 服务器

HFS 是一个轻量级的HTTP 服务工具&#xff0c;3.0版本前进提供Windows平台安装包&#xff0c;3.0版本开提供Linux和macOS平台的安装包。 HFS更适合在局域网环境中搭建文件共享服务或者安装配置源服务器。 甲 非守护进程的方式运行 HFS &#xff08;Ubuntu 22.04&#xff09; 一…

c语言进制的转换2进制转换16进制

c语言进制的转换2进制转换16进制 c语言的进制的转换 c语言进制的转换2进制转换16进制一、16进制的介绍二、八四二一法则2进制转换16进制的方法 一、16进制的介绍 十六进制&#xff1a; 十六进制逢十六进一&#xff0c;所有的数组是0到9和A到F组成&#xff0c;其中A代表10&…

【C++基础入门】42.C++中同名覆盖引发的问题

一、父子间的赋值兼容 子类对象可以当作父类对象使用&#xff08;兼容性) 子类对象可以直接赋值给父类对象子类对象可以直接赋值给父类对象父类指针可以直接指向子类对象父类引用可以直接引用子类对象 下面看一个子类对象兼容性的代码&#xff1a; #include <iostream>…

EasyConnect

EasyConnect 简介下载安装 简介 EasyConnect 是一种远程连接解决方案&#xff0c;它允许用户通过互联网远程访问和控制其设备和资源。 下载 链接: https://pan.baidu.com/s/1JvejSUA8Tma91FOUv6Gswg 提取码: 3fb5 安装

7-4、S加减速转动实现【51单片机控制步进电机-TB6600系列】

摘要&#xff1a;本节介绍实现步进电机S曲线运动的代码 一、目标功能 实现步进电机转动总角度720&#xff0c;其中加减速各90 加速段&#xff1a;加速类型&#xff1a;S曲线   加速角度&#xff1a;角度为90   起步速度&#xff1a;30RPM&#xff0c;   终止速度&#x…

现在java和大数据选什么?

现在java和大数据选什么&#xff1f; 到底是选择大数据还是JAVA&#xff1f;”相信这个问题困惑着许多转行待定人士和高校专业待选的学生。 在普通人眼里可能会觉得这两个专业或者行业没啥区别&#xff0c;都是IT里的&#xff0c;能有啥大不同。这是第一层。最近很多小伙伴找我…