某海外上报接口 strData 纯算逆向

本文仅作学习使用

1.目标

aHR0cHM6Ly9tc3Nkay1zZy50aWt0b2suY29tL3dlYi9yZXBvcnQ/bXNUb2tlbj1ISEhrTHJFN0pWZlNUdE5lei1LOW9YeE96WlpHSFlmOEFKd1pEMUdmRzluNlgtWE9sTUdOcmpSUGZsZ0FrdVhOWGlIb1BvejFfNENXMXdmVnFvamkwZ2FRSVlITEUxaG03VllLUW1oNXM0NWpTNjRVTUNFQ3RIZnI0WF9LMkdYQ2c4MGpCbktIYm1ZaWREbz0mWC1Cb2d1cz1ERlN6c3dTN01ZRFBTRUd0Q3plN3g5WEZoc2JJDQo=

2. debug

2.1 xhr断点

2.2 经典jsvmp输出日志

bash 复制代码
"执行 M->",l,"执行func->", M[sg[112]]," 参数 B-> ",B,"返回 N->",N
bash 复制代码
N&&console.log("执行 p->",p,"执行func->",sg[320]," 参数 o-> ",o," 参数 i-> ",i," 参数 u-> ",u," 参数 a-> ",a," 参数 c-> ",c," 参数 f-> ",f," 参数 s-> ",s," 参数 l-> ",l)
bash 复制代码
N&&console.log("执行 hg->",hg,"执行func->", hg[2]," 参数 N[0]-> ",N[0],"  参数 q-> ",q,"  参数 I-> ",I,"  参数 N[1]-> ",N[1])
bash 复制代码
!N&&console.log("执行 B->",B,"执行func->", B[sg[256]]," 对象 q-> ",q,"  参数 I-> ",I,"返回 A->",A,"typeof A:",typeof A)

2.3 日志分析

拿到日志后分析,日志大概几十万行

  • 一阶段str-code-str:
    初始化码表并动态存取
    双递归计算
    上下文运算值关联
  • 二阶段加盐
    静态数组+时间戳+随机数计算盐和盐arr(扣代码即可)
    str加盐,盐arr转str,截取拼接
  • 三阶段生成数据
    str递归截取运算生成code
    使用新码表取值

2.4 注意点

一阶段取值后的结尾,递归8时未结束需要继续递归,并将最终输出值记录

二阶段加盐时控制流里面会把字符L先拼在前面

三节点取值结尾。若str长度不够3,则生成的4位数向后补=

3. Note

最后一,三阶段放一下经典码表吧

bash 复制代码
    //初始化码表
    var code_table = {}
    for (let i = 0; i < 256; i++) {
        code_table[String.fromCharCode(i)] = i
    }

注意此码表后面会一直往里push

bash 复制代码
Dkdpgh4ZKsQB80/Mfvw36XI1R25+WUAlEi7NLboqYTOPuzmFjJnryx9HVGcaStCe=

然后再补个最终输出的截图

这玩意确实有点复杂,有很多坑,纯算算了5天

相关推荐
蔡霸霸i1 天前
掌上高考招生计划逆向爬虫爬取
逆向
嫂子的姐夫4 天前
017-续集-贝壳登录(剩余三个参数)
爬虫·python·逆向
热心市民老八8 天前
010editor 最新版破解
逆向·reverse
嫂子的姐夫10 天前
010-sha1+base64:爬虫练习网站
爬虫·python·逆向
嫂子的姐夫10 天前
012-AES加解密:某勾网(参数data和响应密文)
javascript·爬虫·python·逆向·加密算法
嫂子的姐夫10 天前
011-AES:深证信
爬虫·python·逆向
嫂子的姐夫10 天前
013-webpack:新东方
爬虫·python·webpack·node.js·逆向
极客小云11 天前
【Rokid AR录屏功能逆向分析:通过蓝牙HCI抓包实现CXR SDK未提供的AR录屏功能】
ar·逆向·vr眼镜·rokid·rokid glasses
介一安全11 天前
Android 安全加固工具 dpt-shell
android·安全·网络安全·逆向