一、逆向分析
在之前已经介绍了最右这款App的签名算法解析第一篇工作,因为签名算法比较多,所以就分开处理,大家如果要看后续文章,一定要记得去详细看第一篇文章,不然我也不能保证你不懵逼!上一篇解析完了第一部分算法解析工作,这一篇继续操作,首先用IDA打开so查看第二部分代码,同时IDA动态调试so,具体步骤大家一定要去看第一篇内容,这里不再详细说了,我们动态调试到了第二部分加密算法:
看到这段代码和之前的一段其实差不多,然后再看看静态的伪代码:
看到arm指令的代码和伪代码位置不太一致,但是没关系,我们看关键点,比如arm指令的前几行是SUB和AND操作,而且看到是自减4然后和0xF进行与操作:
所以这时候看到伪代码的地方:
所以有时候发现伪代码和动态调试的代码不一致没关系,只要看到特殊值找到对应代码即可,按照之前的规矩,把伪代码拷贝到之前的C代码中:
首先依然是有个变量循环四次,每次递增4,然后是之前打印的四个常量值放在R0-R3寄存器中,