iOS及安卓软件逆向尝试
目录
由于初次接触Android及iOS软件逆向,因此通过本文记录逆向中遇到的种种困难及最后的结果。
由于爬虫开发过程中,遇到数据非明文传输的问题,token字段被经过加密传输(或许是一种反爬虫机制)。
original token: 7aefc54a474b47568189b5c94e7b3ae3
encrypted token: n4osKmXZ8yjNOl45C7qrgXQCfdrsD4yZau+A2C8fhY6MFIbG1FyQ7A==
因此,需要通过对软件包的逆向,分析数据的加密过程,以进行进一步爬虫。
1. Android apk文件
- 由于应用程序被“腾讯乐固”加壳,尝试改zip解压并且d2j脱壳后仅能得到壳文件的classes.dex,无法获得完整软件包的dex。
- 进一步尝试在手机内通过FDex2对app文件进行脱壳,但在FDex2运行后,软件打开立即闪退(未找到具体原因及解决方案,可能是“腾讯乐固”的防脱壳措施)。
因此,放弃通过apk文件进行脱壳,好在软件同时存在iOS版本,因此尝试对ipa文件进行分析。
2. iOS ipa文件
- 自App Store中下载软件,获得ipa文件,通过Hopper Disassembler v4对软件进行分析,发现代码经过加密。
- 在网络上进行搜索,发现App Store中的所有ipa文件都经过加壳,因此需要通过越狱后的手机,用dumpdecrypted对软件进行脱壳。但受限于所有iOS设备版本均更新到12.1.4,无法越狱,只好作罢。
- 通过互联网,发现PP助手上有越狱后的软件ipa,并且已经通过脱壳处理,因此下载PP助手。
-
PP助手连接iOS设备后,发现由于iOS设备未越狱,无法下载越狱后的ipa文件,通过Charles抓包,获取该页面的传输内容,发现传输的json数据包中包含该文件的URL,并且仅为base64,因此使用base64包计算得到实际URL,成功下载越狱后的ipa文件;
-
将越狱后ipa文件载入Hopper Disassembler v4,成功载入信息;
-
通过上述token传输的URL,找到该功能对应的模块,并且找到加密方法为DES,并且获得DES加密对应的密码;
-
通过查错IT网,尝试各种DES加密组合,成功发现:
加密方式为DES-ECB 填充为pkcs5padding padding为None
-
通过上述方法,最终成功获得token的加密方法,可作为一般方法进行推广。