qzuser 发表于 2022-8-16 16:25

申请会员ID:miqt



1、申 请 I D:miqt
2、个人邮箱:miqtdev@163.com
3、原创技术文章:

分享两个文章:

1. xposed 绕过app加壳保护的方式
2. Android部分机型,静态权限设置漏洞,强制获取手机权限

一、 xposed 绕过app加壳保护的方式


众所周知,在进行xposed逆向时,必须要先跨过对方app加壳这一关,下面我就分享一下我的一个过壳方式。



xposed 绕过 360 乐固等加固壳方案。


通过hook Android 启动App attachBaseContext 方法拿到classloader 和程序上下文。



XposedHelpers.findAndHookMethod("com.stub.StubApp",
                loadPackageParam.classLoader,
                "attachBaseContext",
                Context.class,
                new XC_MethodHook() {
                  @Override
                  protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                        super.afterHookedMethod(param);
                        //获取到Context对象,通过这个对象来获取classloader
                        Context context = (Context) param.args;
                        //获取classloader,之后hook加固后的就使用这个classloader
                        ClassLoader classLoader = context.getClassLoader();
                        //已经绕过360加固取得classloader
                  }
                });

二、Android部分机型,权限设置漏洞




发现小米 6 安全管家,即使我关闭了某些权限,但我一打开应用后,应用自己开启了权限,遂,反编译之,得以下反射强行设置权限代码。。


理论上手动开启权限也是使用以下的代码进行,因此只有系统应用可以使用。(但不排除某些厂商定制rom的过程中,漏掉了关键的验证,调用只有有可能是可行的)






AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class);
HashMap<String, Integer> map = (HashMap<String, Integer>) ClazzUtils.getObjectFieldObject(appOpsManager,"sOpStrToOp");
Method method = appOpsManager.getClass().getMethod("setMode",int.class,int.class,String.class,int.class);
int code = map.get(AppOpsManager.OPSTR_GET_USAGE_STATS);
int uid = Binder.getCallingUid();
String pkn = mContext.getPackageName();
int mode = AppOpsManager.MODE_ALLOWED;
method.invoke(appOpsManager,code,uid,pkn,mode);






再附上一个反编译小米安全管家设置权限的代码:




Object mAppOpsManager = context.getSystemService("appops");
ClazzUtils.invokeObjectMethod(mAppOpsManager, "setUserRestriction", new Class[]{Integer.TYPE, Boolean.TYPE, IBinder.class}, new Object[]{Integer.valueOf(24), Boolean.valueOf(true), new Binder()});
ClazzUtils.invokeObjectMethod(mAppOpsManager, "setUserRestriction", new Class[]{Integer.TYPE, Boolean.TYPE, IBinder.class}, new Object[]{Integer.valueOf(45), Boolean.valueOf(true), new Binder()});


Hmily 发表于 2022-8-16 17:27

抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。
页: [1]
查看完整版本: 申请会员ID:miqt