所以我们现在经历了好几次,我们发布了一款游戏(价格便宜),而且有人将其破解并放在镜子上.我们为所有应用设置了Google快讯,因此我们每天都会告诉他们正在进行黑客攻击.到目前为止,我们已经实施了Google建议的许可服务,每次使用唯一设备ID启动许可时,我们都会随机生成盐.当应用程序第一次启动时,我们运行一次检查服务.然后,我们为密钥生成一个512字符的哈希值,并在那里从SharedPreferences中比较存储的值.
现在,我知道检查一次可能是应用程序被阻止的地方.我们的字节码很可能是在没有启动检查的行的情况下查看和重新编译的.
从这里开始,我不想混淆我们的代码,因为我之前已经看过它.我想要更加坚实的东西,我也想学习如何正确地做到这一点.我对学习更感兴趣而不是赚钱,因为只有2%的人会寻找黑客版本.
到目前为止,就我自己而言,我已经提出了一个随机数发生器,它位于游戏的几个启动区域.启动时(例如,50次中的1次),将检查许可证.我知道这会使黑客更难攻击,因为破解者必须消除每个案例,编译,消除,编译.然而,这种方法仍然是可以破解的...所以你们有什么建议?同样,我对这个安全过程非常感兴趣,所以请教育,不要把它变成关于混淆的讨论或根据时间戳定期检查.
谢谢
我试图在 Dart 中构造一个需要命名构造函数的抽象类。给定一些 Map (m),该泛型类型必须能够实例化自身。
Dart 编译器抛出异常T.fromJson -> Invalid constructor name.
我尝试对此进行编码:
abstract class JsonMap<T> {
Map toJson();
T.fromJson(Map m);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Yii2并尝试在我的用户名上实现规则,以便始终存储它们并以小写形式进行比较.如果有规则我可以用来实现这个目标吗?
例如,我有一个函数来检查数据库中是否存在用户名.我想避免逻辑错误并尽可能实现全局规则.谢谢你的任何提示!
Yii2规则:
/**
* @inheritdoc
*/
public function rules()
{
return [
[['username', 'password'], 'required'],
[['access_level'], 'integer'],
[['username'], 'string', 'max' => 50], // force lowercase?
[['username_print'], 'string', 'max' => 50],
[['password'], 'string', 'max' => 512],
[['email'], 'string', 'max' => 250],
[['username'], 'unique']
];
}
Run Code Online (Sandbox Code Playgroud) 相当直接的问题。有谁知道 Google Play App Signing 是否支持 Instant Apps?我问的原因:
输入您的应用程序的签名配置,或选择一个密钥库文件。虽然可以在测试期间使用调试配置或密钥库,但生成的数字资产链接文件将与您的应用程序的发布版本不兼容。如果您确实上传了使用调试配置或密钥库的数字资产链接文件,则在发布应用程序之前,您需要生成并上传使用应用程序发布密钥的新数字资产链接。
来自博客文章:-如何创建即时应用功能
如果此声明属实,播放控制台是否提供了生成assetlinks.json? 这是您必须在声称附属的域上托管的文件。
android google-play android-app-signing android-instant-apps