首页
社区
课程
招聘
[原创]乐固分析
发表于: 2022-2-1 04:50 38736

[原创]乐固分析

2022-2-1 04:50
38736

应用宝随手下载一个安装包,本文分析的是作业帮v13.28.0


jadx、idapro、unicorn


直接将apk拖入jadx,找到入口MyWrapperProxyApplication


继承了WrapperProxyApplication,在attachBaseContext中调用了initProxyApplication,而initProxyApplication中调用com.wrapper.proxyapplication.Util.PrepareSecurefiles,然后加载libshell-super.2019.so


PrepareSecurefiles这个方法反编译出来又长又臭,主要就是检查下/data/data/com.baidu.homework/files/prodexdir目录下的一些文件是否完整。

这些文件都是从assets释放的,主要有两个文件tosversion和0OO00l111l1l。

通过后续分析可知tosversion适用于判断应用升级的,0OO00l111l1l是保存原始dex的加密文件。


然后把libshell-super.2019.so拖入ida进行分析,首先看看.init_array,有一堆函数

把这些函数挨个大概看下,除了最后一个sub_29BC0都是在做字符串解密,这些字符加密的方式为每个字符串和一个固定的字符进行异或


虽然解密的方式十分简单,但是需要处理的字符串数量太多了,手动一个一个处理肯定是不行的,这就需要脚本了。

脚本处理有两种方式,

一种是分析汇编代码,找出需要解密的字符串起始地址、字符串长度、解密key;

另一种是unicorn直接运行.init_array中的函数,然后把运行后的内容直接加载到ida中;


首先来看第一种方法,通过分析可知,每次解密的指令格式都是固定的。

通过第三条指令LDR可以获取到字符串起始地址。

第四条有可能是跳转指令B,也可能没有。

通过倒数第四条指令SUBS可以获取到字符串长度。

通过EOR.W指令可以获取到用于解密的字符。


根据以上分析结果,写出idc脚本,执行一遍发现,存在解密失败的。

找到失败的地址,发现当字符串长度为1的时候,指令格式不一致。


把这个情况兼容一下,脚本内容如下:


ida加载运行该脚本,得到解密后的内容。



然后是第二种方法,通过unicorn直接运行.init_array中的解密函数,然后把解密后的内容直接加载到ida中


然后开始分析JNI_OnLoad,这个函数被混淆了,于是继续unicorn走起。

根据输出可知,该函数主要执行了以下几个操作,

通过RegisterNatives注册了WrapperProxyApplication.Ooo0ooO0oO()

调用0x1f668处的函数进行上下文初始化,

调用0x2B604处的函数生成解密key,

调用0xcea8处的函数加载dex。

先分析下sub_1f668处的初始化过程,东西比较多就不贴图了

首先是一些常规操作,获取vm类型、PackageInfo、ActivityThread、ClassLoader等。

然后是通过GetMethodID获取之前注册的WrapperProxyApplication.Ooo0ooO0oO()MethodID,然后在MethodID指向的内存通过Android源码可知,MethodID实际是ArtMethod对象的指针查找之前注册的函数地址,找到后保存该偏移值,后面会通过这个偏移值对系统native方法进行hook。


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

上传的附件:
收藏
免费 24
支持
分享
打赏 + 150.00雪花
打赏次数 1 雪花 + 150.00
 
赞赏  Editor   +150.00 2022/03/09 恭喜您获得“雪花”奖励,安全圈有你而精彩!
最新回复 (45)
雪    币: 3464
活跃值: (4594)
能力值: ( LV13,RANK:437 )
在线值:
发帖
回帖
粉丝
2
2022-2-1 09:08
0
雪    币: 2685
活跃值: (3680)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
3
很详细
2022-2-1 14:13
0
雪    币: 3546
活跃值: (3930)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
厉害了。
2022-2-1 19:20
0
雪    币: 5916
活跃值: (4810)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5

.

最后于 2023-6-23 20:00 被mb_rjdrqvpa编辑 ,原因:
2022-2-2 12:24
0
雪    币: 4233
活跃值: (3813)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
D-t
6
mb_rjdrqvpa MT论坛某管理员Hasky分析过程抄袭你的文章, 只不过是换了个乐固样本apk, 而且他的文章分析过程极其简单, 似乎没看懂你的文章帖子还标记精华链接: https://bbs.bi ...
 说抄袭的这位 你多多少少是没多少脑子 你所谓的几乎不一样 只不过是过程差不多 麻烦你去百度搜搜乐固的帖子 看看是不是基本一样 再加上楼主用的脚本解密 而我只是hook去脱 外加上分析几个地方 我贴根此帖 样本版本完全不一样 何来抄袭 
2022-2-2 13:33
0
雪    币: 6197
活跃值: (4629)
能力值: ( LV9,RANK:185 )
在线值:
发帖
回帖
粉丝
7
mb_rjdrqvpa MT论坛某管理员Hasky分析过程抄袭你的文章, 只不过是换了个乐固样本apk, 而且他的文章分析过程极其简单, 似乎没看懂你的文章帖子还标记精华链接: https://bbs.bi ...
多谢提醒,我看了下,应该就只有这两张图上的描述是一样的,
2022-2-2 13:43
0
雪    币: 4233
活跃值: (3813)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
D-t
8
卧勒个槽 多谢提醒,我看了下,应该就只有这两张图上的描述是一样的,[em_84]
乐固基本都是一样的流程与分析过程 我这并不是抄袭您的 我们手法完全不一样了 我单纯的提到hook去脱 您这是分析过程操作 所以不存在抄袭 论坛很多乐固 都差不多 
2022-2-2 13:46
0
雪    币: 6197
活跃值: (4629)
能力值: ( LV9,RANK:185 )
在线值:
发帖
回帖
粉丝
9
D-t 乐固基本都是一样的流程与分析过程 我这并不是抄袭您的 我们手法完全不一样了 我单纯的提到hook去脱 您这是分析过程操作 所以不存在抄袭 论坛很多乐固 都差不多
2022-2-2 13:49
0
雪    币: 5916
活跃值: (4810)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10

.

最后于 2023-6-23 20:00 被mb_rjdrqvpa编辑 ,原因:
2022-2-2 15:41
1
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
太厉害了,膜拜
2022-2-2 16:22
0
雪    币: 4233
活跃值: (3813)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
D-t
12
mb_rjdrqvpa 前面的, 你敢说没抄袭?你和本帖作者思路这么同步吗?连截图这几段文字都一模一样的, 没有半点差别?你说网上分析乐固帖子都大同小异, 你能找到这种几段文字一模一样的分析帖子出来?毋庸置疑, Hasky帖 ...
就像作者说的 前面几个文字一样 已经删除了  几个文字就抄袭了?  可真好笑
2022-2-2 16:48
0
雪    币: 14823
活跃值: (6058)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
楼上D-t脱壳实力有目共睹。。。
2022-2-2 17:47
0
雪    币: 4233
活跃值: (3813)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
D-t
14
tDasm 楼上D-t脱壳实力有目共睹。。。
没有 只是最简单的 各位有手就行 hook很基本
2022-2-2 18:30
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
大佬太强啦 unicore炉火纯青
2022-2-4 11:02
0
雪    币: 248
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
学习unicore、idapython的好帖子!大佬nb
2022-2-8 11:12
0
雪    币: 2415
活跃值: (1246)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
谢谢大佬感谢
2022-2-9 13:56
0
雪    币: 77
活跃值: (315)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18

这下终于知道了MT论坛哈士奇大佬在看雪上的账号哈~

最后于 2022-2-11 11:55 被JimmyJLNU编辑 ,原因:
2022-2-11 11:15
0
雪    币: 77
活跃值: (315)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
    卧勒个槽 多谢提醒,我看了下,应该就只有这两张图上的描述是一样的,[em_84]

的确就是这么一回事,因为腾讯加固的基本流程是类似的,即使版本号不断更新。所以并不存在抄袭问题。

没想到哈士奇大佬也亲自过来认证了~

最后于 2022-2-11 11:42 被JimmyJLNU编辑 ,原因:
2022-2-11 11:19
0
雪    币: 77
活跃值: (315)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
mb_rjdrqvpa MT论坛某管理员Hasky分析过程抄袭你的文章, 只不过是换了个乐固样本apk, 而且他的文章分析过程极其简单, 似乎没看懂你的文章帖子还标记精华链接: https://bbs.bi ...

实锤认证了

最后于 2022-2-11 11:28 被JimmyJLNU编辑 ,原因:
2022-2-11 11:25
0
雪    币: 77
活跃值: (315)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
tDasm 楼上D-t脱壳实力有目共睹。。。

这个人就是在MT论坛上熟知的哈士奇管理员,大佬级别的人物。

最后于 2022-2-11 11:27 被JimmyJLNU编辑 ,原因:
2022-2-11 11:26
0
雪    币: 77
活跃值: (315)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
D-t 没有 只是最简单的 各位有手就行 hook很基本
没想到你也过来认证了
2022-2-11 11:41
0
雪    币: 77
活跃值: (315)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
卧勒个槽 [em_69]

我这里还有几个样本,你帮忙看一下是不是都是一样的?这两个是我在官网自行加固的样本。

下载地址:蓝奏网盘

密码:JimmyJLNU

最后于 2022-2-11 12:09 被JimmyJLNU编辑 ,原因:
2022-2-11 12:04
0
雪    币: 6197
活跃值: (4629)
能力值: ( LV9,RANK:185 )
在线值:
发帖
回帖
粉丝
24
JimmyJLNU 卧勒个槽 [em_69] 我这里还有几个样本,你帮忙看一下是不是都是一样的?这两个是我在官网上自行加固的样本。下载地址:蓝奏网盘 密码:Jimm ...
两个都能脱,你可以把附件里面的0OO00l111l1l和tosversion替换后跑脚本试下
2022-2-11 12:40
0
雪    币: 14823
活跃值: (6058)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
卧勒个槽 两个都能脱,你可以把附件里面的0OO00l111l1l和tosversion替换后跑脚本试下

你这个运行环境介绍一下?IDA pro什么版本?unicorn是ida插件?unicorn在哪下载?

最后于 2022-2-11 14:38 被tDasm编辑 ,原因:
2022-2-11 14:33
0
游客
登录 | 注册 方可回帖
返回
//