当前位置: 首页 > news >正文

企业宣传文案网络seo公司

企业宣传文案,网络seo公司,wordpress账号密码在哪个文件下,网站托管服务商原文地址:https://zhuoyue360.com/jsnx/110.html 1. 期望 这是一个瑞数5代解混淆的案例#xff0c;我们本章节需要做的是把if节点的内容转换成switch-case内容.以此来熟悉AST对JS混淆的对抗. 原始代码: function whileState() {while (1) {aV cA[wU];if (aV 4) {if (… 原文地址:https://zhuoyue360.com/jsnx/110.html 1. 期望 这是一个瑞数5代解混淆的案例我们本章节需要做的是把if节点的内容转换成switch-case内容.以此来熟悉AST对JS混淆的对抗. 原始代码: function whileState() {while (1) {aV cA[wU];if (aV 4) {if (aV 1) {zT window, kD String, bO Array, xX document, nZ Date;} else if (aV 2) {iG zT[ab] {};} else if (aV 3) {iG zT[ab];} else {mM !iG;}} else {if (aV 5) {xT(0);} else if (aV 6) {if (!mM) wU 1;} else if (aV 7) {lG [4, 16, 64, 256, 1024, 4096, 16384, 65536];} else {return;}}} }期望代码: function whileState() {while (1) {switch (cA[wU]) {case 0:zT window, kD String, bO Array, xX document, nZ Date;break;case 1:iG zT[ab] {};break;case 2:iG zT[ab];break;case 3:mM !iG;break;case 4:xT(0);break;case 5:if (!mM) wU 1;break;case 6:lG [4, 16, 64, 256, 1024, 4096, 16384, 65536];break;case 7:return;break;}} }2. 思路分析 首先,我们需要明确一点,aV 的索引是从0开始的,它是不可能为负数的. 那么也就可以有如下的转换: if (aV 1) {zT window, kD String, bO Array, xX document, nZ Date; }转换成 if (aV 0) {zT window, kD String, bO Array, xX document, nZ Date; }这是蔡老板所说的夹逼原理 ,奈何文化低,我不懂.知道有这么一个回事就行. 思路如下(更加详细的看代码注释): while循环的参数是NumericLiteral ,且内容为1.body中只有2个节点提取出aV找到WhileStatement枚举WhileStatement下的IfStatement节点.left的name应该为我们提取出的aVoperator为right类型不能为IfStatement, 因为它有嵌套.记录下了所有符合条件的body生成switch 节点 3. 代码 function collectSwitchCase(whilePath,name){// 菜老板知识星球获得.let ifNodes [];// 遍历WhilePathwhilePath.traverse({IfStatement(path){//遍历所有的ifStatement;let {test,consequent,alternate} path.node; //获取子节点let {left,operator,right} test; // 必定是BinaryExpressionif (!types.isIdentifier(left,{name:name}) || operator ! || !types.isNumericLiteral(right)) {//条件过滤return;}let value right.value;//保存整个body记得生成switchCase节点的时候加上break节点。ifNodes[right.value-1] consequent.body; if (!types.isIfStatement(alternate)){ifNodes[right.value] alternate.body; //最后一个else其实就是上一个else-if 的 test.right的值} }})return ifNodes;}const if2switchReplace {WhileStatement(path){let {test,body} path.node;// while循环的参数是NumericLiteral ,且内容为1. body中只有2个节点if(!types.isNumericLiteral(test,{value:1}) || body.body.length ! 2){return}// 判断while循环格式, 条件过滤let blockBody body.body;if (!types.isExpressionStatement(blockBody[0]) || !types.isIfStatement(blockBody[1])){return;}// left 左边的节点就是我们需要的变量名let {left,right} blockBody[0].expression; //或者左右节点 aV cA[wU];let name left.name;// 获取到了变量名称后, 就需要收集使用了aV的caselet ifNodes collectSwitchCase(path,name); //收集case//无case直接返回。if (ifNodes.length 0) return; let len ifNodes.length;for (let i0; i len; i){//每一个case最后都加breakifNodes[i].push(types.BreakStatement()); ifNodes[i] types.SwitchCase(test types.valueToNode(i),consequent ifNodes[i]); //生成SwitchCase节点}//生成SwitchCase节点let switchNode types.SwitchStatement(right,ifNodes); path.node.body.body [switchNode]; //最后的while节点只有一个Switch Node;} }traverse(ast, if2switchReplace);
http://www.hkea.cn/news/14463703/

相关文章:

  • 发布网站搭建教程如何自己制作首页网站
  • 淄博团购网站建设莱芜户型优化培训班
  • 网站建设还好做吗做网站需要技术
  • 企业 网站 客户留言怎么做什么网站可以做十万的分期付款
  • 2008iis 网站 打不开企业域名是什么意思
  • 股权众筹网站开发网络营销发展的趋势
  • 网站子站怎么做中国的门户网站有哪些
  • 女性门户网站源码企业查询网
  • 群晖可以做几个网站门户网站建设与管理办法
  • 做外贸必须有网站吗建筑设计找工作的网站
  • 微网站建设制作设计政务网站建设具体指导意见
  • 公司网站建设与管理的作用wordpress访客插件
  • 传统企业网站建设抖音 运营
  • 义乌网站推广网站建设分前端和后台吗
  • php做网站需要数据库吗免费咨询心理医生平台
  • php手机网站如何制作教程怎样做网站能百度能搜到
  • 各位给推荐个网站百度官网
  • 厦门 网站备案免费seo网站推荐一下
  • 酒店网站做的比较好的重庆市造价工程新希望官网
  • 如何开发网站平台开发深圳正规网站制作哪里好
  • 怎样开网站ppt素材免费网站
  • 怎么在新建网站上做分享代码学校网站建设审批
  • dw软件网站建设教程国内简约网站
  • 网站建设游戏企业营销理念
  • 网站建设模板下载免费成都十大平面设计工作室
  • 公司在百度做网站找谁东莞长安 网站建设
  • 创建站怎么上传网站怎么办全国企业信用信息公示系统查询入口
  • 微博如何做外链到时自己网站最新新闻事件今天国内大事2022
  • 网站开发总结成都公司建设网站
  • asp.net 网站计数器代做百度关键词排名