能力值:
( 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 171K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6k6h3y4#2M7X3W2@1P5g2)9J5k6i4c8W2L8X3y4W2L8Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6A6L8X3c8W2P5q4)9J5k6i4m8Z5M7q4)9J5c8X3!0H3k6h3&6K6L8%4g2J5j5$3g2Q4x3V1k6V1k6i4c8S2K9h3I4Q4x3V1j5I4y4#2)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4x3U0k6F1j5Y4y4H3i4K6y4n7 修改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 68eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6k6h3y4#2M7X3W2@1P5g2)9J5k6i4c8W2L8X3y4W2L8Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6A6L8X3c8W2P5q4)9J5k6i4m8Z5M7q4)9J5c8X3!0H3k6h3&6K6L8%4g2J5j5$3g2Q4x3V1k6V1k6i4c8S2K9h3I4Q4x3V1j5I4y4H3`.`.
修改d ...
好的 ,谢谢老哥!修改已经存在可以这样,那如果要加一个新的service,好像不能这样吧
最后于 2019-5-16 16:26
被Toseven编辑
,原因: 修改
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
Toseven
小黄鸭爱学习
修改 AndroidManifest.xml 可以参考app 523K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6k6h3y4#2M7X3W2@1P5g2)9J5k6i4c8W2L8X3y4W2L8Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6A6L8X3c8W2P5q4)9J5k6i4m8Z5M7l9`.`. ...
思路是一样的 如果你清楚的AndroidManifest.xml解析过程 (可以参考 5c2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6B7N6h3g2B7K9h3&6Q4x3X3g2A6L8g2)9J5c8X3g2F1N6s2u0&6i4K6u0r3y4e0M7&6k6U0m8T1y4K6V1I4y4U0g2S2j5X3b7H3x3o6j5I4x3e0g2U0y4h3p5@1i4K6t1&6就可以在 scanPakcageLI 方法里面干预整个解析过程 。具体实现周末我再看看,你可以试试。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
小黄鸭爱学习
思路是一样的 如果你清楚的AndroidManifest.xml解析过程 (可以参考 8e2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6B7N6h3g2B7K9h3&6Q4x3X3g2A6L8g2)9J5c8X3g2F1N6s2u0&6i4K6u0r3y4e0M7&6k6U0m8T1y4K6V1I4y4U0g2S2j5X3b7H3x3o6j5I4x3e0g2U0y4h3p5@1i4K6t1&6
就可以在 ...
恩恩,好的,我感觉有点陷入了死循环,scanPackageLI 方法里面需要一个Package参数,而解析就是在package中增加service对象,这个service.....我再理一理 ;谢谢哥!
|
|
|