xposed精简布局dex篇
今天的受害者是我开发的:VIP模块
工具:开发者助手,mt管理器
精简常用的方法:
1.通过字段定位修改
2.通过id定位修改
3.通过id或者字段定位父布局修改
1.字段方法
使用开发助手找到控件的id,去dex里搜索0x7f080005,然后转成Java,id调用的字段是”模块激活”,接下来就可以去除了,怎么开发模块我就不说了





代码:
- XposedHelpers.findAndHookMethod(“com.android.module.MainActivity”, loadPackageParam.classLoader, “onCreate”,Bundle.class, new XC_MethodHook() {
- @Override
- protected void afterHookedMethod(MethodHookParam param) throws Throwable {
- super.afterHookedMethod(param);
- //变量 a 是自己随便取,后面的就是写找到的字段
- //只有不定位子控件和修改控件,单纯精简,前面View是通用的
- View a = (View) XposedHelpers.getObjectField(param.thisObject,”模块激活”);
- a.setVisibility(View.GONE);
- }
- }
- );
复制代码
运行效果:
2.id方法
发现想修改的控件没有id,那么就找它的父布局,发现有id,我们就搜索它



转成Java后发现整个代码都没有id调用的字段,这里的方法1就用不了
那么使用id的方法
- XposedHelpers.findAndHookMethod(“com.android.module.MainActivity”, loadPackageParam.classLoader, “InitializeLayout”, new XC_MethodHook() {
- @Override
- protected void afterHookedMethod(MethodHookParam param) throws Throwable {
- super.afterHookedMethod(param);
- View a = (View)XposedHelpers.callMethod(param.thisObject,”findViewById”,0x7f080006);
- a.setVisibility(View.GONE);
- }
- }
- );
复制代码
运行效果:
3.布局定位
在方法2里的控件全部去除了,我们只是想隐藏”我的听书”这个布局,方法2的代码就稍微改一下,方法2隐藏的是父布局,那么就可以定位它的子控件,0是它第一个控件,1是第二个,以此类推。
- XposedHelpers.findAndHookMethod(“com.android.module.MainActivity”, loadPackageParam.classLoader, “InitializeLayout”, new XC_MethodHook() {
- @Override
- protected void afterHookedMethod(MethodHookParam param) throws Throwable {
- super.afterHookedMethod(param);
- //这里定位子控件不能使用View,使用Java代码里对应的布局LinearLayout
- LinearLayout a = (LinearLayout)XposedHelpers.callMethod(param.thisObject,”findViewById”,0x7f080006);
- //我的听书是第一个控件就填0
- a.removeViewAt(0);
- }
- }
- );
复制代码
运行效果:
发表评论