js混淆之后如何调用方法

出了对代码安全的考虑,我们在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代码,异步编程给安全开发人员提出了新的难题。

原文来自:https://www.py.cn

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容