使用Android studio进行smali动态调试

针对某投资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 DY34fdgsWET@#$%wg#@4fgd345sg

另外动态调试的时候可能会报Unable to evaluate the expression Cannot find source class for current stack frame错误,这个只要更改变量类型为string就好了

综上