首页
社区
课程
招聘
[原创]利用VirtualApp实现免Root注入Hook(一)
发表于: 2017-3-4 19:28 28039

[原创]利用VirtualApp实现免Root注入Hook(一)

2017-3-4 19:28
28039

才疏学浅,如有不对,请轻拍。


一个话题,将一个so注入到App中有几种方式?

1.Root,直接注入。

想必论坛的大部分人已经都会了,拿到了Root之后,我们可以利用ptrace直接注入。所以加固的第一点,便是反调试。


2.Root,将so作为系统so,这样任何App起来都得把so加载到app进程当中。

xposed的方式是重写孵化器,让孵化器能够加载自己的so,从而控制整个安卓。所以很多加固会去识别特征码,看是否有xposed的框架。


那么如果没有Root呢,我们如何往一个App里注入一个SO?

1.重打包

如果可以重新打包,我们可以反编译java层,在加载SO的地方,补一句加载So,把我们的SO放到App的Lib目录下。

2.我们启动App

其实关于我们启动App的方式有很多种,如果App的架构简单,我们可以反编译一部分App代码,重写java层,我们的java层去load原有App的So,在加载App的So的同时加载我们的So。

具体可以参考https://github.com/zhuowei/MCPELauncher/的做法。


如果App架构复杂,被加固了,无法重打包,无法注入,无法root,无法刷机,锁了BL,反正就这样了,我们是否还有办法注入?


自然还是可以!


关于VirtualApp要从安卓的插件化说起。


插件化,就是让App动态的加载一个磁盘的dex,这样实现热补丁技术,我们的Host进程类似于医生,长期稳定,而真正的dex则类似于病人,可以动态的修复。


其实加固的原理也类似于如此,加固的时候,我们拿到需要加固的APK将其中的dex给加密,然后替换掉入口,改为我们的壳APK入口,当壳加载了之后,我们再动态的加载原有的APK,这样静态反编译,得到的是壳Apk.


VirtualApp中我们重点关注下NativeEngine这个类,因为这个类会加载一个so,而且so会位于启动的apk当中。既然这里加载一个so,自然可以再加载几个也无所谓。

这个类加载的So做了很多事,包括hook系统的底层函数。

replaceOpenDexFileMethod(envenv->GetObjectArrayElement(javaMethods)isArtapiLevel)

其中这个函数将OPen_Dex,给Hook掉了,想做dumpDex是不是可以在这里做呢?

这个SO还做了IO重定向,因为创造了虚拟空间,所以读写需要重定向。

IOUniformer::startUniformer

这个函数中hook了一个

hook_dlopen(api_level);

这里hook了linker当中的do_dlopen函数,这是so加载的函数,加壳的SO一般在加载的时候进行部分脱壳,所以我们也可以在加载了之后加载我们的so,进行hook。

由于很多手机linker是被处理过的不见得都能找得到符号,我们也可以利用其它办法。

不过这里就已经达到了我们想要的效果,在别人的App里加载一个我们的so,在别人so加载的时候,进行hook。




[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 1
支持
分享
最新回复 (22)
雪    币: 183
活跃值: (1058)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
谢谢分享
2017-3-4 21:14
0
雪    币: 0
活跃值: (878)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
开始以为VA是一个hook自身APP的框架,就没多看。你这么一解释就明白了,VA确实可以干很多事。 赞分享 期待您来一发代码~~
2017-3-5 13:24
0
雪    币: 6366
活跃值: (4336)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
4
新论坛连收藏功能都没了?
2017-3-5 15:36
0
雪    币: 93944
活跃值: (200219)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
5
pxhb 新论坛连收藏功能都没了?
http://bbs.pediy.com/thread-215920.htm 壇主 已經回復過
2017-3-5 15:37
0
雪    币: 111
活跃值: (184)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢分享,Mark一下,期待更多分享~
2017-3-6 08:48
0
雪    币: 1039
活跃值: (355)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mark
2017-3-6 09:19
0
雪    币: 82
活跃值: (104)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
看了两篇楼主的注入方案,思路感觉很新颖啊。but..对VA不是很了解,它启动的APP应该是没有之前数据的吧?这样的话只能对复制出来的APP进行注入,没法控制本身安装的APP?
2017-3-6 09:19
0
雪    币: 93
活跃值: (136)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
mark
2017-3-6 11:04
0
雪    币: 208
活跃值: (1976)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
10
RorschachL 看了两篇楼主的注入方案,思路感觉很新颖啊。but..对VA不是很了解,它启动的APP应该是没有之前数据的吧?这样的话只能对复制出来的APP进行注入,没法控制本身安装的APP?
对的,必须要由VA去启动那个APP,这和手机上安装的APK相互独立,互不影响。
2017-3-6 11:10
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
Mark 论坛不能收藏啦!
2017-3-6 15:58
0
雪    币: 35
活跃值: (1021)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
看了下代码,hook了onOpenDexFileNative,但是这个函数真正的实现还是由系统去完成的,所以这里的dump还是适合老版本的加固,比如爱加密的壳子自己实现了类加载器,这个地方都是不走的,
2017-3-6 17:31
0
雪    币: 4
活跃值: (726)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
繁华皆成空 看了下代码,hook了onOpenDexFileNative,但是这个函数真正的实现还是由系统去完成的,所以这里的dump还是适合老版本的加固,比如爱加密的壳子自己实现了类加载器,这个地方都是不走的, ...
是的,繁华大神明眼人,相对来说,这个方式对于爱加密是无效的,爱加密已经高度定制化
2017-3-6 17:40
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
淡然出尘 是的,繁华大神明眼人,相对来说,这个方式对于爱加密是无效的,爱加密已经高度定制化
先有繁华后有天 爱加密还是比较靠谱的
2017-3-6 17:52
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
繁华皆成空 看了下代码,hook了onOpenDexFileNative,但是这个函数真正的实现还是由系统去完成的,所以这里的dump还是适合老版本的加固,比如爱加密的壳子自己实现了类加载器,这个地方都是不走的, ...
这种dump早就不行了吧 通过DexMethod里的codeOff找到DexCode还原 运行时动态的dump 类似DexHunter原理
2017-3-6 23:42
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
    有具体实现的代码吗
2017-4-17 18:16
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
mark
2017-7-21 11:52
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
hook_dlopen  怎么去hook掉其他APP的so文件啊
2018-6-6 20:41
0
雪    币: 466
活跃值: (1172)
能力值: ( LV9,RANK:153 )
在线值:
发帖
回帖
粉丝
19
也有的是自定义linker,内存加载so,去系统依赖
2018-6-7 17:32
0
雪    币: 3907
活跃值: (5817)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
20
2018-6-9 22:41
0
雪    币: 287
活跃值: (485)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
mark一下
2018-12-21 20:47
0
雪    币: 1932
活跃值: (682)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
22
学到了
2018-12-23 20:22
0
雪    币: 634
活跃值: (453)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
不错不错。学到了
2020-2-13 21:53
0
游客
登录 | 注册 方可回帖
返回
//