针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)

在抓取某投资app的更新数据包时,发现数据字段进行了加密,:
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第1张图片
如上图所示,请求包与返回的数据包均被加密,分析一波加密的方式。
先放进apk改之理里面,查看下其文件目录:
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第2张图片
没有lib文件夹,说明字段的加密都在java层完成,这样就减轻了分析的难度(所以开发时尽量加密方式放在so层。。。)。
先搜索下key值:
在这里插入图片描述
查看其java代码:
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第3张图片
根据函数名称显而易见,是对请求参数的加密,也就是对:
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第4张图片
的字段信息进行加密。
跟进p2sDiyou,参数猜测因该是明文信息:
在这里插入图片描述
使用了AES加密的方式,跟进AESencrypt.encrypt2PHP方法,看参数名称第一个应该是密钥,第二个是传递进来的参数并处理:
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第5张图片
看到了java中常用的AES加密方法,第一个参数为密钥,第二个为明文信息。
全局搜索SEND_AES_KEY字段:
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第6张图片
全局搜索“sak”字段:
在这里插入图片描述
密钥直接写在了androidManifest.xml文件中。密钥为;3jm$>/p-ED^cVz_j~.KV&V)k9jn,UAH。

紧接着通过AS+smaliIdea的方式来动态调试下smali文件:(参考链接:https://blog.csdn.net/u013736724/article/details/53292855)
第一步:得到apk反编译后的smali文件
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第7张图片
第二步:导入AS中,然后根据上述链接教程设置一下
第三步:再p2sDiyou函数处下断点
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第8张图片
f7进入p2sDiyou方法:
对应的java源码是:
在这里插入图片描述
smali代码为:
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第9张图片
从java源码里面可以看到p2sDiyou方法的参数就是明文信息,对应到smali代码中可以看到参数保存在v2寄存器中:
查看v2寄存器的值:
在这里插入图片描述
即为明文信息。
从p2sDiyou方法中可以看到,encrypt2php方法加密的第一个参数为密钥,上文已经得到其密钥信息,第二个参数为明文信息经过base64编码后的数据,从smali代码中可以看到保存在v1寄存器中,验证一下加密的结果是否和charles中抓到的密文信息一致。
v1寄存器值如下:
在这里插入图片描述
验证一下,AES加密如果不指定加密模式以及填充方式,默认为AES/ECB/PKCS5。
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第10张图片
紧接着对返回的数据解密方式进行分析:
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第11张图片
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第12张图片
解密密钥为:
在这里插入图片描述
密文为+5pt3NX39dTHudZNypQ9fIuRe2s72wKLtGxTG1D4jA8VaS3fwQxFEJtW+GNSygkaSWMWrcaIaynxXyovbeE/JdQWcKfv03UxK+F+4LsadDrcLvzjwY4u6K6WF7LmtQV1BcTI1gs8Nw6WtaKnwt6d6LyloK/E7WriXpCz1rYra6wjgMmi3WL8ZxDzk1jqf56GEQ7KmB+Uf99S9WfSlRHPESD368IKHYU+pyH6Ke5xlfvMn1rtaigKd7zSV3OyuGl3
解密后可得明文。
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第13张图片
针对某投资app协议字段及其加密方式的一次分析(Android Studio+smalidea)_第14张图片
xmdy协议字段类似。另外在动态调试时可能或出现Unable to evaluate the expression Cannot find source class for current stack frame的错误,可以右键作为String查看。

你可能感兴趣的:(逆向,app协议分析,协议分析,安卓逆向)