针对某投资APP的协议逆向过程,smali动态调试步骤参考Android Studio动态调试安卓app教程,但是一开始没用他那个繁琐的baksmali.jar,直接用的apktool最新版反编译apk,然后将项目导入Android studio即可(命令java -jar apktool_2.3.2.jar d myapp.apk -o ./projects/myapp/src),手机最好用开发版或者安装xposed插件BDopener,这样就不用再反编译加debug=true重打包了。
抓包
搜索mxdy和diyou
diyou为AES加密
断在p2sDiyou和p2sXmdy这两处函数
先看第一个
服务器使用SEND_AES_KEY=;3jm$>/p-ED^cVz_j~.KV&V)k9jn,UAH来加密发送数据,密钥为32位,所以是AES-ECB-256加密
同理RECEIVE_AES_KEY=54Ms5bkE6UEdyrRviJ0![OR]g+i79x]k用来解密服务器请求数据
再来看签名的p2sXmdy函数
md5的参数为
DY34fdgsWET@#$%wg#@4fgd345sgftVI96ANm9m42duSFpTp2jwnMAsUpCk7Y2nn61gpleb+g61ZpsGM2lw7h8OTQUFd
另外动态调试的时候可能会报Unable to evaluate the expression Cannot find source class for current stack frame错误,这个只要更改变量类型为string就好了
综上