Js逆向教程-10常见代码混淆
创始人
2024-02-01 09:55:26
0

作者:虚坏叔叔
博客: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模板和各种游戏源码素材等等资料。更多内容可自行查看哦!

请添加图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...