【问题标题】:Check if package name changed检查包名是否更改
【发布时间】:2018-11-07 13:35:24
【问题描述】:

我想通过显示Toast 来保护我的 APK 免受逆向工程,或者在包名称更改时执行一些操作,现在如果包更改,应用程序将停止工作。

if (getPackageName().compareTo("com.apk.example") != 0) {

    String error = null; 
    error.getBytes();
}

【问题讨论】:

  • 这是什么问题,你需要更具体一些
  • 我想检查我的应用程序包名称是否等于我上面给出的一个,或者不是,以避免从 Play 商店窃取我的 APK。如您所见,如果我的应用程序包名称发生更改,它将阻止应用程序启动!我希望你能理解。
  • 我不推荐这种方法,因为逆向工程师可以看到应用程序崩溃的位置,并且可以简单地删除这个 if 语句。相反,修改应用程序,使其在其他地方崩溃。另外,确保你混淆了包名
  • @ZUNJAE 真的吗?他怎么能看到错误?我正在使用 APK 工具。
  • @zomba 那个东西叫做 logcat。

标签: java android apk reverse-engineering


【解决方案1】:

您需要检查您的包名称和应用程序 ID,以确保您的应用程序没有被篡改:

String yourPackageName = "com.apk.example"; // android package name
String packageName = getApplicationContext().getPackageName();

// can be different from your package name if you're using flavor
// in app.build.gradle, 
String yourApplicationId = "com.apk.example"; 

if(packageName.equals(yourPackageName) && BuildConfig.APPLICATION_ID.equals(yourApplicationId)) {
   // no problem here
} else {
   // app is tampered, do something
}

【讨论】:

  • 我尝试了您的代码并得到 tis 错误:Cannot resolve symbol 'BuildConfig
  • @zomba:抱歉,有错字:Build.BuildConfig.APPLICATION_ID 应该是BuildConfig.APPLICATION_ID
猜你喜欢
  • 2013-06-08
  • 2018-06-04
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多