Android-приложение предотвращает изменение - PullRequest
0 голосов
/ 27 июня 2018

После поиска в Google я обнаружил, что мое бесплатное приложение с рекламой публикуется на некоторых сайтах с заголовком "app_name_ad_free_mod_hacked", после попытки установить это приложение в моем личном телефоне оно работает правильно, но реклама не показывается. Даже я заметил, что это не делает запрос рекламы.

Есть ли какое-либо решение для предотвращения изменения приложения?

P.S .: Я использую ProGuard и декомпилировал модифицированный APK, и я не вижу никаких отличий от оригинального приложения.

Объявления инициализируются в моем коде, как показано ниже:

При onCreate() из MainActivity:

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) {}
    }

Может быть, кто-то просто добавляет комментарий к вызову метода или в базу данных, если проверка, но как это предотвратить?

1 Ответ

0 голосов
/ 27 июня 2018

Создание взлома невозможно: я не знаю, есть ли ответ.

Что вы можете сделать: Есть несколько платных инструментов, таких как dexguard . Вы можете использовать их. Платная альтернатива, вероятно, будет работать лучше, чем бесплатная.

Впрочем, эксперт может проникнуть в ваш код. Но взлом dexguard не простая игра. Кроме того, он выполняет самозащиту во время выполнения, оптимизацию кода и т. Д.


Некоторые из моих неиспользованных идей: :-P | Клиентская сторона

  • Проверьте местоположение, откуда было установлено приложение. Используйте PackageManager
  • Проверка подписи установленного приложения / Размещение подписи на сервере | Проверьте, соответствует ли тот, с которым приложение подписано
  • Создайте код, который даже вы не можете прочитать после дня его окончания. Плохо назовите классы, неправильно назовите их. Например: класс ABACAS обрабатывает задачу ABACAS и класс SACABA выполняет задачу SACABA - дают им обратное имя. Кроме того, метод делегат возвращает значение, называемое делегат , а метод stack возвращает stack . Обратно назовите их.

Это означает: класс ABACAS сделает SACABA и SACABA сделает ABACAS & метод делегат вернет стек и метод стек вернет делегат


Если ваше приложение зависит от сервера (я имею в виду, что ваше приложение просто клиент, сервер выполняет задачу, имеет API и отправляет-получает). О, у тебя все сделано. Просто попросите ваше приложение для подписи с сервера. Если signature.match сделать дальше, иначе вернитесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...