2017-07-12 13 views
2

私は、自分のデバイスにPHA(潜在的に有害なアプリケーション)がインストールされていると(他のSafetyNetデータのなかから)ユーザーに報告するAndroidアプリを作成しています。Testing SafetyNetClient.listHarmfulApps()

私はSafetyNet Verify Apps APIを使用しています。 isVerifyAppsEnabled()への私の呼び出しは正常に動作していますが、listHarmfulApps()への呼び出しは何も起こりません。

両方が構文上同じであるので、私は私のコードがOKであると考えていますが、ここではそれはとにかく、次のとおりです。

SafetyNetClient safetyNetClient = SafetyNet.getClient(this.getContext()); 

safetyNetClient.listHarmfulApps() 
     .addOnCompleteListener(new OnCompleteListener<SafetyNetApi.HarmfulAppsResponse>() { 
      @Override 
      public void onComplete(@NonNull Task<SafetyNetApi.HarmfulAppsResponse> task) { 
       Log.d("FragmentSafetyNet", "Received listHarmfulApps() result"); 

       if (task.isSuccessful()) { 
        SafetyNetApi.HarmfulAppsResponse result = task.getResult(); 

        List<HarmfulAppsData> appList = result.getHarmfulAppsList(); 
        if (appList.isEmpty()) { 
         Log.d("FragmentSafetyNet", "There are no known potentially harmful apps installed."); 
        } else { 

         Log.e("FragmentSafetyNet", "Potentially harmful apps are installed!"); 

         for (HarmfulAppsData harmfulApp : appList) { 
          Log.e("FragmentSafetyNet", "Information about a harmful app:"); 
          Log.e("FragmentSafetyNet", " APK: " + harmfulApp.apkPackageName); 
          Log.e("FragmentSafetyNet", " SHA-256: " + harmfulApp.apkSha256); 
          Log.e("FragmentSafetyNet", " Category: " + harmfulApp.apkCategory); 
         } 
        } 
       } else { 
        Log.d("FragmentSafetyNet", "An error occurred. " + 
          "Call isVerifyAppsEnabled() to ensure " + 
          "that the user has consented."); 
       } 
      } 
     }) 
     .addOnSuccessListener(new OnSuccessListener<SafetyNetApi.HarmfulAppsResponse>() { 
      @Override 
      public void onSuccess(SafetyNetApi.HarmfulAppsResponse harmfulAppsResponse) { 
       Log.d("listHarmfulApps()", "Sucess! Received listHarmfulApps() result"); 
      } 
     }) 
     .addOnFailureListener(new OnFailureListener() { 
      @Override 
      public void onFailure(@NonNull Exception e) { 
       Log.e("listHarmfulApps()", "Error: " + e.getMessage()); 
      } 
     }); 

本当にコードにあまりありません:それは基本的に適応Google's page上のコードでありますGMS 11.0.2で新しいAPI呼び出しを使用してください(前述の例では廃止された呼び出しをすべて使用しています)が、全く機能していません。リスナーのどれも起動されていません。

私は何かを混乱させるか、単に私がテストしているデバイスにPHAがないだけです。

私の3つの質問

1)私のコードは正しいですか?

2)私がインストールできるPHAは、ブラックリストに載せられ、リストに表示されますが、実際には有害ではありません。 (アンチウイルスソフトウェアのテストに使用されたEICARウイルスのような)。

3)最後に、(1)と(2)が不可能な場合、インストールできるPHAはありますか?この場合、私は後で拭いてくれる根ったエミュレータのように、制御された使い捨ての環境を使用します。

ありがとうございます。この問題の結果に興味のある人のための

答えて

2

は、ここで私はそれを解決方法は次のとおりです。

1)v4.Fragmentから呼び出されていた私のコードのいくつかのミスがありました。私のアプリは、活性を有しているので、この行:

SafetyNetClient safetyNetClient = SafetyNet.getClient(this.getContext());

は次のようになります。

SafetyNetClient safetyNetClient = SafetyNet.getClient(this.getActivity());

(のgetContext()からの変化に気づく - > getActivityを())

2 )これはではなく、エミュレータで動作します。期間。理由は、listHarmfulApps()はApps Verifyが有効な場合にのみ機能し、エミュレータでは有効にできないためです。

3)Android携帯(Galaxy S3)の1つを一時的に犠牲にして、同僚の開発者から送られたマルウェアサンプル(実際のマルウェアAPK)を感染させなければなりませんでした。そうするために、私はそれをメモリとSIMカードを取り外し、それから個人情報を削除しました(私は使い捨てのものを使いました...)、それを私の家のWi-Fiから隔離された私のゲストwi-fiに接続しました。マルウェアAPKはADB経由でインストールされました。いくつかのバンキングアプリケーションを開いて「起動」してからスキャンしました。あまりにも私は印刷画面を忘れて悪いです。

4)後で私は、マルウェアのテストを見つけるためにGoogleで誤った検索パターンを使用していることがわかりました。サンプルのマルウェアをダウンロードできるサイトが数多くあります。その中には無料登録が必要なものもあります。

5)(4)と(5)の手順では、テストファイル(EICARなど)ではなく実際のマルウェアを扱っていたため、実際の危険性を示し、 。それは軽いトリガと無防備の装填された銃を扱うようなものでした!

6)GS3は、マルウェアのないことを証明するために、ストックROMで再読み込みする必要がありました。

7)アプリが終了し、Playストアに公開されています:https://play.google.com/store/apps/details?id=com.alxdroiddev.gs3identity

おかげで私を助けた人2600ハッカーグループのものに。

+0

マルウェアを取得するために使用したウェブサイトの一部を共有できますか?さらに重要なことに、マルウェアがSafetyNet APIをトリガーし、APIがそれらのAPKを有害なものとしてリストアップしましたか? – Tyson

+0

こんにちは@Tyson、私はStackOverflowでここに投稿することはできませんが、私は見つけるのは難しいですね。 Gmailのドットコムを自分のユーザー名に追加して、私と連絡を取ってください。 – AlxDroidDev

+0

いくつかのマルウェアアプリケーションが見つかりました。 Apps APIを検証すると、そのアプリがマルウェアであることが識別され、VerifyAppsConstant intが返されます。私はこのアプリについてもっと知りたいと思います。例えば、 'x'マルウェアが自分の写真をサードパーティのサーバーに送っているなら、それについて具体的に説明したいと思います。現在、私のデータは共有されていると言えますが、どのような種類のデータが共有されているのか分かりません。どのように私はウイルス 'x'の詳細を取得することができますか? – Tyson