品易云推流 关闭
文章详情页
文章 > JavaScript > js混淆之后如何调用方法

js混淆之后如何调用方法

js混淆之后如何调用方法

头像

小妮浅浅

2021-01-28 16:14:253359浏览 · 0收藏 · 0评论

出了对代码安全的考虑,我们在js中进行了混淆的操作。混淆相当于给代码加密,那么我们这时又有了调用的需求,不过很多人想着是先破解再使用。那么有没有可以调用的办法呢?这里我们先对混淆的原理进行了解,然后分析程序执行的原理,在其中找到混淆后的调用方法。

1.js混淆的原理

混淆主要涉及两种思路:

a.通过正则替换实现的混淆器;

b.通过语法树替换实现的混淆器。

第一种实现成本低,但是效果也一般,适合对混淆要求不高的场景。第二种实现成本较高,但是更灵活,而且更安全,更适合对抗场景。

2.js混淆调用方法

在程序的执行流程中,往往会间接调用函数,攻击者可以在调用某个函数时,不是直接调用,而是经常几次其他无功能函数的调用最终调用该函数,因此可以混淆控制流程。

在上面的例子中,有五个子程序。在这些子程序中有一个sub5。如果你通过跟踪子程序的调用可以发现子程序最终执行的是sun2。因此,调用任何一个函数都将调用sub2。因此,可以移除sub1,sub3,sun4,和sub5而不是影响程序的执行结果。

补充:JS代码保护若干技术难点

1)前端环境的复杂。以安卓端为例,不同版本的安卓系统,对webview的对JS代码调用逻辑也不同,给加密功能的开发带来很大挑战。

2)JS的标准在不停迭代。类似于python2,3的区别,JS也分成不同版本,保护方案如何能兼容不同的标准。

3)单线程与异步机制。尽管可以勉强实现前端的多线程,但是绝大部分情况下,浏览器内核单线程执行JS代码,异步编程给安全开发人员提出了新的难题。

以上就是js混淆后的调用方法,只有对基础的混淆原理有所了解,才能找到调用的思路。学会的小伙伴可以开始动手试验一下啦。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

底部广告图