Android App防止被修改

时间:2018-06-27 16:16:55

标签: java android admob

在谷歌搜索后,我发现我的带有广告的免费应用程序已在一些标题为“ app_name_ad_free_mod_hacked”的网站上发布,尝试在我的个人电话中安装此应用程序后,它可以正常运行,但广告没有展示。甚至,我注意到它没有发出广告请求。

有什么解决方案可以防止对该应用进行修改?

PS:我正在使用ProGuard,并且已经反编译了修改后的APK,与原始应用没有任何区别。

广告在我的代码中初始化如下:

List<DictionaryEntry>的{​​{1}}处:

object[]

和方法:

onCreate()

也许有人只是在方法调用或数据库中插入注释(如果检查),但是如何防止这种情况?

1 个答案:

答案 0 :(得分:3)

使黑客无法进行:我不知道是否有答案。

您可以做的是:有一些付费工具,例如dexguard。您可以使用它们。有偿替代方案可能比无偿替代方案更好。

尽管如此,一位专家可能会进入您的代码。但是,破解dexguard并不是一个简单的游戏。 此外,它还可以进行运行时自我保护,代码优化等


我一些未使用的想法::-P |客户端

  • 检查应用程序的安装位置。使用 PackageManager
  • 验证已安装的应用程序的签名/将签名放置在服务器中|检查是否与签名应用程序的那个匹配
  • 完成一天的代码,甚至您也看不到。 严重命名类,错误命名它们。像:类 ABACAS 处理任务 ABACAS ,类 SACABA 处理任务 SACABA -给它们取反名。同样,方法 delegate 返回一些值,称为 delegate ,方法 stack 返回 stack 。取反的名字。
  

这意味着:类 ABACAS 将执行 SACABA SACABA    ABACAS 和方法 delegate 将返回 stack ,而方法 stack 将返回 delegate


如果您的应用程序依赖于服务器(我的意思是您的应用程序只是一个客户端,则服务器将执行任务,具有API并执行收发操作)。哦,您已完成所有工作。只需向您的应用询问服务器的签名即可。如果#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class MFRC522::MIFARE_Key key; // Init array that will store new NUID byte nuidPICC[10]; void setup() { Serial.begin(9600); SPI.begin(); // Init SPI bus rfid.PCD_Init(); // Init MFRC522 for (byte i = 0; i < 6; i++) { key.keyByte[i] = 0xFF; } printHex(key.keyByte, MFRC522::MF_KEY_SIZE); Serial.println(); } void loop() { if ( ! rfid.PICC_IsNewCardPresent()) return; if ( ! rfid.PICC_ReadCardSerial()) return; // Serial.print(F("PICC type: ")); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); // Serial.println(rfid.PICC_GetTypeName(piccType)); // Check is the PICC of Classic MIFARE type if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("Your tag is not of type MIFARE Classic.")); return; } // Store NUID into nuidPICC array for (byte i = 0; i < 4; i++) { nuidPICC[i] = rfid.uid.uidByte[i]; } printHex(rfid.uid.uidByte, rfid.uid.size); Serial.println(); // Halt PICC rfid.PICC_HaltA(); // Stop encryption on PCD rfid.PCD_StopCrypto1(); } void printHex(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.print(buffer[i], HEX); } } 接下来执行,则返回。