首先使用blutter解析,拿到如上的output文件
先看看asm
都被混淆了,真的是太可恶了。
查看libapp.so的内容
一点符号都不给,首先我们使用LoadScript File去添加一部分符号
加载之前解析的
恢复了一部分,但是没有什么乱用啊
这个时候我们导入old.ida64
按ctrl+6召唤bindiff(没有可能是没插件)
Diff Database加载一下
越绿代表越匹配
通过关键字搜索找到关键函数,这玩意的字符串,结合hint说是dart语法不难发现来自于
GitHub - xxtea/xxtea-dart: XXTEA encryption algorithm library for Dart.
既然算法已经知道了就开始分析
首先导入字符串
全选之后点击Import symbols/comments
就可以更好的查看了。
首先我们注意到blutter生成的frida脚本
在fn_addr处填入我们需要trace的地址我们就可以梭参数了,先梭encryptToString
这里有个巨jb坑的地方,我点了n次一直不触发,后面来脾气了,长按一下,结果
触发了,tnnd,后面发现应该是这个aaa与bbb的问题
短按是用来触发aaa的,当时hook过aaa,发现短按确实能触发
拿到了一段md5,继续往下走,干encrypt_355994()
还是md5
研究发现,如下函数存在xxtea
梭一下
这就拿到key了,后续发现这个key其实就是md5的前16位。
对encTstr交叉
看到上层函数,其实这个sub_27F2d4是有符号的,我这里写wp的时候没有导入全部,名字叫做dialog,那么写过安卓开发的就知道这玩意就是弹窗了
交叉他发现其实有两处引用。但是跟不过去
看看汇编
果然两个。一个正确一个错误,那么我们看看哪儿比较的
其实就是这里了
直接上hook
拿到一串base
其实不难发现我们的输入在如下函数也被加密成base了。在old中也是有符号的,很明显的base
那么这一串肯定就是密文了
然后在之前给出的GitHub项目中,发现其实他的enc出来的结果就是base64的,所以我们直接使用库就可以解密了