在之前的研究中,我们接触过多次阿里系算法内容,通常停留在某一点或关键位置的处理方法和策略。此次将探讨闲鱼 App 的 x-sign 生成过程,以及 Native 层的一些关键数据。
unidbg 环境搭建
要想探究 Native 层的奥秘,目前最方便的工具是 Frida 和 unidbg。Frida 倾向于现写现用,而 unidbg 更适合对底层函数进行逆向分析。虽然 XPosed 在 Hook 持久性上有优势,但在 Native 层的灵活调试和算法研究方面存在明显不足。
unidbg 的代码配置较为成熟,这里不再展开说明。
追踪 x-sign 的读写位置
根据生成签名的位置,追踪内存的写入情况。例如以下生成的 x-sign,trace 这块内存的写入记录如下:
azU7Bc002xAAJ1j6L+zCsGD9Ijno51j3Wp3y0dj3WPdbxnL/4W9aBqSdKkp+fh5TrmXZo0wH1f8o/Z+DCO2f8wlDDmdY51j3WOdY91 最后 3 次写入为: // 开始写入 x-sign [23:00:48 332] Memory WRITE at 0x4051e260, data size = 4, data value = 0x37557a61, PC=RX@0x401335d0[libmain.so]0x1335d0, LR=RX@0x40132c68[libmain.so]0x132c68 [23:00:48 332] Memory WRITE at 0x4051e264, data size = 4, data value = x30306342, PCRXlibmain.sox1337e8, LRRXlibmain.sox132c68 Memory WRITE at x4051e268, data size , data value x41417832, PCRXlibmain.sox1337e8, LRRXlibmain.sox132c68 x37557a61 小端序字符即为:azU7 x30306342 小端序字符即为:Bc00 x41417832 小端序字符即为:xAA


