能力值:
( LV2,RANK:10 )
|
-
-
2 楼
4年 andorid开发经验 表示 读不懂
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
额 就是hook修改清单文件呀
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
xml最终也是解析的,直接改解析后的结果,比如加多一个静态接收器,服务
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
我是一只马鹿
xml最终也是解析的,直接改解析后的结果,比如加多一个静态接收器,服务
老哥,那应该在哪修改呢,我找到com.android.server.pm.PackageManagerService里面,有个scanPackageTracedLI方法,是解析apk的吧,您知道吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
Toseven
老哥,那应该在哪修改呢,我找到com.android.server.pm.PackageManagerService里面,有个scanPackageTracedLI方法,是解析apk的吧,您知道吗?
xxx.content.pm.Parser这个类是解析apk的
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
我是一只马鹿
xxx.content.pm.Parser这个类是解析apk的
android.content.pm.PackageParser对吧,我在pms类里面的方法找到的
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
Toseven
android.content.pm.PackageParser对吧,我在pms类里面的方法找到的
应该是,源码太多东西,我只记得大概
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
修改 AndroidManifest.xml 可以参考app https://security.tencent.com/index.php/opensource/detail/17 修改debugable节点 其他节点类似 反编译后的核心代码如下 ``` public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable { XposedBridge.hookAllMethods(XposedHelpers.findClass("com.android.server.pm.PackageManagerService", lpparam.classLoader), "getPackageInfo", new XC_MethodHook() { /* access modifiers changed from: protected */ public void afterHookedMethod(MethodHookParam param) throws Throwable { PackageInfo packageInfo = (PackageInfo) param.getResult(); if (packageInfo != null) { ApplicationInfo appinfo = packageInfo.applicationInfo; int flags = appinfo.flags; Log.i("BDOpener", "Load App : " + appinfo.packageName); Log.i("BDOpener", "==== After Hook ===="); if ((flags & 32768) == 0) { flags |= 32768; } if ((flags & 2) == 0) { flags |= 2; } appinfo.flags = flags; param.setResult(packageInfo); Log.i("BDOpener", "flags = " + flags); Main.isDebugable(appinfo); Main.isBackup(appinfo); } } }); }
public static boolean isDebugable(ApplicationInfo info) { try { if ((info.flags & 2) != 0) { Log.i("BDOpener", "Open Debugable"); return true; } } catch (Exception e) { } Log.i("BDOpener", "Close Debugable"); return false; }
public static boolean isBackup(ApplicationInfo info) { try { if ((info.flags & 32768) != 0) { Log.i("BDOpener", "Open Backup"); return true; } } catch (Exception e) { } Log.i("BDOpener", "Close Backup"); return false; } ```
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
小黄鸭爱学习
修改 AndroidManifest.xml 可以参考app https://security.tencent.com/index.php/opensource/detail/17
修改d ...
好的 ,谢谢老哥!修改已经存在可以这样,那如果要加一个新的service,好像不能这样吧
最后于 2019-5-16 16:26
被Toseven编辑
,原因: 修改
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
Toseven
小黄鸭爱学习
修改 AndroidManifest.xml 可以参考app https://security.tencent.com/index.php ...
思路是一样的 如果你清楚的AndroidManifest.xml解析过程 (可以参考 https://juejin.im/entry/579f0b79165abd006115c5a4) 就可以在 scanPakcageLI 方法里面干预整个解析过程 。具体实现周末我再看看,你可以试试。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
小黄鸭爱学习
思路是一样的 如果你清楚的AndroidManifest.xml解析过程 (可以参考 https://juejin.im/entry/579f0b79165abd006115c5a4)
就可以在 ...
恩恩,好的,我感觉有点陷入了死循环,scanPackageLI 方法里面需要一个Package参数,而解析就是在package中增加service对象,这个service.....我再理一理 ;谢谢哥!
|
|
|