声明
本文仅供学习参考,如有侵权可私信本人删除,请勿用于其他途径,违者后果自负!
如果觉得文章对你有所帮助,可以给博主点击关注和收藏哦!
本文适用于对安卓开发和Java有了解的同学
前言
本人最近一直在学习app方面的逆向,会不定期的分享逆向的思路和技巧。
目标app:xx合伙人
目标参数:apisign
链接放在文末,有需要自行安装
逆向工具介绍
关于抓包工具、反编译工具、模拟器等工具的使用和安装这里不多做讲解。
我这里的环境是:
- 真机 Google Nexus 6p(安卓8.0)
- chalres
- 抓包工具:postren、HttpCanary等
- jadx 1.4.5
- Android Studio
- Ratel平头哥(Android hook工具)
- Frida14.2.17、frida-tools9.2.4(版本一定要对应!!!)
有感兴趣的可以阅读大佬文章:知识笔记 - 平头哥ratel安卓Hook框架的安装与简单使用
项目地址是: https://github.com/virjarRatel
抓包分析
配置好以上这些环境之后,开始抓包。这个app十分的简单并没有对抓包进行检测,所以使用了小黄鸟去抓包,抓包结果如下:
登陆的请求基本都是以post为主,在这里请求的参数发送了data和aisign,其中apisign进行了加密。一个32位的加密,很明显能想到md5,究竟是不是呢,使用jadx反编译看一下源码便知。
该参数一搜索就出来了,选择一个地方直接点进去。
由于没有混淆代码,很清楚的就能看到data是请求的表单数据。
使用一个递减的循环pwd和user放进来,这也符合提交的参数。
再看apisign,使用了md5加密,参数分别是Constants.MD5_KEY和data.toString()
鼠标选中Constants.MD5_KEY同时按下ctrl就可以跳进声明的地方了。
逻辑全部清楚后,就是写hook代码验证了。
开发Ratel插件
运行代码后,会在手机上安装一个app。
重新启动app输入账号密码。
输出的内容和抓包的内容完全相同,证明插件是没有问题的。
Frida hook代码编写
首先安装frida
pip install frida
pip install frida-tools
时间比较漫长,耐心等待即可。
参考资料:frida文档
frida的hook是非常简单的,找到加密代码所在的类然后复制下来使用,再找到加密方法去hook打印输出即可。
frida不使用python,直接使用js脚本用法
frida -U APP包名 -l js脚本名: frida -U com.xxx.xxx -l xxx.js
重启app操作
frida -U -l xxx.js -f com.xx.xx --no-pause
运行结果:
最后使用python进行加密:
可以看到结果是一样的。
最后
链接:https://pan.baidu.com/s/1v09qWEP5qnaxfqeYAmBTGw
提取码:8888