수색…


앱 서명 확인 - Tamper 감지

이 기술은 .apk가 개발자 인증서로 서명되었는지 확인하는 방법을 자세히 설명하고 인증서가 일관성을 유지하며 사용자 만 액세스 할 수 있다는 사실을 활용합니다. 우리는이 기술을 다음 세 단계로 나눌 수 있습니다.

  • 개발자 인증서 서명을 찾으십시오.
  • 서명을 앱의 문자열 상수에 포함합니다.
  • 런타임시 서명이 임베디드 개발자 서명과 일치하는지 확인하십시오.

코드 스 니펫은 다음과 같습니다.

private static final int VALID = 0;
private static final int INVALID = 1;

public static int checkAppSignature(Context context) {

try {
      PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);

      for (Signature signature : packageInfo.signatures) {

        byte[] signatureBytes = signature.toByteArray();

        MessageDigest md = MessageDigest.getInstance("SHA");

        md.update(signature.toByteArray());

        final String currentSignature = Base64.encodeToString(md.digest(), Base64.DEFAULT);

        Log.d("REMOVE_ME", "Include this string as a value for SIGNATURE:" + currentSignature);

        //compare signatures
        if (SIGNATURE.equals(currentSignature)){
          return VALID;
        };
      }
    } catch (Exception e) {
        //assumes an issue in checking signature., but we let the caller decide on what to do.
    }

    return INVALID;

}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow