Приложения Android Settings (Android ~4.0 - 4.4) имеет уязвимость с помощью которой можно запускать неправомерные задания, например MASTER_CLEAR, отправка СМС, без наличия необходимых permision.
Я хочу написать небольшой модуль для XPosed Framework(фреймворк который может манипулировать системными java классами), который должен предотвращать запуск PendingIntent из системными правами.
Принцип роботы уязвимости:
seclists.org/fulldisclosure/2014/Nov/81
Код который запускает PendingIntent который может выполнить вредоносное действие:
private void addAccount(String accountType) {
Bundle addAccountOptions = new Bundle();
mPendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(), 0);
addAccountOptions.putParcelable(KEY_CALLER_IDENTITY, mPendingIntent);
addAccountOptions.putBoolean(EXTRA_HAS_MULTIPLE_USERS, Utils.hasMultipleUsers(this));
AccountManager.get(this).addAccount(
accountType,
null, /* authTokenType */
null, /* requiredFeatures */
addAccountOptions,
null,
mCallback,
null /* handler */);
mAddAccountCalled = true;
}
Вот как хочу отменить запущенный PendingIntent
//Вытаскиваю Context и переменную mPendingIntent
Context context = (Context) param.thisObject;
Field field = findField(param.thisObject.getClass(), "mPendingIntent");
PendingIntent mPendingIntent = (PendingIntent) field.get(context);
//отменяю её
mPendingIntent.cancel();
//.... остальной код