2013-11-27 4 views
1

사용 후 내가 project.properties에 다음 줄을 주석 처리 Proguard와를 활성화 한이 파일 :안드로이드 Proguard와 : 클래스 및 자원 추출도 Proguard와

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 

내가 dex2jar를 사용하여 클래스 및 자원을 추출했을 때, 나는이었다 그대로 추출 할 수 있습니다. 클래스를 직접 추출하지 못하도록 프로젝트의 다른 파일/속성/구성을 변경해야합니까? project.properties (프로젝트 루트 위치) 또는 proguard.android 파일 (SDK 위치)에 몇 가지 구성 매개 변수를 추가해야합니까?

답변

0

릴리스 모드에서 응용 프로그램을 빌드하고 Eclipse에서 유효한 인증서와 내보내기 마법사를 사용하여 응용 프로그램을 내 보낸 후에 이런 현상이 발생 했습니까? 아니요 - 단계를 수행하십시오 : 프로젝트를 마우스 오른쪽 단추로 클릭하고 "내보내기"를 선택하고 "export android application"을 입력 한 다음 "기존 키 저장소 사용"또는 "새 키 스토어 작성"을 선택하고 마법사를 완료하십시오. ProGuard는 응용 프로그램을 릴리스 모드로 빌드 할 때만 실행됩니다.

+0

예. 이것은 릴리스 모드 (키 스토어 사용)로 앱을 만든 후에 발생합니다. –

2

"표준"Proguard obfuscator 속성 파일을 사용하고있는 것 같습니다. "고급"Proguard obfuscator 속성 파일을 사용해보십시오. 여기에 있습니다 :

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt 

코드는 약간 더 복잡하지만 전부는 아닙니다. 예를 들어 매니페스트 파일에서 선언했거나 Proguard에서 -keep 지시어로 선언 한 활동, 서비스, Java 클래스는 완전히 난독 화되지 않습니다.

참고 : 상업용 DexGuard을 사용해도 여전히 디 컴파일이 100 % 보호되지 않습니다. 숙련 된 해커들은 코드를 리버스 엔지니어링하여 원하는대로 수정하고 읽을 수있는 smali/baksmali 기술을 사용할 수 있습니다. 코드를 0과 1로 읽을 수 있다면 해킹 당할 수 있습니다.

0

클래스 및 리소스의 역 컴파일을 방지 할 수있는 방법은 없습니다. proguard와 같은 난독 화는 이름 munging, 문자열 munging 및 흐름 제어 변경을 통해 Java의 역 엔지니어링을 더욱 어렵게 만드는 도구입니다. 이전에 언급했듯이 모든 것이 항상 리버스 엔지니어링 될 수 있습니다. 난독 화는 장벽을 더 높게 만들고, 노력의 수준으로 인해 사람들이 코드를 리버스 엔지니어링하려는 것을 막기 위해 사용됩니다.

+0

내 apk가 내 리버스 엔지니어링을 완전히 막지 않도록하기위한 것이 아닙니다. 나는 코드 추출을 완전히 피할 수 없다는 것을 알고있다. 난 그냥 코드를 사용할 수 없는지 확인하고 싶습니다 - 현재, 내가 API를 리버스 엔지니어링하려고하면 모든 클래스와 리소스를 그대로 (동일한 클래스, 변수 이름) 얻을 수 있어요. 그리고 나는 프로 가드 속성의 주석을 제거한 후에도 –

관련 문제