首页
社区
课程
招聘
[原创]android中如何注入java
发表于: 2013-11-7 13:43 14123

[原创]android中如何注入java

2013-11-7 13:43
14123
论坛中的大牛们(蟑螂一号、古河等)已经讲过了如何注入android 本地层(native)程序,那么我今天说说如何注入到java里面。

android中所有的java进程都是app_process这个东西,在app_process中启动了虚拟机,在虚拟机中加载java类,并且运行java程序(描述的比较粗糙)。

假定我们已经注入到app_process中:
1. 第一步,获取已经启动的虚拟机。
2. 获取正在运行的java虚拟机的环境(JNIEnv)。
3. 获取虚拟机中的系统classloader。
4. 创建BaseDexClassLoader(我注入的是jar包)。
5. class cls = BaseDexClassLoader.findClass("你jar包中的类");
6. cls.newInstance();
7. 已经进入到java中了。

呵呵 大致就是这样子了;这是我的方法,欢迎大家讨论。

[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
沙发自留
2013-11-7 13:46
0
雪    币: 1413
活跃值: (401)
能力值: (RANK:270 )
在线值:
发帖
回帖
粉丝
3
这个方法蛮经典的,啥时候放点更详细的代码出来? :-P
2013-11-9 19:29
0
雪    币: 259
活跃值: (3623)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
你是注入zygote进程来注入启动的应用?java层注入拦截也可以直接注入启动的进程,不过拦截受限。
2013-11-10 11:49
0
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不是不放代码,咱论坛牛人多,我目前代码尚未完善,放出来怕被喷死
2013-11-11 10:03
0
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
注入所有的进程都行,只不过在创建classloader的时候,需要注意dex解压路径,android对这块限制很严格。
2013-11-11 10:04
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
目前,我们注入出现,在cpu较高的时候,通过dexloader加载dex,卡死的情况
请问有什么好的方法吗
2013-12-13 13:42
0
雪    币: 53
活跃值: (275)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
大家都是很友善的
2013-12-13 21:17
0
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
卡死 我觉得可能与cpu没啥关系。

注入依赖的是ptrace,只有在进入系统调用时,ptrace才返回;有时候目标进程已经进入系统调用了,并且阻塞了(比如recv函数),那么只有再下一次进入系统调用时(即recv返回后),ptrace才会返回,看起来像是卡死了。
2014-2-5 14:32
0
雪    币: 147
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
哥们 什么时候放代码啊  借鉴下
2014-2-15 19:05
0
游客
登录 | 注册 方可回帖
返回
//