最近在学习Android逆向
例子是libwechatnetwork.so rqt8.0+版本,发现了一个特别好玩的东西就是,如果So层检测到你用了调试器就会走一套算法,如果是正常用户就会走另外一套算法.
这难道就是新型的风控防御手段吗,那我可得好好的学习借鉴一下. 用在自己的安全产品上!!!
这个想法我觉得很不错,如果一些逆向人员大意了 可能就会去分析简单的风控算法,到时候服务器一经校验就能立马辨别出当前用户环境是否可信.
具体实现方案分析
根据分析发现 原来他检测是 TracerPid: 这个字段玩过逆向的人员应该都知道 只有附加了调试器 这个值就会为调试器的ID ,当然现在自改ROM能轻松过掉这个检测,嘻嘻嘻
因为楼主一开始并未发现这个东西,所以把两套RQT算法都分析了出来,第一套很简单 就是正常的两次异或后 加上两次SHA1之后进行简单的计算 得到一个2开头的hex值 轻松搞定
而第二套也就是8.0版本的RQT就比较麻烦了,但是总归是可破的,逻辑就是初始化的时候 会MMAP初始化一个Table 然后对Table里的值进行各种运算
计算函数前还获取了 计算这个函数需要的时间 看来他们也知道 这个函数的性能不是很棒啊 ,经过我Trace 执行了7000W次CPU指令 好玩好玩
总得来说新版的RQT就是对初始化的Tbale加上一个类似VMP的东西 进行计算值,这个SO总体难度不错,可以给个5星, 主要用到了流程平坦化,指令替代,字符串混淆 这三种混淆方式,以及吧所有函数全部以INLINE的方式实现,导致IDA分析时机器卡顿.
真是佩服他们的安全技术,我要好好学习,争取吧他们的技术学到手,成为一个高手!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)