Java tutorial
//package com.java2s; /******************************************************************************* * Copyright (c) 2011 Adam Shanks (ChainsDD) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; public class Main { public static final int MALICIOUS_NOT = 0; public static final int MALICIOUS_UID = 1; public static int isPackageMalicious(Context context, PackageInfo packageInfo) { // If the package being checked is this one, it's not malicious if (packageInfo.packageName.equals(context.getPackageName())) { return MALICIOUS_NOT; } // If the package being checked shares a UID with Superuser, it's // probably malicious if (packageInfo.applicationInfo.uid == context.getApplicationInfo().uid) { return MALICIOUS_UID; } // Finally we check for any permissions that other apps should not have. if (packageInfo.requestedPermissions != null) { String[] bannedPermissions = new String[] { "com.noshufou.android.su.RESPOND", "com.noshufou.android.su.provider.WRITE" }; for (String s : packageInfo.requestedPermissions) { for (int i = 0; i < 2; i++) { if (s.equals(bannedPermissions[i]) && context.getPackageManager().checkPermission(bannedPermissions[i], packageInfo.packageName) == PackageManager.PERMISSION_GRANTED) { return i + 2; } } } } return MALICIOUS_NOT; } }