为什么要进行混淆 由于设计原因,前端的js代码是可以在浏览器访问到的,那么因为需要让代码不被分析和复制从而导致更多安全问题,所以我们要对js代码进行混淆。 JS混淆和反混淆常见思路 在了解了js代码的执行过程后,我们来看如何对js进行混淆。 可以想到比如我们想实现一个js混淆器我们该怎么做呢,要不就是用正则替换,要不就是在AST阶段生成混淆代码,用正则替换实现简单但是效果也比较差,现在js混淆大多数都是在不改变AST的情况下去生成混淆后的代码 常见的混淆/反混淆工具 亲手尝试反混淆 HGAME 2023 Week1 Classic Childhood Game 当然直接执行mota()就能出,但是我们来尝试一下通过调试反混淆这段代码,看看是什么逻辑 需要通过对这个混淆的js进行调试,发现这个js中有发送消息的函数,逆出来其中的逻辑之后,制作一个用于恶意的HTML页面,Bot(相当于一个也安装了3FA插件的真人)访问后,Bot的flag就会显示在页面上
一、目标最近js玩的花样越来越多了,本来简洁方便的一门开发语言,现在混淆的一塌糊涂。今天我们就介绍几种常见的反混淆方案。 反混淆就是一个逆过程,上古时期用的是最简单的正则匹配,然后再替换。 /input/demo2.js", {encoding: "utf-8"}); // 读取原始混淆文件var ast_parse = parser.parse(jscode); //将JS源码转换成语法树 /output/demo2_out.js', ast_js_code.code)这就是一个基础的AST反混淆处理框架。 反混淆基本上就是一次模版批量替换的套路,以前我们仅仅依赖查找替换,然后高级一点就是正则替换,现在有了AST解析,就更加灵活了。
:04:05"` Time2 cdt.DataRaw `json:"time2" cdt:"type=time,time_format='2006-01-02 15:04:05'"` Time3 cdt.DataRaw `json:"time3" cdt:"type=time,time_format=\"2006-01-02 15:04:05\""` } func main() { testData fmt.Println("parseTestData Time2 is time:", parseTestData.Time2.IsTime()) fmt.Println("parseTestData Time3 }, "time": "2020-01-15 15:19:30", "time2": "2020-01-15 15:19:30", "time3" is object: true parseTestData Time is time: true parseTestData Time2 is time: true parseTestData Time3
Tabnine AI Code Completion Tabnine 是数百万开发人员信赖的 AI 代码完成工具,可以更快地编写代码并减少错误,支持JS、Java、Python、TS、Rust、Go、PHP 别担心,通过这个由国内开发者为中文语境设计的插件,可协助快速将选定的文字翻译成中文,不仅支持谷歌、有道、百度等 3 家翻译引擎外,也支持自定义单词书可以扩充,甚至还可以直接翻译文档,或是在创建立类名的时候直接把类名从中文翻译中英文
vue3 中使用了 es6 的 ProxyAPI 对数据代理。 x可以检测到数组内部数据的变化 二、Vue3支持碎片(Fragments) 就是说在组件可以拥有多个根节点。 /assets/logo.png"> <HelloWorld msg="Welcome to Your Vue.<em>js</em> App"/> <HooksDemo></HooksDemo> <button 组合API,能够更好的组织逻辑,封装逻辑,复用逻辑 对未来的展望 技术总是越新越好,越来越多的企业都升级了vue3; 大型项目,由于对TypeScript的友好越来越多的大型项目可以使用vue3; 作为程序员 参考文献 vue2与vue3的区别 (建议收藏)Vue3 对比 Vue2.x 差异性、注意点、整体梳理,与React hook比又如何?(面试热点)
type|world|name|earth|children|continent|America|country|Chile|commune|Antofagasta|Europe^^^$0|1|2|3| "type|world|name|earth|children|continent|America|country|Chile|commune|Antofagasta|Europe^^^$0|1|2|3|
scale docker-compose scale web=3 db=2 设置指定服务运行的容器个数。
描述 node.js 结合selenium实现web端UC 优视站点脚本自动化注册 预览效果 https://lilogs.com/wp-content/uploads/2022/01/preview.mp4 | 中文镜像源大全 GoogleChromeBrowser 官方地址下载 | 第三方应用商店下载 ChromeDriver 官方镜像源大全 | 中文镜像源大全 使用技巧 运行命令node main.js
php echo 1 + 2 + "3 + 4 + 5"; ? php echo 1 >> 0; echo 2 >> 1; echo 3 << 2; ? php $a = 3; $b = 4; if ($a || $b = 5) { echo 'hello world'; } A. 4 B. 5 C. 3 D. false 答案:A 下面的表达式中不能将两个字符串 A. 0 13,20 * * 1,5 mybackup B. 0 13,20 * * 1,2,3,4,5 mybackup C. * 13,20 * * 1,2,3,4,5 mybackup D. 0 php a = 3 || b = 3) { a++; b++; } echo a, ',', b; # 1,1 ?> <?
早年的 JS 就是写个表单验证、简单交互,代码少又直白,根本不需要保护。但如今,前端早已是复杂的单页应用(SPA),JS 动辄几 MB,压缩和混淆就派上用场了。压缩,主要是“瘦身”。 而混淆,才是“刻意让人看不懂”。它不光改名字,还会扭曲逻辑,目的就是让开发者即使拿到代码,也很难 reverse 出真实意图。 常见的混淆手段有: 改名字:把 userName、getUserInfo() 这种有意义的变量函数,全换成 _0x1a2b3c、a1、b2,完全看不出用途。 怎么js反编译反混淆 怎么进行js逆向呢?浏览器的 Pretty Print(美化) 能帮你格式化代码,加缩进、换行,但对乱七八糟的变量名和逻辑绕弯没辙。 发现一个Ai反编译工具:思路是:先把 JS 解析成 AST(抽象语法树)——也就是忽略名字和格式,只看代码的“骨架”和逻辑关系。
/cosmos72/gomacro/fast" _ "my-project/core/gomacro-package-init" // inject `github.com/imroc/req/v3` package ) // string code const source = ` import ( "fmt" "github.com/imroc/req/v3" ) // http client
(3)就绪状态:在run_queue队列里的状态 (4)运行状态:在run_queue队列里的状态 (5)可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待socket 连接、等待信号量 用途: (1)访问原来无法访问的资源,如google (2) 可以做缓存,加速访问资源 (3)对客户端访问授权,上网进行认证 (4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息 反向代理(
> </el-row> </template> 代码挂载 <script type="text/javascript"> (() => { /** * @description 动态加载JS = 'text/css'; link.rel = 'stylesheet'; link.href = url; head.appendChild( link ); } //动态加载JS () => { //动态加载CSS dynamicLoadCss( '//unpkg.com/element-ui/lib/theme-chalk/index.css' ) //动态加载JS dynamicLoadJs( '//unpkg.com/element-ui/lib/index.js', () => { let obj = { el : '#post_content
比如: 1 + 3 * 5
5xx服务器错误 服务器在处理某个正确请求时发生错误 3. 数据加解密 ip被限制 3. 为什么需要做反爬 看看这个 做反爬的好处 2. 如何反爬虫 三、js代码混淆 1. 为什么需要混淆代码 若是自己辛辛苦苦写的(商业、核心)业务代码,被其他竞争公司拿去用了或者破解了,想想都心塞。 可以从下图对比中看出两种区别: 混淆代码的好处 2. 混淆代码弊端 3. 4.2 Uglify Uglify 是一款JS代码处理工具,提供了压缩,混淆和代码规范化等功能。 四、结语 爬虫工程师(采集)没有未来,数据工程师(采集、分析、预测)有未来。
大数据大流量高并发 硬件方面 软件方面 禁止外部盗链 控制大文件的下载 负载均衡 分布式 集群 主从数据库 分布式数据库 分布式缓存 TCP 三次握手 三次握手就是客户端与服务器端建立TCP连接时需要发送3个包进行连接的确认
JS的eval函数解密反混淆 作者:matrix 被围观: 10,699 次 发布时间:2014-05-14 分类:零零星星 | 15 条评论 » 这是一个创建于 3032 天前的主题,其中的信息可能已经有所发展或是发生改变 打开有些js文件看到的eval(function(p,a,c,k,e,d)开头,只有结尾部分有很多竖线|间隔的字符,这是eval混淆了的。想要查看原本的代码就需要反混淆。 参考:http://www.chinadmd.com/file/ciziaiisseupixiwiswtstpo_3.html
这便给JS代码安全带来了更多的威胁,也给JS混淆加密带来了考验。好在“魔高一尺,道高一丈”,国内有名的JS混淆加密服务商JShaman已发布了“反AI”功能。 以下,用一个示例进行测试,看看它的反AI效果。1、来到JS-Obfuscator网站。 以官网默认示例程序做为测试代码:2、配置,在使用默认配置的基础上,额外启用“Anti AI”选项:3、然后,得到混淆加密后的JS代码:4、尝试让AI工具DeepSeek逆向还原:5、DeepSeek给出错误的分析过程和错误的逆向结果 ,如下:6、再用通义千问尝试逆向,也给出了错误的分析过程和结果,如下:7、而如果是传统没有“反AI”功能的JS混淆工具,比如,ob:OB的混淆结果,AI工具是可以轻松逆向还原出原始代码的:由对比可知,JShaman 8:总结:对于JS混淆加密,AI逆向还原能力确实强大。JShaman的“反AI”功能更加强大。
逆向过程 本次逆向的目标同样是一个登录接口,其中的加密 JS 使用了简单的混淆,可作为混淆还原的入门级教程,来到登录页面,随便输入账号密码进行登录,其中登录的 POST 请求里, Form Data 有个加密参数 () 这个方法,是调用了 fm.js 里的 OO0O0() 方法,看这个又是 0 又是 O 的,多半是混淆了,如下图所示: [03.png] 点进去看一下,整个 fm.js 都是混淆代码,我们选中类似 ] # 混淆后的 JS with open("fm_old.js", "r", encoding="utf-8") as f: js_lines = f.readlines() js = " 将 JS 还原后,我们可以将还原后的 JS 替换掉网站本身经过混淆后的 JS,这里替换方法有很多,比如使用 Fiddler 等抓包工具替换响应、使用 ReRes 之类的插件进行替换、使用浏览器开发者工具自带的 Rule,添加替换规则,正则表达式的方法写法如下:regex:https:\/\/static\.tongdun\.net\/v3\/fm\.js\?
github上的,免费的,英文的,JS混淆工具:https://js-obfuscator.github.io/UI:混淆测试:JS源码:(function (){ var domain = "js-obfuscator.com getFullYear() + "," + domain; }; var console_log = console.log; console_log(copyright())})();JS 混淆结果:(function (_0xe, _0xd) { var _0x4ag10b = "\u006A\u0073\u002D\u006F\u0062\u0066\u0075\u0073\u0063 u006F\u0067']; _0xd = (885711 ^ 885702) + (139322 ^ 139320); _0xbe(_0xea());})();没改变代码结构,只是对代码中的每一行进行混淆变化