本文章只做记录,不放样本APP,如有侵权,请联系我删除!
在安装样本APP后,发现在测试真机上打开卡死(有root权限)在安卓模拟器打开闪退,导致无法抓取数据包。但算法分析的首要目标是得到目标字段。
一开始的想法是hook掉检测的方法(有点废时间),但当解压apk后发现此样本有未知名加固,通过观察几个文件发现是uniapp打包。
众所周知,uniapp的应用直接找安装包下一个server的js文件即直接拿到正解,但当我把app解压导入vscode后竟发现此样本没有这个js文件,好吧看来这个app安全工作做的很到位。
既然是uniapp那他的运行方式必然是通过webview,那就直接从webview下手。
进入正题
1.手机开启开发者模式和USB调试连接电脑
2.通过adb查看下电脑是否能识别到
3.手机打开app,电脑浏览器进入调试页等待几秒,顺利调试到目标app
开始分析步骤
1.先手动登录一遍拿到登录数据包
通过观察发现有个api-token字段的数据验证
直接点开这个请求的执行栈
2.可以发现主要方法在index里面,那直接走index
看到这头皮发麻......
分析流程
虽然这混淆不堪入目,但细看一下发现只是看着乱
直接走重点
先对引号内看不懂的HEX串转成我们能看懂的字符串,直接复制全部,粘贴到乐易助手的字符串转换里面解码,得到如下图:
此时已经能看到数据字符串,直接搜索上面我们需要的算法字段 api_token
发现能搜索到12处,这就好办了,直接在调试页面将这12处下断点。
再次输入账号密码登录,发现在此处触发了执行,所以重点就在这里了。
单独复制出这段代码,在控制台运行
得到结果与动态调试结果一致
那剩下的就是将这句代码拆开分别执行拿到最终算法。
最后得到此APP的js算法为md5嵌套sha256