난독화된 Android 코드에 비밀 숨기기
ProGuard와 같은 도구를 사용하여 Android 코드를 난독화할 때 디컴파일 후에도 민감한 문자열이 계속 표시되는 것을 발견하는 것이 일반적입니다. . 이러한 문제를 해결하기 위해 다음은 엿보는 눈으로부터 문자열을 숨기는 몇 가지 전략입니다.
인코딩 및 암호화
ProGuard는 문자열을 숨기는 메커니즘을 제공하지 않습니다. 대신, 자체 인코딩이나 암호화 방법을 구현하는 것을 고려해 보세요. 기본적인 모호함의 경우 Base64와 같은 방법을 사용한 인코딩으로 충분할 수 있습니다. 보다 엄격한 보호를 위해 javax.crypto.Cipher와 같은 클래스를 통해 AES와 같은 대칭 암호를 사용하여 문자열을 암호화합니다.
문자열을 암호화하려면 애플리케이션에 암호화 키를 저장해야 하므로 보안이 손상될 수 있다는 점을 기억하세요.
예:
이전:
<code class="java">public class Foo { private String mySecret = "http://example.com"; }</code>
이후:
<code class="java">public class Foo { private String encrypted = "<manually created encrypted string>"; private String key = "<key used for encryption"; private String mySecret = MyDecryptUtil.decrypt(encrypted, key); }</code>
R 클래스 문자열
언급하신 R 클래스 문자열(예: 2130903058)은 리소스 ID에 대한 참조입니다. 이는 임의의 숫자가 아니라 레이아웃 파일과 같은 리소스를 가리킵니다. 난독화 중에는 코드 크기를 줄이기 위해 리소스에 대한 참조가 이러한 ID로 대체됩니다.
코드를 디컴파일할 때 내부 구조가 난독화 장치에 의해 손상되었기 때문에 R 클래스가 존재하지 않을 수 있습니다. 그러나 ID는 여전히 원본 리소스 참조를 나타냅니다.
타사 DRM
자체 보호를 구현하는 대신 전용 디지털 권한 관리(DRM) 솔루션을 사용하는 것이 좋습니다. 조치. Google은 맞춤형 솔루션보다 더 안전할 수 있는 Android용 라이선스 서비스를 제공합니다.
위 내용은 디컴파일 후 난독화된 Android 코드에서 민감한 문자열을 효과적으로 숨길 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!