JS逆向某验滑动加密的分析

  介绍

小编给大家分享一下JS逆向某验滑动加密,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!

通过调试可以看到有大量的unicode格式的编码以及数组名称的混淆

传统解决方法是在浏览器控制台端输入就能看到它的庐山真面目,但是这种方法太麻烦了,接下来我们用AST来将其还原!

首先还原unicode编码,打开AST在线解析网站(<一口类=" footnote-ref ">[1] )

将待还原的代码放进去

可以看到只需要把额外的属性删掉就能还原原来的值。遍历代码如下:

=const解析器需要(“@babel/parser"); const导线=要求(“@babel/traverse") .default; const t=要求(“@babel/types");//操作节点的函数,比如判断节点类型,生成新的节点等:const发电机=要求(“@babel/generator") .default;//生成还原后的代码const fs=要求(& # 39;fs # 39;); var jscode=fs.readFileSync (“。/slide.js",{编码:“utf-8"}); const访客={StringLiteral(路径){删除path.node。额外}}让ast=parser.parse (jscode);导线(ast、访客);让{代码}=发生器(ast,选择={jsescOption: {“minimal":真}});fs.writeFile (& # 39; decode_slide.js& # 39;,代码,(err)=在{});复制代码

注意jscode就是之前扣下来的JS代码,最后将还原后的代码写入到decode_slide。js文件中

接下来是混淆数组的还原。观察调试代码,所有的数组都是基于js文件中开头的大数组KBBji。_Co美元,同时将该数组赋值给很多变量,这些变量名都是随机生成的。

所以接下来我们要做的找出这些变量名称,然后将其替换成对应的字符串值!

AST在线解析一下

根据解析结果,编写相应的遍历代码

const访客={VariableDeclaration(路径){const{声明}=path.node;如果(! t.isMemberExpression(声明[0].init))返回;如果声明[0].init.property.name !==癬Co"美元;)返回;如果声明。长度!==3 | | [0].init声明。属性===未定义)返回;让value1[0]=声明.id.name;让value2=[2] .id.name声明;new_array。推动(value1, value2);}};复制代码

上面就将所有的变量名找出来了,找到之后就能将所有的这种形式_DFCB美元(66)代码还原了,这样代码就能有个直观感受!

相信聪明的你很快就能写出还原的代码。经过上面几步整体还原后的代码是这样的

根据关键词很快就能搜索到加密所在位置,清晰可见!如果不还原你是搜不到的. .   还原后在网站上我们也能很快定位到加密位置,打上断点

同样的代码可读性相差多大,相信你一眼就能看的到。你以为这样就完了吗?不!

既然代码已经还原了,但是我们在网站上调试的时候还是混淆的代码,那怎么办呢?

接下来上另一个神器Reres,它的作用是将请求映射到本地,即你可以用本地JS来代替远程JS文件。

用法直接参考它的github <一口类=" footnote-ref ">[2]

好了有了这个东西,我们就能在网站上用还原后的JS来进行调试,太强了把!

效果如下:

tql,这下加密参数扣起来就没压力了吧!

后台回复<强> tql 获取相关代码!

看完了这篇文章,相信你对JS逆向某验滑动加密有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

JS逆向某验滑动加密的分析