前言
最近看了下ti网站的px3(只是在逆向层面~),以此篇文章简单记录下逆向过程。
正文
目前是分析的px3无感,接口是 /collector
请求参数
简单说明下,p6是cookie返回的,个别参数是固定的,seq, rsc会自增。主要需要看的是payload和pc 2个参数,2个是不同的算法。
-
payload,pc参数定位
现在新版本的px3,字符串混淆还是很容易还原的,不像之前混淆max的时候,解起来还是挺费劲的(之前用的不不的解混淆框架),所以我们要先解混淆。(我ast写的很烂就不放出来了)
解完混淆,就能快速定位到加密位置了,然后pc的加密位置就在上方。两个参数的加密代码也很好扣。 -
t、S 对象
t是一个数组,每一次请求,里面的值都不太一样。
这是第一次的,没啥东西。
t = [{"t":"PX12095","d":{"PX11645":"https://www.ti.com/","PX12207":0,"PX12458":"Win32","PX11902":0,"PX11560":269,"PX12248":3600,"PX11385":1688690961524,"PX12280":1688690961526,"PX11496":"1c796520-1c60-11ee-9c74-d7cdd48cc772","PX12564":null,"PX12565":-1,"PX11379":true}}];
S = {"tag":"v8.5.4","appID":"PXDl82I3Ui","cu": uuid, "pc":"7854166242700189"};
解密
新版本的,返回值也加密了,但是定位解密位置也很容易定位。
我们先不管,直接看第二次payload加密时的S对象。
S = {"vid":"f314f4ce-1e3c-11ee-8981-6f7561657275","tag":"v8.5.4","appID":"PXDl82I3Ui","cu":"f3136670-1e3c-11ee-806a-59aba21d5838","cs": uuid,"pc":"6149997752707771"}
细心的读者会发现多了一个vid对象,这个对象是It()函数返回的
找找看vt是哪里set的就简单了。
直接在浏览器里debugger Jt函数。set值的时候会断住,往上翻栈就能发现是第一次返回结果解密后得到的。 然后就开始扣解密函数了,这个也很好扣… 加密解密函数扣的难度都不是很大。
尾声
主要要分析的还是t对象里面的参数(不同的情况对应的内容也不一样),需要一个个去找是啥含义,然后扣出来(所以解混淆是很必要的,搜索字符串很容易定位) ,大部分的指纹以及检测都很容易找到的,扣也很容易扣的。
第二个请求,t对象的部分参数欣赏(老长了,截图不下)
文章仅在逆向分析层面,提供了一个逆向思路而已。花时间的话,相信大家都能分析不少东西出来。(听说最难的在并发风控上…)
鸣谢
在这里感谢陈不不大佬,在JS逆向之路上提供了不少帮助~
不不大佬的小破站地址: https://space.bilibili.com/227452348/
我、陈不不、泰迪合作的星球:https://t.zsxq.com/06bIUvBEM