十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
小编给大家分享一下JS逆向某验滑动加密,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
创新互联是一家集网站建设,吉县企业网站建设,吉县品牌网站建设,网站定制,吉县网站建设报价,网络营销,网络优化,吉县网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。通过调试可以看到有大量的 unicode 格式的编码以及数组名称的混淆
传统解决方法是在浏览器 console 端输入就能看到它的庐山真面目,但是这种方法太麻烦了,接下来我们用 AST 来将其还原!
首先还原 unicode 编码,打开 AST 在线解析网站(https://blogz.gitee.io/ast/[1])
将待还原的代码放进去
可以看到只需要把 extra 属性删掉就能还原原来的值。遍历代码如下:
const parser = require("@babel/parser");const traverse = require("@babel/traverse").default;const t = require("@babel/types"); //操作节点的函数,比如判断节点类型,生成新的节点等:const generator = require("@babel/generator").default; //生成还原后的代码const fs = require('fs');var jscode = fs.readFileSync("./slide.js", { encoding: "utf-8"});const visitor = { StringLiteral(path) { delete path.node.extra }}let ast = parser.parse(jscode);traverse(ast, visitor);let {code} = generator(ast, opts = {jsescOption: {"minimal": true}});fs.writeFile('decode_slide.js', code, (err)=>{});复制代码
注意 jscode 就是之前扣下来的 JS 代码, 最后将还原后的代码写入到 decode_slide.js 文件中
接下来是混淆数组的还原。观察调试代码,所有的数组都是基于 JS 文件中开头的大数组 KBBji.$_Co,同时将该数组赋值给很多变量,这些变量名都是随机生成的。
所以接下来我们要做的找出这些变量名称,然后将其替换成对应的字符串值!
AST 在线解析一下
根据解析结果,编写相应的遍历代码
const visitor = { VariableDeclaration(path){ const {declarations} = path.node; if(!t.isMemberExpression(declarations[0].init))return; if(declarations[0].init.property.name !== "$_Co")return; if(declarations.length !==3 || declarations[0].init.property === undefined)return; let value1 = declarations[0].id.name; let value2 = declarations[2].id.name; new_array.push(value1, value2); }};复制代码
上面就将所有的变量名找出来了,找到之后就能将所有的这种形式 $_DFCB(66) 代码还原了,这样代码就能有个直观感受!
相信聪明的你很快就能写出还原的代码。经过上面几步整体还原后的代码是这样的
根据关键词很快就能搜索到加密所在位置,清晰可见!如果不还原你是搜不到的.. 还原后在网站上我们也能很快定位到加密位置,打上断点
同样的代码可读性相差多大,相信你一眼就能看到。你以为这样就完了?No!
既然代码已经还原了,但是我们在网站上调试的时候还是混淆的代码,那怎么办呢?
接下来上另一个神器 Reres, 它的作用是将请求映射到本地,即你可以用本地 JS 来代替远程 JS 文件。
用法直接参考它的 github https://github.com/annnhan/ReRes[2]
好了有了这个东西,我们就能在网站上用还原后的 JS 来进行调试,太强了把!
效果如下:
tql,这下加密参数扣起来就没压力了吧!
后台回复 tql 获取相关代码!
看完了这篇文章,相信你对JS逆向某验滑动加密有了一定的了解,想了解更多相关知识,欢迎关注创新互联-成都网站建设公司行业资讯频道,感谢各位的阅读!