某海外 _signature签名分析

1. 目标

aHR0cHM6Ly93d3cudGlrdG9rLmNvbS9hcGkvc2hvcC91cy9ob21lcGFnZV9kZXNrdG9wL3NlYXJjaF93b3JkX3N1Z2dlc3Rpb24/bXNUb2tlbj1mWEItOHRoRU9hNllIblkyellKM1lLaDlBMUtGeks3NnpXWjk2bnRwMUlldjNjTDFBdmNQRllpTmtLVllXUThLNVhYUkdJRFd4VjM2ekxWWEtPNFNLLWNGUFpjLU44cGhab1pWMW1kVWxwNi01Sm8xdVZkQjM4bHBBSU1oZzN1T000dnNPeE1xRHM0LTFTMD0mWC1Cb2d1cz1ERlN6c3dTTy16MFFvRHlhQ0ZVMnpJWEZoc3E3Jl9zaWduYXR1cmU9XzAyQjRaNndvMDAwMDFVSVFBd1FBQUlERG9kLnprZ05HaTlWQ0VBZUFBRG5MYWQNCg==

2.debug

2.1. 断点

2.2 目标栈

2.3 日志断点

目标位于控制流里面,所有的数都是控制流里出的

日志断点1

bash 复制代码
"执行 l->",l,"执行func->", l[Cb[110]]," 参数 U-> ",U,"返回 B->",B

日志断点2

bash 复制代码
B&&console.log("执行 m->",m,"执行func->",Gb[237]," 参数 i-> ",i," 参数 s-> ",s," 参数 u-> ",u," 参数 g-> ",g," 参数 c-> ",c," 参数 d-> ",d," 参数 f-> ",f," 参数 h-> ",h)

日志断点3

bash 复制代码
B&&console.log("执行 Cb->",Cb,"执行func->", Cb[0]," 参数 B[0]-> ",B[0],"  参数 W-> ",W,"  参数 N-> ",N,"  参数 B[1]-> ",B[1])

日志断点4

bash 复制代码
!B&&console.log("执行 U->",U,"执行func->", U[Gb[1]]," 对象 W-> ",W,"  参数 N-> ",N,"返回 M->",M,"typeof M:",typeof M)

3.日志分析

3.1 扣代码

从x-bogus完结开始就是signature的签名,然后开始扣代码

这里开始,会有个时间戳的计算,扣代码不必讲

这些代码最后会拿到一些数

bash 复制代码
927717054
1566359821
e_s 35391881347265
e_s_ma 2185601929
e_s_ua 3083975405
bodyhash 3093772032
paramshash 1472233066
Canvas 3102997541

3.2 计算值

控制流出数,部分不复杂的计算是直接丢在控制里面的,非常需要耐心,这是我的一些控制流计算日志

bash 复制代码
927717054
1566359821
e_s 35391881347265
e_s_ma 2185601929
e_s_ua 3083975405
bodyhash 3093772032
paramshash 1472233066
Canvas 3102997541





e_s 35391881347265
35391881347265>>2 337707056
337707056>>24 20
20&63 20
20<26? 20+65 ->U

337707056>>18
1288
1288&63 8
8<26 8+65 ->I

337707056 >>12
82448
82448&63 16
8<26 16+65 ->Q

337707056 >>6
5276672&63 ->I


337707056
337707056&63 48
I{35} 52 
26<48<52 
48+71 -> w

UIQAw
---
4294967296 //未知
35391881347265<<28 268435456
8240>>4 515 //8240未知
268435456+515 268435971

268435971   //推测>> 24
16<26 16+65 >Q

268435971	//推测>> 18
1024&63 +65> A


268435971>>12 &63  +65 ->A


268435971>>6 &63 +65 ->I


268435971&63 +65 ->D


***QAAID
---
3102997541 //画布
35391881347265 
3102997541^35391881347265  //-394789660
8240<<26  //-1073741824
R=60940275
-1073741824^60940275  //-1012801549


-1012801549>>24 -61
-61&63=3 ->D


***Dod.z
---
-394789660 //上一步画布
-394789660&63 >36
36+71 > k


----
1472233066 //paramshash
1472233066%65521 41717

-2133744907  //??
-2133744907>>2 -533436227

-533436227 >>24 //-32
-32&63  +65>g


***gNGi9


-----
35391881347265
-2133744907
-2133744907>>28 //-8

1350828513  //?
1350828513>>>4 //84426782

1426604062 //?
1426604062>>24 85
85&63  +65 ->V

*** VCEAe

----
1566359821%65521 =14795 //1566359821时间戳计算一次

14795>>24 //0
0&63 +65 ->A


*** AADnL

----
1350828513 //出现于 gNGi9输出后
1350828513 <<26  //-2080374784
1350828513 | 0;

-2080374784>>24 -124
-124&63 + 65 //E


*** EAAAA

---
0&63 + 65 //A

---
1350828513


输出 "_02B4Z6wo00001UIQAwQAAIDDod.zkgNGi9VCEAeAADnL"
--
bodyHash(0,"_02B4Z6wo00001UIQAwQAAIDDod.zkgNGi9VCEAeAADnL")//854188717   扣代码

parseInt(854188717).toString("16") // 32e9e2ad   

32e9e2ad   slice 6,8 //ad

"_02B4Z6wo00001UIQAwQAAIDDod.zkgNGi9VCEAeAADnLad"

然后代码实现一遍,和他的输出结果一致即可

4. notice

搞了两天,头晕眼花,还有三个参数没出,重新跟一下应该很快能出。

有些参数可以直接推出来,控制流的算法非常少。

网上特地搜了下,没有海外的_signature的签名,有国内的,非常相似,可以借鉴部分code。

相关推荐
浩浩测试一下3 天前
汇编 16位32位64位通用寄存器(逆向分析)
汇编·windows·stm32·单片机·嵌入式硬件·逆向·二进制
Lang-12104 天前
Frida + Android Hook 完整指南
android·逆向·hook·frida
浩浩测试一下4 天前
汇编 标志位寄存器 (逆向分析 )
c语言·汇编·逆向·windows编程·标志寄存器
浩浩测试一下4 天前
汇编 数组与串指令(逆向分析)
汇编·逆向·二进制·免杀·串指令·汇编数组
程序0075 天前
.NET玩转爬虫 遇到反爬 jsl cookie
逆向
RSCompany5 天前
Frida 17 以后 Python API 跑旧版 JS 报 Java is not defined ?一行 import 直接恢复 Frida 16 体验
开发语言·python·逆向·hook·frida·android逆向·frida17
浩浩测试一下5 天前
汇编中的JCC指令 (逆向分析)
汇编·逆向·标志位·jcc指令·跳转指令·标志位寄存器
浩浩测试一下5 天前
汇编中的段与段寄存器(大小)段序 (逆向分析)
汇编·逆向·二进制·字节序·windows编程·内存地址排序
浩浩测试一下7 天前
汇编 位运算 (逆向分析)
汇编·逆向·位运算·asm·windows编程·二进制逆向
浩浩测试一下7 天前
汇编 高低八位寄存器数据存储方式(逆向分析)
汇编·网络安全·逆向·二进制·免杀·寄存器·windows编程