InApp Billing Security и метод удаленного вызова метода

Я реализовал в приложении биллинг в приложении, и теперь я хочу закрепить его немного больше. Читая материал разработчика, он заявляет:

В дополнение к запуску программы обфускации, мы рекомендуем использовать следующие методы для обфускации кода выставления счетов в приложении.

Встроенные методы в другие методы.

Построить строки "на лету" вместо определения их как констант.

Использовать отражение Java для вызова методов.

http://developer.android.com/guide/market/billing/billing_best_practices.html

Обфускация - отлично, я могу сделать это = proguard

Встроенные методы в другие методы - это высказывание, когда мой код завершен, избавиться от большого количества OO, как я могу, и поместить весь мой код в столько строк, сколько я могу (для биллинговой части моего приложения) одним способом? Включает ли это встраивание классов? В примере с андроидом у них есть класс констант, я бы ввел все это?

Строить строки на лету - да, так что перемещайте все постоянные переменные класса в строке - штрафная защита должна охватывать этот

Использовать Java Reflection - это мой главный вопрос. Должен ли я вызывать все мои методы вместо их вызова?

Чтобы сэкономить, я мог бы сделать это:

private static Object invokeMethod(String name, Class<?>[] params, Object[] args){
    try {
        return MySpecificClass.class.getMethod(name, params).invoke(null, args);
    } catch (IllegalArgumentException e) {
        // Should never happen in my code, ignore and cancel in app charge
    } catch (SecurityException e) {
        // Should never happen in my code, ignore and cancel in app charge
    } catch (IllegalAccessException e) {
        // Should never happen in my code, ignore and cancel in app charge
    } catch (InvocationTargetException e) {
        // Should never happen in my code, ignore and cancel in app charge
    } catch (NoSuchMethodException e) {
        // Should never happen in my code, ignore and cancel in app charge
    }
    return null;
}

Тогда я мог бы делать такие вещи:

private static boolean someMethod() {
    return true; // just an example
}

params = new Class<?>[0];
    if ((Boolean) invokeMethod("someMethod", params, null)) {
        // Do something
    }

Является ли это хорошей защитой, или это просто раздувание кода и непригодность моего приложения к неподдельным проблемам пользователей?

Спасибо.

Ответы

Ответ 1

Это похоже на то, что вы могли бы изучить, когда есть более выраженная угроза пиратства. Я бы не смог оправдать использование отражения только для дополнительного слоя обфускации, если бы у него был шанс скомпрометировать пользовательский интерфейс.