首页
社区
课程
招聘
[原创]某app加固逆向分析
2024-1-23 14:30 14734

[原创]某app加固逆向分析

2024-1-23 14:30
14734

小伙伴公司需要代码静态分析安全性,上了壳,就逆向分析了下。

Java层分析

Apk打开没有太多的代码,在自定义的application中加载了一个名为**Helper的so。
图片描述
在doAttach函数中能够找到反射调用原application的初始化。
图片描述

Native层分析

修复so代码

图片描述
打开so查看dynamic表,存在.init.proc,initarray只有一个函数。
再查看jni_onload函数,发现密文,猜测是init_array或者init_proc中解密so中代码段,修复代码段必定涉及mprotect,要么调用libc要么svc自己实现,能够快速找到可疑位置。
图片描述
Init.proc,调用sub_10150C,再调用三次sub_1011A0函数修改内存权限,通过svc调用mprotect修改该so在内存中的权限,修复该so原本的代码。
图片描述
图片描述
Dump代码段,修复elf,再次查看jni_onload,ida正常解析。

反调试和检测

大概看了下,有些功能没有开启的。
0x3D2B0 Fork后Ptrace,开启各种检测线程。
0x32D08 anti_thread_body函数检查tracerPid和status
0x4EEF8 waitpid 子进程是否终止。
图片描述
**0x2F488 **do_hook_log
图片描述
0x2E624 run_addition函数,获取ro.debuggable和signatures等等
sub_50B44 文件hash检测。

Dex解密

0x3D494 查找dex的指针,找到标志位。通过java的DexCache类dexFile找到dex指针,这我也第一次知道这个结构,可以这么定位dexFile。
图片描述
图片描述
sub_4F8BC 计算dex大小,申请一大块内存,存储解密后的完整的所有的dex。
图片描述
0x3E10C 申请内存,解密dex的密文部分,并拷贝回上一步那块内存,加密算法,晕了。
图片描述
dump后,得到11个dex,收工!

最后

附件是修复后的so,很多字符串明文,很容易理解它的逻辑,仅供学习。


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

上传的附件:
收藏
点赞9
打赏
分享
最新回复 (15)
雪    币: 22
活跃值: (3619)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
New对象处 2024-1-23 14:56
2
0
邦邦企业加固 在手上的测试机,打开就crash
雪    币: 412
活跃值: (917)
能力值: ( LV9,RANK:153 )
在线值:
发帖
回帖
粉丝
saidyou 2024-1-23 15:07
3
0
New对象处 邦邦企业加固 在手上的测试机,打开就crash
我到现在还不清楚企不企业版区别,这个包看到有一些检测的,求个企业包
雪    币: 984
活跃值: (310)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
issio 1 2024-1-23 15:28
4
0
楼主方便发下案例学习一下吗
雪    币: 62
活跃值: (556)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
万里星河 2024-1-23 15:57
5
0
感谢分享
雪    币: 5583
活跃值: (3857)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
简单的简单 2024-1-23 17:57
6
0
可以发下案例么,想跟着帖子学习学习
雪    币: 22
活跃值: (3619)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
New对象处 2024-1-23 20:12
7
0
saidyou 我到现在还不清楚企不企业版区别,这个包看到有一些检测的,求个企业包
奶块这个游戏应该是企业版
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_柠檬七喜 2024-1-24 09:47
8
0
dump出来之后如何修复elf呢?
雪    币: 412
活跃值: (917)
能力值: ( LV9,RANK:153 )
在线值:
发帖
回帖
粉丝
saidyou 2024-1-24 10:26
9
0
wx_柠檬七喜 dump出来之后如何修复elf呢?
直接替换.text段就可以了
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_柠檬七喜 2024-1-24 14:53
10
0
saidyou 直接替换.text段就可以了
可是dexhelper中没有.text这个section,text要收工添加吗
雪    币: 412
活跃值: (917)
能力值: ( LV9,RANK:153 )
在线值:
发帖
回帖
粉丝
saidyou 2024-1-24 16:10
11
0
wx_柠檬七喜 可是dexhelper中没有.text这个section,text要收工添加吗

这个segment

雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_柠檬七喜 2024-1-25 08:48
12
0
saidyou 这个segment
直接从0开始填充894804就可以了吗?
雪    币: 2053
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
怜渠客 2024-1-25 09:14
13
0
企业版会把Dex里的部分方法vm保护
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_柠檬七喜 2024-1-25 14:22
14
0
怜渠客 企业版会把Dex里的部分方法vm保护
是的dump了dex没用,还要分析dexjni.so
雪    币: 412
活跃值: (917)
能力值: ( LV9,RANK:153 )
在线值:
发帖
回帖
粉丝
saidyou 2024-1-29 11:08
15
0
saidyou 这个segment
是的
雪    币: 2099
活跃值: (3766)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
st0ne 1 2024-1-31 13:46
16
0
感谢分享
游客
登录 | 注册 方可回帖
返回