首页
社区
课程
招聘
[原创]分析一下乐固
发表于: 2021-4-11 15:01 15333

[原创]分析一下乐固

2021-4-11 15:01
15333

最近分析了一下乐固,20年中的一个版本,简单记录一下,感兴趣的小伙伴可以看一看。文中图片出现的字段和函数名绝大部分都是根据自己理解改变的,可能存在不准的情况,大家有需要就参考一下。如果文章内容有错误,请大家指正,并多多包含。

定位com.zane.heartrate.MyWrapperProxyApplication->initProxyApplication()

下面直接进入So层

简单看一下init_array
图片描述

可以看到已经被ollvm了
图片描述

IDA 7.5 F5配合动态调试,可以慢慢探索里面的流程。

我们上面Java层分析到,有个比较重要的assets文件,会在Java层copy到应用的私有目录中


定位偏移sub_DAC4,我们先介绍一个Globle,一个重要的结构体。

下面依然可以看到一些重要的变量都存在Globle中

好,结构体介绍完了,下面介绍第一个阶段的核心,定位sub_D01C: 这个函数主要负责加载起来那个加密的文件,并且读取文件中的内容,赋值Globle结构体,这里取的内容都比较重要,后面会用到

加密文件中读取数据

定位0x7098:这个函数是整个流程的核心,流程比较长


下面开始


那我们先看Dex是怎么出来的?
跟进sub_6E30(prepareDex)

经过上面的流程,Dex已经准备好了,现在继续分析如何把数据填充回去
跟进sub_8D98

上面说了,在有xp的情况下,会提前填充。如果没有xp的情况下,在哪里填充的呢?还记得我们上面说过,有xp的时候,乐固重新注册这个defineclassnative函数.

继续跟进sub_BD7C

这个方法应该能脱掉近2年的所有乐固壳
hook libc的strstr

然后再hook libart的DefineClassNative对dex进行整体dump.

这种情况,dump出的dex全部是完整的。

sub_156FC这个函数中(原理rtld_db_dlactivity相关的,这个很多大佬已经分析过了)


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2021-4-11 23:01 被GitRoy编辑 ,原因:
收藏
免费 10
支持
分享
最新回复 (14)
雪    币: 5235
活跃值: (3260)
能力值: ( LV10,RANK:175 )
在线值:
发帖
回帖
粉丝
2
支持大佬 学习了
2021-4-11 22:14
0
雪    币: 14806
活跃值: (6043)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
奇怪,为何有xposed就先填充?而不是反xposed?还为xposed铺路?
2021-4-12 09:14
0
雪    币: 5330
活跃值: (5464)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
tDasm 奇怪,为何有xposed就先填充?而不是反xposed?还为xposed铺路?
确实是这样的,并没有反xp,只能说乐固兼容性考虑的非常好。
2021-4-12 09:21
1
雪    币: 4423
活跃值: (3088)
能力值: ( LV10,RANK:175 )
在线值:
发帖
回帖
粉丝
5
写的很好,很详细,点赞。
2021-4-13 10:22
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
虽然看不懂 还是赞一个
2021-4-13 16:40
0
雪    币: 5330
活跃值: (5464)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
万里星河 虽然看不懂 还是赞一个
为啥看不懂啊老哥,感觉写的挺清楚的
2021-4-13 17:52
0
雪    币: 3126
活跃值: (3251)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
8
在0x指纹大佬的帖子中https://bbs.pediy.com/thread-260251.htm有提到三个函数的HOOK(fstat,mmap,munmap),<这样在 libart.so 底层函数的代码中对文件进行内存映射的时候,返回的内存地址就是已经在内存中解密好的 Dex 文件的存放地址,而不是空的 Dex 文件>,和楼主中的三个函数有点不同,但感觉意思一样,不过我在实践0x指纹大佬的帖子时候用的是android7.1并没有hook这几个函数(他用的是android5)而是直接跳过了。那个案例(17年9月)中也检测了xposed,但并不是反xposed,今天看到楼主的帖子算是有点思路了,感谢
2021-4-16 13:04
1
雪    币: 5330
活跃值: (5464)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
dayday向上8 在0x指纹大佬的帖子中https://bbs.pediy.com/thread-260251.htm有提到三个函数的HOOK(fstat,mmap,munmap),,和楼主中的三个函数有点不同,但感觉 ...
感谢大佬,明白为什么会hook那三个函数了,我回去调试看!
2021-4-16 20:26
0
雪    币: 1310
活跃值: (727)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
要完全静态解密,还有许多工作要做,而且几乎每个版本都有小变化。
2021-4-17 10:37
0
雪    币: 5330
活跃值: (5464)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
11
shaoge 要完全静态解密,还有许多工作要做,而且几乎每个版本都有小变化。
明白,大佬已经搞了很多版本的静态脱壳机了吧
2021-4-17 13:22
0
雪    币: 232
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
我有一个软件混淆了能不能帮忙分析一下  老哥
2021-5-30 16:27
0
雪    币: 2089
活跃值: (3933)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
跟我分析的很像,如果是没Xposed的环境,可以手工解析opcode(基本上类似ijm,跑起来代码段都是明文的)。另分析一条捷径,可以直接hook安卓的log输出,里面会有一个TeaLog,有一些比较有意思的流程都在这个log里面。
2021-5-30 17:06
0
雪    币: 5330
活跃值: (5464)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
14
lhxdiao 跟我分析的很像,如果是没Xposed的环境,可以手工解析opcode(基本上类似ijm,跑起来代码段都是明文的)。另分析一条捷径,可以直接hook安卓的log输出,里面会有一个TeaLog,有一些比较 ...
可以可以!
2021-5-31 09:21
0
雪    币: 525
活跃值: (773)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
15
感谢分享
2022-9-1 19:24
0
游客
登录 | 注册 方可回帖
返回
//