某 app mas 算法分析还原 cms so

android 逆向 37 / 38

仅供学习研究 。请勿用于非法用途,本人将不承担任何法律责任。

前言

样本下载: https://www.wandoujia.com/apps/35609/history_v7461

抓包

关注用户接口就是这个 mas 参数

java 分析

使用 jeb 打开 apkbytecode 这里搜索关键词

定位到按 table 转成 java,这里调用了 encode 函数,参数是 as bytes

跟到最后是个 native 函数在 cms so

so 分析

打开 cms.so 进入到 JNI_OnLoad 函数,没法正常 f5 算了懒得研究了,直接 unidbg 跑一下看看地址吧

unidbg 也很简单,直接出结果,没啥难度,鉴于台简单就不贴代码了

ida 跳转到 encode 函数看看

这里估计是有啥花指令,具体也不太清楚,反正也是没办法 f5 这里继续摆烂吧

那咋整呢 ?

unidbg trace 看看先吧


trace 结果不到 1000 行 ,还好

随便看下 arm 发现有很多运算指令,网上翻一下看看入口是那个地址

0x21f1d 这个地址,搜索一下调用了两次,看 r1 寄存器值 0x10 猜测是长度,我们的输入明显要大于 0x10 所以这里应该是分组进行计算的

看第二次调用 r10xa 那就对了,咱们修改下输入长度在看下

这次调用了三次


看起来貌似分析到了一些有用的东西

但是看不到 c 代码,总不能直接还原 arm

那可太掉头发了,咋整呢?

祭出另外一个神器,可辅助分析,当然仅限于这种逻辑简单的,复杂的就不太友好了

cutter 免费的哦


直接搜索 0x21f1d 地址,打开反编译器就能看到完美的 c 代码了,逻辑很简单,后面就可以使用熟悉的语言来还原了

最后

python 还原的运行加密结果

暂无评论
本文作者:
本文链接: https://www.qinless.com/?p=1879
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 qinless 的博客!
100

发表评论

返回顶部