某里231滑块,某宝x82y滑块逆向分析

32 阅读2分钟

声明:

该文章为学习使用,所涉及的任何内容严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。

本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!

前言

本文是对于某里的x82y,也可以说是淘系的231滑块的逆向分析,

直接调肯定是很难调的,里边有近乎无数个三元的嵌套,

在这里插入图片描述

需要先将所有三元转if,然后if转switch,转完后D函数里边一眼看去就都是三层的switch了

在这里插入图片描述

在这里插入图片描述

之后再将三层转一层,字符串混淆解密,递归字符串解密,虚假节点去除,有能力的也可以再把最后一层还原为顺序语句。

细节方面由于流程很长,并且网上已有不少关于这方面的文章

这里只讲下虚假节点去除的思路

具体文章后期会更新至星球内,欢迎各位一起来交流探讨技术实现细节

虚假节点

最初是打算在每个case里边加个输出语句,但出来这个想法后立马就被制止了

  • 一 是因为会输出非常多的内容
  • 二 是因为这样做并不能够找到虚假节点

随后调整思路,打算全局维护一个map

map里边的key,为case值,value则均为空,

只有当被访问过后,value才会被置1,

多次过滑块之后,看哪个键的值不是1,

便可确定它是虚假节点,至于怎么安插,这就仁者见仁智者见智了,我这里是用的ast

const keysOfInterest = Array.from(nodeMap)
                            .filter(([key, value]) => value !== "1")
                            .map(([key, value]) => key);
console.log(keysOfInterest)

最终格式化代码三次测试

未格式化的代码三次测试

在这里插入图片描述 大概得到两千多个虚假的节点

替换去除之后的文件,还能正常跑通,说明没有什么问题

随后就可以开始正常分析了

在这里插入图片描述

结果

在这里插入图片描述

星球入口:

action = 'please base64'
url = 'aHR0cHM6Ly90LnpzeHEuY29tL0dFSXpl'

此外

let thing = '资料'
let action = '私聊'
let isFree = false
let v = 'QCJ04027856'