Js逆向教程-10常见代码混淆

news2025/7/16 6:47:20

作者:虚坏叔叔
博客:https://xuhss.com

早餐店不会开到晚上,想吃的人早就来了!😄

Js逆向教程-10常见代码混淆

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IwKrzsPU-1668860152303)(../../1.png)]

一、常见代码混淆

  1. eval混淆
  2. AA和OO混淆
  3. JSFuck

混淆就是将正常的代码进行语法上的改变或者变量名称上的改变,这样你就看不懂代码了。有2种

  1. //常量的值和名
  2. //代码执行流程和逻辑

变量名混淆永远不是阻碍。

二、混淆演变过程

可以通过定义一个字符串混淆

var xxx = ["xuhss", "xuhss2"]

var xuhss = "2"
var xuhss2 = "3"
console.log(window[xxx[0]])
console.log(window[xxx[1]])

这里面的变量名是公开的,可以通过base编码加密:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f4MDA2O6-1668860152304)(02 - 副本.assets/image-20221119180803101.png)]

var xxx = ["eHVoc3M", "eHVoc3My"]
//定义一个函数用于转换
function x1(id) {
    return atob(xxx[id])
}
var xuhss = "2"
var xuhss2 = "3"
console.log(window[x1(0)])
console.log(window[x1(1)])

三、eval混淆

3.1eval的概念

浏览器自带了一个v8虚拟机,v8虚拟机有多种形式来运行代码。

第一种是原生的c++代码,写一个上下文contents 然后将comtents设置属性,然后传入文本代码 这样v8虚拟机就会运行、运行的时候 就可以利用c++某些方法,进行window对象的赋值。它不仅提供了这个 还提供了eval的方法。v8引擎实现的过程中会思考一些东西,我是一个解释器,不能要求所有人都会c++ 但是用过的人都会js,所以能不能让js代码也拥有解释器的能力呢?是可以的 。

v8引擎让不是js的代码可以注册到js的里面,比如我们写了一个识别图片的方法,这个时候 浏览器就可以让v8引擎将识别图片的方法,定义成js方法,然后再js中就可以直接使用这个方法,最终运行的是c++实现的这个方法。

eval就是v8引擎注册的一个给js运行的方法。

主要是创建一个虚拟机,在这个虚拟机里面运行js代码。

3.2 eval实战

比如这样一行代码:

eval("function xx() {return '12'} xx()")

运行的结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EgmHmRJ6-1668860152305)(02 - 副本.assets/image-20221119194812987.png)]

由于这个是字符串 所以可以进行base64编码,可以看到得到了一个相同的结果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ToSodVF8-1668860152306)(02 - 副本.assets/image-20221119195138206.png)]

所以eval这种混淆方式是可以将完整的代码混淆的。

这里只是简单的演示,实际上atob也可以隐藏到代码里面。也可以eval嵌套eval,也可以定义自己的加密方法

eva方式有一个严重的漏洞,也就是最终代码要被执行。

可以看到这个方法是有参数的 它的参数就是它想要执行的代码,就算后面有再多的混淆,最后要执行的还是明文的字符串,所以直接在代码里面下断点,用括号括住,就能拿到结果了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6khHigpm-1668860152307)(02 - 副本.assets/image-20221119200744642.png)]

通过单步执行的方式也可以拿到它要执行的代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QM7mnC0f-1668860152307)(02 - 副本.assets/image-20221119200845466.png)]

这种加密方式很简单。

总结

最后的最后
由本人水平所限,难免有错误以及不足之处, 屏幕前的靓仔靓女们 如有发现,恳请指出!

最后,谢谢你看到这里,谢谢你认真对待我的努力,希望这篇博客对你有所帮助!

你轻轻地点了个赞,那将在我的心里世界增添一颗明亮而耀眼的星!

💬 往期优质文章分享

  • C++ QT结合FFmpeg实战开发视频播放器-01环境的安装和项目部署
  • 解决QT问题:运行qmake:Project ERROR: Cannot run compiler ‘cl‘. Output:
  • 解决安装QT后MSVC2015 64bit配置无编译器和调试器问题
  • Qt中的套件提示no complier set in kit和no debugger,出现黄色感叹号问题解决(MSVC2017)
  • Python+selenium 自动化 - 实现自动导入、上传外部文件(不弹出windows窗口)

🚀 优质教程分享 🚀

  • 🎄如果感觉文章看完了不过瘾,可以来我的其他 专栏 看一下哦~
  • 🎄比如以下几个专栏:Python实战微信订餐小程序、Python量化交易实战、C++ QT实战类项目 和 算法学习专栏
  • 🎄可以学习更多的关于C++/Python的相关内容哦!直接点击下面颜色字体就可以跳转啦!
学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战 💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
❤️ C++ QT结合FFmpeg实战开发视频播放器❤️难度偏高分享学习QT成品的视频播放器源码,需要有扎实的C++知识!
💚 游戏爱好者九万人社区💚互助/吹水九万人游戏爱好者社区,聊天互助,白嫖奖品
💙 Python零基础到入门 💙Python初学者针对没有经过系统学习的小伙伴,核心目的就是让我们能够快速学习Python的知识以达到入门

🚀 资料白嫖,温馨提示 🚀

关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!

请添加图片描述

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

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

相关文章

基于javaweb,ssm学生宿舍系统(带论文)

开发工具:IDEA 服务器:Tomcat8.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,非前后端分离 前端技术:vue.jselementUI等框架实现 服务端技术:springspringmvcmybat…

基于stm32单片机的输入捕获测量脉宽Proteus仿真

资料编号:109 下面是相关功能视频演示: 109-基于stm32的输入捕获测量脉宽Proteus仿真(源码仿真全套资料)功能介绍: 采用stm32单片机作为主控,采用单片机的GPIO进行输入捕获,可以测量按键按下的低电平脉宽时间&#x…

云原生系列七【轻松入门容器基础操作】

✅作者简介: CSDN内容合伙人,全栈领域新星创作者,阿里云专家博主,华为云享专家博主,掘金后端评审团成员 💕前言: 最近云原生领域热火朝天,那么云原生是什么?何为云原生&a…

驱动——串口工具点灯实验

通过串口工具输入命令,操作LED灯的点亮与熄灭 要求: 1)分部实现注册字符设备驱动 2)自动创建设备节点 3)通过结构体对led灯地址进行映射 4)次设备号完成私有数据传参 代码实现: 1、头文件…

如何使用闲置的云服务器搭建一个属于自己的私人云网盘(可道云kodbox)

你是否有过网盘下载速度只有十几KB,时不时出现网盘的文件被删除的问题,不如自己搭建一个云网盘吧,只需要一云服务器,即可搭建一个跟某度云一样的云盘。可以自由下载,不限制网速,随时都可上传下载。这篇文章…

[附源码]SSM计算机毕业设计在线文献查阅系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Redis应用问题解决(缓存穿透、击穿、雪崩、分布式锁)

Redis应用问题解决(缓存穿透、击穿、雪崩、分布式锁) 缓存穿透 问题描述 当系统中引入redis缓存后,一个请求进来后,会先从redis缓存中查询,缓存有就直接返回,缓存中没有就去db中查询,db中如果有就会将其丢到缓存中&…

Dockerfile构建SpringBoot项目

【1】将SpringBoot项目打包 jar包-->用JDK运行(我们这里打成jar包)war包-->用Tomcat运行 MySQL的url配置 1.useSSLfalse MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭 2.allowPublicKeyRetrievaltrue 允许客户端从服务器获取公钥。 3.serverTime…

git3:github的使用

1.github创建远程库 创建远程库 名字一般与本地库的名字相同推送远程库push poll https://github.com/likejin123/gitdemo.git 可以创建别名,因为连接太长git remote -v 查看别名 当前没有别名 git remote add gitdemo https://github.com/likejin123/gitdemo.gitg…

初阶数据结构学习记录——여덟 二叉树

树 顾名思义,结构即为树,由一个根节点分出多个节点,这几个节点再继续往下连接其他节点形成一个个子树。不过这棵树是根朝上,叶朝下的。一个根不限制连接多少个节点,把第二层的几个节点也看成根节点,最终形…

2011年408大题总结

2011年408大题第41题第42题第43题第44题第45题第46题第47题第41题 关键信息:有向带权、上三角、行为主序 就可以解决第一二小问 关键路径:最长 0 1 2 3 5,长度为16 第42题 一如既往的暴力 最简单的思路,合并取中位数 所以用数组就…

[附源码]java毕业设计拾穗在线培训考试系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Android App开发动画特效中帧动画和电影淡入淡出动画的讲解及实战(附源码和演示视频 简单易懂)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、帧动画 Android的动画分为三类,帧动画,补间动画和属性动画。其中帧动画是实现原理最简单的一种,跟现实生活中的电影胶卷类似,都是在短时间内连续播放多张图片,从而…

Request和Response

目录 1、Request和Response的概述 2、Request对象 2.1、Request继承体系 2.2、Request获取请求数据 2.2.1 获取请求行数据 2.2.2 获取请求头数据 2.2.3 获取请求体数据 2.2.4、获取请求参数的通用方式 2.3 IDEA快速创建Servlet 2.4、请求参数中文乱码问题 2.4.1、POS…

认识Spring

1.1 Spring的历程 早期的 Java EE 使用 EJB 为核心的开发方式,但是这种开发方式在实际开发环境中存在诸多问题: 使用复杂, 代码臃肿, 移植性差等.于是"Spring 之父" Rod Johnson 在其畅销书《Expert One-on-One J2EE Design and Development》中使用一个3万行代码的…

MySQL8.0优化 - 锁 - 按加锁的方式划分:显示锁、隐式锁

文章目录学习资料锁的不同角度分类锁的分类图如下按加锁的方式划分:显示锁、隐式锁隐式锁显式锁学习资料 【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!-哔哩哔哩】 【阿里巴巴Java开发手册】https://www.w3…

[附源码]计算机毕业设计JAVA基于Java的快递驿站管理系统

[附源码]计算机毕业设计JAVA基于Java的快递驿站管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: S…

车联网解决方案-最新全套文件

车联网解决方案-最新全套文件一、建设背景面临的挑战1、平台难以支撑高并发接入2、海量数据难以挖掘价值3、缺乏使能套件,开发效率低4、车联网的安全难以保证二、建设架构三、建设方案四、获取 - 车联网全套最新解决方案合集一、建设背景 面临的挑战 1、平台难以支…

Teams Tab App 代码深入浅出 - 配置页面

上一篇文章我们使用Teams Toolkit 来创建、运行 tab app。这篇文章我们深入来分析看一下tab app 的代码。 先打开代码目录,可以看到在 src 目录下有入口文件 index.tsx,然后在 components 目录下有更多的一些 tsx 文件,tsx 是 typescript的一…

实战十二:基于FM算法针对用户商品购买和浏览记录预测用户的行为 代码+数据

1.案例知识点 推荐系统任务描述:通过用户的历史行为(比如浏览记录、购买记录等等)准确的预测出用户未来的行为;好的推荐系统不仅如此,而且能够拓展用户的视野,帮助他们发现可能感兴趣的却不容易发现的item;同时将埋没在长尾中的好商品推荐给可能感兴趣的用户。FM推荐方法…