坑在这里: https://www.v2ex.com/t/208961
填坑 https://github.com/Qihoo360/DroidPlugin
对,我就在 360 手机助手
1
abmin521 2015-08-27 20:19:20 +08:00 via Android
你为什么发了两次?
|
2
fengdra 2015-08-27 21:03:55 +08:00 1
感觉好可怕,以后流氓程序可以不经允许直接代装软件了
|
3
simon7 2015-08-27 21:19:00 +08:00 via iPhone
简直黑科技。
|
4
ljbha007 2015-08-27 21:20:36 +08:00
大概看了下代码 大致总结思路:
1. 注册一堆各种配置的备用的 actvity 2. 用 DexClassloader 加载 apk 中的代码 3. 对关键系统服务和注册的 activity 使用 InvocationHandler 创建 Proxy 对象 4. 有专门的入口拦截发送给插件 activity 的 Intent 和做进程调度 我只找到了进程调度的代码 还没找到拦截 Intent 部分 5. 拦截到启动插件的 activity 的 Intent 后 使用进程调度服务启动 3 中生成的 activity 的 Proxy 对象 这样就加载了并运行了未安装的 apk |
6
CRight 2015-08-27 21:23:01 +08:00 via Android
技术就是技术,不会无脑歧视 360 。
|
7
ljbha007 2015-08-27 21:32:06 +08:00
@cmzy
我这个思路是对的吧 主要就是先用各种 activitystub 占坑 然后用 activity 的 proxy 来接受来自系统的各种生命周期方法 再依次去调用插件 apk 里的各种生命周期方法 |
8
cmzy OP @ljbha007 差不多。但是实际比这复杂。我现在在家爪机上网打字不方便。建议你看下 doc 的 ppt 。它对整体思路有一个大致的总结
|
12
Epsil0n9 2015-08-27 21:45:31 +08:00
@CRight 360 “靠技术耍流氓”和“耍流氓受歧视”本身就不矛盾,技术一定程度上用钱来堆人才就成功一半了了,毕竟国内人更看重钱或者被所谓的“刚需”逼得看重钱
|
13
janxin 2015-08-27 22:00:50 +08:00
只是单纯 plugin 是没这么复杂的
|
14
StackGao 2015-08-27 22:04:36 +08:00 via Android
赞一个,但说不用修改目标 apk ,已经很牛逼了。
|
15
Mac 2015-08-27 22:51:00 +08:00
LZ 你们是想干什么。。。
|
16
49 2015-08-27 23:14:47 +08:00 via Android
你们把这种黑科技说出来真的好吗?
|
17
ljbha007 2015-08-27 23:44:13 +08:00
@est
@cmzy 深读了一下 基本上看懂了 1. 整个框架的入口时 PluginManager.getInstance ().installPackage () 2. 上述方法会调用 HandleFactory 中的初始化方法 3. HandleFactory 中初始化了 用于劫持所有系统关键服务的 Proxy 对象 4. 通过反射将 VM 中关键的系统服务对象替换为 Proxy 对象 5. 其中最关键的是 ActivityManager 以及其中的 startActivity 方法 6. Proxy 对象中的 startActivity 方法根据要启动的 Activity 的包名判断是否是插件 如果是则将启动 Activity 用的 Intent 替换为启动占坑 Activity 的 Intent 7. 通过 Classloader 动态加载插件 apk 里的代码 然后利用反射调用调用 makeApplication 8. 通过某种机制用动态加载的代码代替 stub activity ? 最后一步我没搞懂怎么实现的 |
18
BuilderQiu 2015-08-27 23:53:31 +08:00
叼叼叼。 强行假装了解了。
|
19
silvernoo 2015-08-27 23:53:32 +08:00
咋感觉 lz 逻辑这么乱肋
|
20
dahvlh 2015-08-27 23:58:38 +08:00 via iPad
居然可以这样 好神奇
|
22
Justrover 2015-08-28 00:11:10 +08:00
从应用的角度看,对用户百弊无一利。
从历史的角度看,可能会促进系统安全机制健全。 |
23
ljbha007 2015-08-28 00:12:54 +08:00
|
24
emric 2015-08-28 00:17:23 +08:00
赞。如果是 Google 出的, 你们又要跪舔了。
|
25
niklaus520 2015-08-28 01:04:41 +08:00
赞!手机助手的啊, cool
|
26
zqqf16 2015-08-28 01:10:40 +08:00
似乎有点同情广大安卓用户了……
|
27
Athrob 2015-08-28 03:13:04 +08:00
这...
|
28
realpg 2015-08-28 07:33:47 +08:00
楼主您好我是做黑产的投资人。
我不懂技术,我就问一下,我这边写个 APK 总被你们 360 当做恶意程序和病毒杀掉 我用你这个东西不安装直接去加载能行不? 不用告诉我技术细节,能行我就在 V2EX 雇俩技术攻关去…… |
30
cnhongwei 2015-08-28 07:58:40 +08:00
我靠,看来我不使用任何与周鸿祎相关的软、硬件产品是一个明智的决定。
|
31
realpg 2015-08-28 08:01:43 +08:00
@ljbha007
我就是这么想的啊,主程序又不会被杀 以前我的 workflow 是这样的,无论是偷偷的啊,还是去市场捐点钱起个高调的游戏名啊,反正让你装上 apk 就行了,这样是会被 360 报警这是个恶意程序不让装的…… 我现在去推广我的带插件系统的主程序就好了啊,然后把那个不让装的动态加载进来…… |
33
cmzy OP @realpg 不行的。 1.此机制还有大量缺陷,虽然不需要修改目标 apk ,但是仍需要知道运行原理。 2. 我们不建议将其用于非正当用途,对于插件机制的杀毒检测,我们也有方法。 3. 正常使用需要遵守 lgpl 授权。
|
35
clino 2015-08-28 09:11:58 +08:00
上面是装黑产让大家看清楚这个插件机制会被怎么滥用的吧?
反正 360 的东东我是不会用的,这个技术的用途是不是也很明显? 希望 google 能堵上这个... |
36
kyze8439690 2015-08-28 09:31:03 +08:00
不愧是 360 出的
|
38
baiyemao 2015-08-28 11:26:48 +08:00
楼主,你确定不会害人么。
|
39
xmoon 2015-08-28 11:39:31 +08:00
不 我觉得会被滥用 既然已经开源了 国内那些肯定不管你啥协议
|
40
fengkuok 2015-08-28 14:00:24 +08:00
这种东西不需要 root 权限吗?
|
41
WayneWangWM 2015-08-28 14:13:22 +08:00
Github 上还有一个 DynamicLoadApk 开源库了,不过还没完成
|
42
breaklayer 2015-08-28 15:28:10 +08:00
据说支付宝和微信也有自己的插件框架,不知道这几个有没有什么异同
|
43
029xue 2015-08-28 16:18:09 +08:00
https://github.com/Qihoo360/DroidPlugin/blob/master/project/Libraries/DroidPlugin/src/com/morgoo/droidplugin/PluginHelper.java line: 104
//解决小米 JLB22.0 4.1.1 系统自带的小米安全中心( lbe.security.miui )广告拦截组件导致的插件白屏问题 private void fuckMiUiLbeSecurity () throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException, IllegalAccessException { //卸载掉 LBE 安全的 ApplicationLoaders.mLoaders 钩子 Class ApplicationLoaders = Class.forName ("android.app.ApplicationLoaders"); 估计米厂的人也会写 fuck360Anything ()... 之类的方法。 国内这环境,猿类相轻。。。 |
44
iluhcm 2015-08-28 18:25:38 +08:00
这玩意儿小米早就开始用了...
另外阿里也有插件,不过只在内部开源. |
45
vmebeh 2015-08-28 18:35:09 +08:00
安卓手机是不是要爆发第一次管家大战了
|
46
KexyBiscuit 2015-08-29 08:49:37 +08:00 via Android
技术研究值得赞同, star 已送。
|
47
zhgg0 2015-08-30 12:04:56 +08:00
这样 360 加固宝还怎么扫描漏洞代码、广告?
|
48
w4lle 2015-09-01 14:49:56 +08:00
占坑
|
49
kaedea 2015-10-12 11:51:49 +08:00
对于 Service 的支持怎么样?
|