2016-11-24 3 views
0

검색 후 나는 proguard가 문자열 값을 난독화할 수 없다는 것을 알고 있습니다. char [] 유형을 시도했지만 decompiling 후 변수의 내용을 볼 수 있습니다. 그렇다면 정적 문자열 변수를 난독 화하는 해결책이 있습니까? 난 obscuscating 후 adresse (문자열) 내 코드에서 비밀로해야합니다.obfuscate 문자열 값 java android

코드는 디 컴파일

public static final char[] f4516b; 
.... 
static { 
    f4516b = new char[]{'h', 't', 't', 'p', ':', '/', '/', '1', '0', '0', '.', '1', '0', '.', '1', '0', '0', '.', '1', '0', '/'}; 
+1

왜 사람들이 귀하의 프로그램을 귀하의 URL을보기 위해 디 컴파일 할 것이라고 생각하십니까? – Gabriel

+0

웹 서비스를 사용하여 디 컴파일 후 해당 주소로 아무 것도 할 수 있습니다. 해당 문자열을 숨길 필요가 있습니다. – nouha

+0

@nouha 얻을 수는 있지만 소스 문자열을 잘못 표시하면 많은 도움이되지 않습니다. 루팅 된 장치 또는 에뮬레이터에서 모든 네트워크 트래픽을 모니터링하고 ip/hostname을 쉽게 찾을 수 있습니다. 왜 누군가는 앱으로 할 수없는 주소로 무엇을 할 수 있다고 생각합니까/왜 이것이 문제입니까? – Gumbo

답변

2

후에는 응용 프로그램 내에서 오프라인 비밀의 어떤 종류를 유지할 수있는 방법이 없습니다. 애플리케이션이 어느 시점에서 작동해야하는 경우 자동으로 리버스 엔지니어링 할 수 있습니다. 그렇지 않으면 애플리케이션에 필요한 정보가 부족합니다.

1

해시 또는 소금과 같은 난독 화 메소드를 생성하고 난독 화 문자열을 정적 변수에 보관할 수 있습니다. 따라서 디 컴파일 할 때 문자열이 표시되지 않습니다.

그러나 사용자가 난독 화 방법을 사용하는 경우 사용자 문자열을 갖게됩니다. 또한 원격 호출 주소는 wireshark 또는 이와 유사한 방법으로 나가는 웹 호출을 수신하면 항상 사용할 수 있습니다.

+0

설명해 주셔서 감사합니다. 난독 화를 도와 주시겠습니까? 그냥 예를 들어, 또는 해결책을 sothe입니까? – nouha

1

URL을 숨기지 않는 것이 좋습니다. 그것은 네트워크 계층에서 볼 수 있습니다. 다른 사람이 귀하의 웹 사이트에 액세스하는 것을 막으려면 HTTPS를 통한 기본 인증을 사용하고 Android NDK (예를 들어)를 사용하여 비밀을 숨길 수 있습니다. 그것은 여전히 ​​디 컴파일 될 수 있지만 훨씬 더 어려울 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 솔루션의 예를 볼 수 있습니까? 나는 Androi NDK를 사용하여 비밀을 숨기는 방법을 모른다. PLZ에 대해 설명해 주시겠습니까? – nouha