字符混淆可以有效的增加静态分析难度,比较常用的上海交大GoSSIP小组开源的“孤挺花”,基于ollvm。解密过程在initArray里,而且是直接解到原来的.data段区,所以要恢复起来也相对简单。
如下图.datadiv_decodexxx比函数全是孤挺花的解密函数也就是说在so加载完后字字符串是会被恢复的,而且这里的加密是等长的,直接恢复到原来的表里,相当于直接恢复了这个字符串表,方便我们把这个表直接恢复到so文件里。
被加密过的字符表在文件中的位置和大小0x7f0000,0x1ca8映射在内存里的地方挂上gdb,把这段内存dump出来dump后的数据,这里取0x1ca8个字节,直接放回文件的.data段,ida加起来,可以正常看到字符串了,引用也正常解析,发现还有一段偏移被初始化为实际虚拟地址了,要还原一下可以看到这个偏移紧挨在字符表上面用beyond比较恢复一下就好了恢复后so静态分析效果对字符串识别正常,效果当然,要正常运行还得去掉initArray
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)