前言
在分析fireyejs.js内部的逻辑的时候,碰见个递归函数调用,最终是返回一个字符串,本篇会讲解一下作者是如何从0(一脸懵逼的去跟)到大致理清思路,最终将算法给复现出来的(分析过程偏小白向)。
开始
如图:
D(44, 2, -1)
初次遇见它时,目前看到它只是为了拿一个toString,具体来讲是将toString这个字符串放入一个数组里,目前观测到的是U这个数组
再之后从U数组拿出来这个字符串又将值赋给了Ao
目前看到的字符串不断的挨个字母挨个加的就有Ao,还有Hr
每次拼接都是跟踪一个值,比较另一个值的长度
当小于它长度时,继续拼接字符串,否则进入下一个分支
即小于的那个长度,就等于字符串的长度
又发现一个
两次进去都有发现进入这个分支:
看样子就是最终给了po一个最开始的那个Ao的值
感觉这次像是拼接字符串为最终的performance,po则是上图中根据U数组最后一位来取的一个字符串
是否终止Lr继续拼接的条件就是no
拼接完是个 perfor,之后让Ao(原本是个空字符串) 拼接了它的值
感觉它进去那个之前,push的值,都与最后的字符串有关:
随后就又进入了63809之前拼接performance拼了一半的分支:
写代码简单验证一下,下一次拼接的字符串应该是mance:
确实如此
拼接完之后猜测一波应该要return了
果然,只不过是对Hr ++ 之后,并且判断是否小于xo之后才进入return分支的
最终将拼接好的字符串push进了U数组中,然后return,之后pop弹出赋值给其他变量。
这个便是其中的递归函数字符串解密的流程,还有一些XOR和ASCII 偏移的加密:
这些算法我都放在了星球里边了,欢迎大家一起交流学习
目前星球成品:
- 阿里v2 astkey,最新版2.1.0可用
- 顶象ac,最新版可用
- 某验ast反混淆插件 可用
- 阿里231递归函数,字符串解密 可用
- 东方航空请求和响应 加密和解密 可用
加入链接(无下载行为支持退款,有下载行为后不支持退款): https://t.zsxq.com/GEIze