gpt4 book ai didi

java - InApp 计费安全和远程方法调用

转载 作者:太空狗 更新时间:2023-10-29 22:58:38 27 4
gpt4 key购买 nike

我已经在一个应用中实现了应用计费,现在我想进一步保护它。阅读它声明的开发人员 Material :

In addition to running an obfuscation program, we recommend that you use the following techniques to obfuscate your in-app billing code.

Inline methods into other methods.

Construct strings on the fly instead of defining them as constants.

Use Java reflection to call methods.

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

混淆 - 好吧我能做到 = proguard

Inline methods into other methods - 这就是说,一旦我的代码完成,就尽可能地摆脱 OO 并将我的所有代码放在尽可能多的行中(对于我的应用程序的计费部分) 以一种方法?这包括内联类吗?在 android 示例中,他们有一个常量类,我会内联所有这些吗?

即时构造字符串 - 是的,所以移动所有类常量变量 - 好的混淆器应该涵盖这一点

使用 Java 反射 - 这是我的主要问题。我应该调用所有我的方法而不是调用它们吗?

为了节省我自己的精力,我可以这样做吗:

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
}

这是很好的安全性,还是仅仅是代码膨胀并使我的应用无法针对真正的用户问题进行调试?

谢谢。

最佳答案

当存在更高的盗版威胁时,这似乎是您可以调查的事情。如果反射有可能损害用户体验,我就无法证明仅将反射用于额外的混淆层是合理的。

关于java - InApp 计费安全和远程方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5492429/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com