某海外 _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。

相关推荐
Aerelin4 小时前
《静态分析:GUI程序的明码比较》
逆向·ctf
奋飞安全4 小时前
给你的Ida插上翅膀
安全·逆向
恶猫5 小时前
ImHex 十六进制编辑器 v1.38.0 多语便携版
编辑器·逆向·十六进制·模式匹配·imhex
Aerelin6 小时前
Windows GUI 逆向分析题(CrackMe)
逆向·ctf
逆向新手7 小时前
js逆向-某省特种设备aes加密研究
javascript·爬虫·python·逆向·js
介一安全3 天前
【Frida Android】实战篇15:Frida检测与绕过——基于/proc/self/maps的攻防实战
android·网络安全·逆向·安全性测试·frida
网安Ruler4 天前
AC15启动项分析,漏洞分析
逆向
嫂子的姐夫4 天前
005-AES:采招网
爬虫·逆向·aes加密
嫂子的姐夫5 天前
004-MD5_易车网
爬虫·python·逆向·加密