首页
社区
课程
招聘
某app deviceinfo分析
2022-10-15 21:32 8001

某app deviceinfo分析

2022-10-15 21:32
8001

1、加密函数

1
com.***.***.***.***.***.JNICLibrary#doCommandNative方法,其中当序号为10400时为加密算法。

2、快速分析

1
使用自制的trace工具,对序号为10400的执行流程进行trace。在trace文件中输入libart查看所有的libart调用。

图片描述
image.png
可以看到输入是protobuf,输出是byte array。并且输入和输出相隔了40多w条指令。
image.png

3、从输入流开始追踪

在trace文件中搜索0x2a
image.png
对应的c语言代码
image.png
经分析,该函数功能是对输入的byte arr进行字节转换。再往下
image.png
image.png
这是具体的加密函数,对输入的数据16位一组就是加密,末尾补pad个pad

1
pad = 0x10 - (input % 16)

使用python还原一下
image.png
image.png
为减少干扰,删除已还原数据,搜索目标数据
image.png
image.png
经过分析,该函数为计算hash, 调用了两次,计算的hash值为
image.png
第二次计算的hash为结果串的前8个字节中的后四位。输入为:002a7b0a-7ae6-4000-93af-60c2d63176fe
继续搜索, 可以发现在0x13714位置,对数据进行了eor运算,eor结果即为输出的数据。
从0x20起,即为eor第一步中加密算法的结果。
前32位数据为:
image.png
未加注释的地方,由于trace工具对内存读写这方面的支持还不是很好,就鸽了,感兴趣的可以自己分析,基本上在这儿。
image.png

4、结果串前8位分析

image.png , 前面说到后四位是由第二次计算结果的值获得。那么前4位呢?
image.png
前两位固定,后两位是由一个数 ^ CDEF 而来
image.png
由于trace工具对内存读写还不太完善,具体没追这个值,不过大胆猜测这是该加密函数的调用次数,可以用frida验证下结果。

5、最终结果异或值分析

image.png
0x35 0x79.......0x32 是0x10长度的salt,多次对app进行清空等操作,发现只有两组salt,分别为
5yPDTSC3rzXfpwN2 和 fGqSL6alaNcUyV9W,同样由于trace工具对内存读写访问的问题,不太容易跟踪,在此不得不感慨,unidbg的内存访问断点是真的好用。 哎有时间根据加密算法,还原下解密吧。


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

最后于 2022-10-15 21:57 被我只是没人要编辑 ,原因:
收藏
点赞2
打赏
分享
最新回复 (2)
雪    币: 839
活跃值: (5004)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
suuuuu 2022-10-17 10:55
2
0
雪    币: 1114
活跃值: (1347)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
psych1 2022-10-27 18:22
3
0

游客
登录 | 注册 方可回帖
返回