day24_jsvmp后两个生成算法

📅 发布时间:2026/8/25 14:16:22
day24_jsvmp后两个生成算法 一、在switch中插桩先看大概日志信息有什么变化“case”,a[F1],“stack”,Y看见array一直递增数组变化【视频35分】我们就知道大概要插桩什么了比如chartCodeAtString.FromChartCodeparseInt等等操作。中间查看了数组里面数字被调换了很多。所以我们后期插桩就务必看到这些相关日志二、开始插桩我们先按照一开始说的操作符先进行插桩如下就是插桩位置整理断点最后打桩出结果看看case65导出日志js中的BLOB对象总结插桩修改———置空再释放断点打印日志第一步是插桩点如下如下是将日志push进去分析日志就是从结果上面看到是有一个码表后面args:63分析63怎么来的这个7从哪里来charAt(60)来然后60又从上面来然后看一下上面的数组怎么来的542看看怎么来发现这个数组就是不断从字符串乱码中不断chartAt的出来得而这个乱码字符串是3位一组。分3组不断提取出来这里又突然说这里做了其他算法得操作 再base64得出结果得前面算法都是重复的不断运算符号然后又不断索引取值现在就研究这个乱码字符串怎么生成得尤其这个小3怎么生成的定位找码表第一次出现的位置上一张图暂时没用。。。因为课上找不到。直接浏览器日志找找到“小3”是与0400b315有关。所以就找这个。图中是这个0400b315取6~8位得到15发现是fromcharcode179得到的“小3”然后就是跟0400b315有关 这个是十六进制取两位得到十进制 b3----21 15-----179测试如下发现这个就是十六进制上面就是0400b315这个每次取两位04十六进制就是4b3和15如下接下来找这个怎么来的有个小a开头的。看到上面有个数组找第一次乱码的地方取数组得 第12位 得到 145141 ‘^’ 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是十六进制然后转十进制取值