最近在逆向学习,某音的时候,把HTTPBody算法还原了,大致就是data Godzip一下 然后再通过魔改AES和sha512等操作加密而成。
然而当我分析header头的时候, 却看到了个比较有意思的事情。
跟到 [TTHttpTaskChromium resume]的时候。
header头里面 是没有 x-gorgon x-argus 等参数的。只有cookie user-agent等
然而 charles 里面抓包却包含这些参数
并且 hook [TTHttpRequestChromium setValue:forHTTPHeaderField:]
也只能看见 cookie 和 user-agent 并没有 x-gorgon x-argus这些参数。
怀疑这几个参数是在 C中 被加上去的。但是我跟到resume之后就跟不下去了。
这里有个engin是一个结构体, 而且里面很复杂,也包含了带有network
reques等 字样的属性。 但是ida跟进去也看不出啥东西。所以就停滞了。
想问问有没有什么思路能 定位一下具体位置。
RSEf
2
考虑找一下字符串?
之前搞过一个swift的应用看不明白,但是通过字符串找到一些拼接了但是没输出的log
GeT1t
(GeT1t)
7
没太明白,你不是算法都还原了,怎么算法调用的位置没找到
由于以下原因,很难找到调用算法的位置(我也在尝试找出这些头文件的加密运作方式):
- 加密头文件是在特定的、无法追踪的函数中逐一生成的。例如,我尝试追踪
X-Khronos
值在内存中的首次记录源,但不知为何,Frida的Thread.backtrace
只显示一个地址,无法追溯更多。可追踪的地方很少,例如X-Argus
值在被编码为base64之前的值,是通过一系列故意破坏过程的指令寻找的,因此用反汇编器很难读懂。此外,所有指针都是加密的,在加载之前会对它们执行大约十个加密指令。
- 加密头文件随后会组装成一个字典,该字典会与请求的头文件一起组装。要访问它们的值,需要通过从堆栈迭代其他指针的循环来实现,这些指针则指向键和值。
因为所有这些,很难找到这些值的制作地点。如果有人有新消息或进展,请告诉我!
如果您想要找到决定是否将这些加密头文件添加到请求头中的位置,请寻找对-[TTNetworkManager addSecurityFactorBlock]
函数的调用。
它以前是在resume之后才加进去的,安全策略嘛,肯定要隐藏的更深一些.找到了加密位置,里面while循环无数层还嵌套调用的,靠自己一个人闲暇时间研究玩玩,要搞出来这几个数据,怎么也得小半年吧 ,要一天天净搞这个,得高血压了
1 个赞