gpt4 book ai didi

java - Android App 防止被修改

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:48 25 4
gpt4 key购买 nike

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

有什么解决方案可以防止应用被修改?

P.S: 我正在使用 ProGuard,我已经反编译了修改后的 APK,我没有发现与原始应用程序有任何区别。

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

MainActivityonCreate() 处:

MobileAds.initialize(getApplicationContext(), "admob_app_id");
mAdView = findViewById(R.id.adView_fragment_ads);
layout_ads = findViewById(R.id.layout_fragments_ads);
start_ad();

和方法:

private void start_ad() {
try {
if (data_ne_db[0].equals("jo")) {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice(getResources().getString(R.string.ads_test_device))
.addTestDevice(getResources().getString(R.string.ads_test_device_facebook))
.build();
//mAdView.setAdUnitId(getResources().getString(R.string.ads_kryesorja_poshte));
//mAdView.setAdSize(AdSize.LARGE_BANNER);
mAdView1.loadAd(adRequest);
mAdView1.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
mAdView1.resume();
mAdView1.setVisibility(View.VISIBLE);
u_inicializua = true;
}

@Override
public void onAdClosed() {
Log.e("ADDD CLOSEEEED", "Ads is closed by user)");
}

@Override
public void onAdFailedToLoad(int errorCode) {
mAdView1.pause();
Log.e("AD FRAG 2", "Ads failed to load" + " error : " + errorCode);
u_inicializua = false;
}
@Override
public void onAdLeftApplication() {
}

@Override
public void onAdOpened() {
}
});
}
} catch (Exception ignored) {}
}

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

最佳答案

让黑客成为不可能:我不知道是否有答案。

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

不过,专家可能会阅读您的代码。但是,破解dexguard不是一个简单的游戏。此外,它还执行运行时 self 保护、代码优化等


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

  • 检查应用程序的安装位置。使用 PackageManager
  • 验证安装的应用程序的签名/在服务器中放置签名 |检查是否与应用程序签名的匹配
  • 编写一天完成后连你都看不懂的代码。 Badly 命名类,错误地命名它们。例如:类 ABACAS 处理任务 ABACAS 和类 SACABA 执行任务 SACABA - 给它们倒过来的名字。此外,方法 delegate 返回一些名为 delegate 的值,方法 stack 返回 stack。反向命名它们。

That means: Class ABACAS will do SACABA and SACABA will do ABACAS & method delegate will return stack and method stack will return delegate


如果您的应用程序依赖于服务器(我的意思是您的应用程序只是一个客户端,服务器执行任务,具有 API 并进行发送-接收)。只需向您的应用询问服务器的签名即可。如果下一个签名匹配,则返回。

关于java - Android App 防止被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51067342/

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