某海外上报接口 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天

相关推荐
字节暗面21 小时前
SO 加固强度自查 Checklist:静态、加载链、运行时看哪几项
安全·逆向
sysinside7 天前
Binary Ninja 6.0 (macOS, Linux, Windows) 发布 - 逆向平台
逆向·反编译
0xBADCODE10 天前
动态DEX加载+反射+DES硬编码密钥:安卓三层逆向实战
android·java·python·安全·网络安全·逆向·ctf
深念Y10 天前
B站封面与元数据抓取完整方案
逆向
安全小王子15 天前
nssctf_chicken_soup
网络安全·逆向·ctf·nssctf
安全小王子15 天前
nssctf——老鼠走迷宫
网络安全·逆向·ctf·nssctf
深念Y15 天前
QQ 数据库解密与聊天记录导出 — 技术文档
数据库·sqlite·手机·数据恢复·逆向·二进制·qq
安全小王子15 天前
nssctf_easyapp
网络安全·逆向·ctf·nssctf
安全小王子17 天前
nssctf_sign-ezc++
网络安全·逆向·ctf·nssctf
网安蟹佬霸17 天前
Android安全攻防实战:从APK逆向到Frida动态Hook全流程详解(附脚本)
android·前端·安全·web安全·逆向·csrf·网安