day24_jsvmp后两个生成算法
2026/8/25 14:16:09 网站建设 项目流程

一、在switch中插桩,先看大概日志信息有什么变化!
“case”,a[F+1],“stack”,Y

看见array一直递增!


数组变化

【视频35分】
我们就知道大概要插桩什么了,比如chartCodeAt,String.FromChartCode,parseInt等等操作。中间查看了数组里面数字被调换了很多。所以我们后期插桩就务必看到这些相关日志!

二、开始插桩!

我们先按照一开始说的,操作符先进行插桩!如下就是插桩位置!




整理断点!


最后打桩出结果看看case65

导出日志!js中的BLOB对象!

总结,插桩修改———置空再释放断点打印日志

第一步是插桩点如下!如下是将日志push进去!

分析日志
就是从结果上面看到是有一个码表,后面args:63,分析63怎么来的

这个7从哪里来,charAt(60)来,然后60又从上面来

然后看一下上面的数组怎么来的

542看看怎么来


发现这个数组就是,不断从字符串乱码中,不断chartAt的出来得,而这个乱码字符串是3位一组。分3组不断提取出来!

这里又突然说,这里做了其他算法得操作, 再base64得出结果得

前面算法都是重复的,不断运算符号,然后又不断索引取值!

现在就研究这个乱码字符串怎么生成得?尤其这个小3怎么生成的?

定位:找码表第一次出现的位置

上一张图暂时没用。。。因为课上找不到。直接浏览器日志找,找到“小3”是与0400b315有关。所以就找这个。
图中是这个0400b315,取6~8位得到15

发现是fromcharcode(179)得到的“小3”

然后就是跟0400b315有关, 这个是十六进制,取两位得到十进制! b3----21 15-----179

测试如下,发现这个就是十六进制!,上面就是0400b315,这个每次取两位,04十六进制就是4,b3和15如下!

接下来找这个怎么来的,有个小a开头的。

看到上面有个数组

找第一次乱码的地方:
取数组得 第12位 得到 145
141 ‘^’ 145 ‘=’ 28 再跟一开始 141 进行异或

向上找到数组取147


[].forEach((v, k)=>{if (v === 147) {console.log(v,k)}}) ------ 173
然后前面找不到173,还得继续网上找

看到了141,数组取141得到121。然后数组又取了147

然后取余12,从数组下标索引取12,得到数组的145.
然后145和141异或得到28

这里就找到两个数组的取值是147和121,但是没找着是为什么,所以笔记打问号

从上面找141。是从538索引得到。但是还要往上找。。。

路飞的这里就结束了,前面就是讲这个分析逻辑!其实视频没讲全!但是现总结如下:
总结是都做了什么操作运算?
1、看见码表以及左移2右移6,左移4右移4,就知道是base64算法
2、一开始给数组索引,追怎么的出来这个数组值?
3、就是乱码字符串不断定位索引取值得出数据。
4、长度和索引又异或或者|、&一系列操作取值。
5、0040b315是十六进制,然后转十进制取值

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询