출처: http://m.blog.naver.com/mearee/220042040502
================= 원문 =================
JavaProtect V1.5 User Guidebook
2014/07/28 - 프로그램이 업데이트 되었습니다.
자세한 정보는 다음 링크를 이용하세요.
http://blog.naver.com/mearee/220074899746
프로그램 다운로드 URL: http://1drv.ms/1nSahuJ
매뉴얼 다운로드 : http://1drv.ms/1lRrRxP
내용 목차
그림목차
[그림 9] APK Sign을 위한 Argument 8
[그림 24] 등록된 이름변경이 안 되야 할 목록들 11
[그림 25] 이름변경이 안되 야할 것들의 설정버튼 11
- JavaProtect란?
자바프로텍트는 기존 자바로 만들어진 소스코드를 난독화 하여 해당 소스코드를 보호하는 기능을 가지고 있습니다.
자바로 만들어진 프로그램의 경우 플랫폼의 독립성을 위해 바이너리 컴파일을 하는 게 아닌 중간 바이트코드로 컴파일 되기 때문에 디컴파일이 가능합니다.
디컴파일을 하였을 경우 소스코드가 보여지기 때문에 해당 소스코드를 보호하기 위한 난독화가 필요합니다.
JavaProtect 는 APK 및 JAVA로 만들어진 프로그램의 소스코드를 안전하게 보호 할 수 있습니다.
본 프로그램은 무료로 배포됩니다.
- JavaProtect 환경 최소 요구사항
표 1 – 요구사항
구분 | 요구 사항 |
OS | Windows XP이상 |
RAM | 2GB 이상 |
Framework | JAVA |
HDD | 100mb 이상 |
Network | 외부와 연결된 네트워크 |
본 JavaProtect V1.5는 [표 1 – 요구사항]에 나와있는 항목을 필요로 합니다.
APK를 난독화 하실 때에는 JAVA를 필요로 합니다. 또한 라이선스의 검증을 위한 외부와 연결된 네트워크를 필요로 합니다. 물론 무료로 배포되는 프로그램이긴 하나, 1년에 한번씩 라이선스를 재발급 받아 사용해야 합니다. 라이선스를 발급받을 때에 비용은 들지 않습니다.
- JavaProtect V1.5의 기능
표 2 – JavaProtect V1.5의 기능
APK 코드난독화 | APK(Android) 파일을 난독화할 수 있습니다. 해당 난독화 파일은 바로 설치/사용할 수 있습니다. |
JAR 코드 난독화 | JAR 파일을 난독화 할 수 있습니다. |
- JavaProtectV1.5 인터페이스
- 실행
- JavaProtectGUI.exe 실행 파일을 더블클릭 합니다.
[그림 1] 프로그램의 실행
- 정상적으로 실행 될 경우 [그림]2 와 같이 실행됩니다.
[그림 2] 프로그램의 로딩 및 실행직후 화면
[그림 3] 프로그램의 GUI
- JavaProtect V1.5 화면 구성
- 기본 화면 구성
[그림 4] 기본화면 GUI
- 원본파일
[그림 5] 원본파일의 위치 선택
원본파일은 난독화를 해야 할 대상자, 즉 원본파일을 선택하는 위치입니다. 찾아보기를 클릭하여 해당 파일을 선택하시면 원본파일의 선택위치가 바뀐 것을 확인할 수 있습니다.
원본 파일에 선택할 수 있는 파일들은 APK 파일, JAR 파일, DEX 파일, ZIP 파일등이 있습니다.
- 출력폴더
[그림 6] 출력폴더의 선택
해당 원본파일을 난독화 한 후 난독화된 파일을 출력할 위치를 선택합니다. 찾아보기를 클릭하여 해당 폴더를 선택하시면 난독화된 파일의 출력위치가 바뀐 것을 확인 하실 수 있습니다.
- SDK or ClassPath
[그림 7] SDK 및 ClassPath의 선택
난독화를 하기 위하여 필요한 ClassPath 및 SDK의 위치를 지정합니다.
안드로이드용 APK의 경우, 안드로이드 SDK의 JAR 파일인 android.jar 과 uiautomator.jar를 선택하시면 되고,
Java 프로그램을 난독화 하기 위해서는 Java 설치 폴더의 JRE 디렉토리의 JAR 파일들을 설정해주면 됩니다.
- SignCommand
[그림 8] APK SIGN을 위한 Command
APK 파일의 경우 설치 시 SIGN을 필수로 필요로 하기 때문에 Sign을 할 프로그램을 선택합니다.
보통 APK Sign을 위해서는 JDK 설치 폴더의 jarsigner.exe 를 이용합니다.
- SignArgs
[그림 9] APK Sign을 위한 Argument
APK파일의 싸인 Argument 입니다 jarsigner.exe에 맞게 기본 설정되어 있습니다.
- Keystore 파일
[그림 10] Keystore 파일의 위치
APK 서명을 위한 Keystore 파일을 선택합니다.
- Key Alias
[그림 11] KeyStore의 명칭
KeyAlias 파일의 명칭을 적어둡니다. 해당 Keystore파일에서 파싱할 Key입니다.
이클립스에서 키 store만들 때 넣었던 문자열입니다.
- 보호규칙
그림 12
[그림 13] 선택 보호규칙
- 패키지이름변경
해당 난독화시 패키지 이름을 변경할 여부를 선택합니다. 패키지 이름을 감추는 데에 사용합니다.
- 클래스이름변경
클래스 이름을 변경하는데 사용합니다. 디컴파일되어 분석을 할 경우 난이도를 상승시킵니다.
- 메소드이름변경
메소드이름을 변경하는데 사용합니다.
- 필드이름변경
필드 이름을 변경하는 데에 사용합니다.
- 디버그정보삭제
디버그 정보를 삭제합니다.
- 시작클래스보호
시작클래스를 보호합니다. 즉, public static void main() 함수가 들어 있는 클래스의 클래스 이름을 바꾸지 않습니다. 자바 Applet의 경우, Applet 시작 코드가 들어 있는 클래스 이름을 바꾸지 않습니다.
- 클래스조각내기
클래스를 작게 분해하여 여러 클래스로 생성합니다. 디컴파일 되어 분석 시 어렵게 합니다.
- 어플릿클래스
에플릿클래스일경우 체크합니다. Applet class의 경우 꼭 체크해주셔야 합니다.
- Native지원
Native코드를 지원합니다. 만약, native 인터페이스로 선언된 메소드가 있을 경우, 클래스 이름과 메소드 이름을 변경하지 않습니다.
- 시작클래스 외 숨기기
분석을 어렵게 합니다. 어플릿이나 자바 프로그램의 main() 함수가 있는 클래스 이외에는 모두 다른 패키지로 묶어서 버립니다.
- Dex2JarCmd
[그림 14] Dex2Jar의 위치선택
APK 파일에서만 사용됩니다.
기본적으로 자바프로텍트에는 Dex2Jar기능이 포함되어 있으나, 추후 DEX의 규격이 바뀌거나 혹은 별도의 Dex2Jar 프로그램을 이용하고자 할 경우에 사용할 수 있습니다.
- Dex2JarArgs
[그림 16] Dex2Jar의 Argument
APK파일에서만 사용됩니다.
기본적으로 dex2jar 명령어에 대한 전달인자로 설정되어 있습니다.
- Jar2DexCmd
[그림 17] Jar2Dex의 위치선택
APK 파일에서만 사용됩니다.
기본적으로 자바프로텍트에 jar2dex 기능이 포함되어 있습니다. 별도의 프로그램으로 jar2dex를 이용하고자 할 경우에만 설정해줍니다.
- Jar2DexArgs
[그림 18] Jar2Dex의 Argument
Jar2Dex의 프로그램이 변경되어 인자 값의 변경이 필요할 경우 사용됩니다.
기본적으로 변경하실 필요가 없습니다.
- JarCMD
[그림 19] Jar파일의 위치선택
- JarArgs
[그림 20] Jar파일 Argument
자바프로텍트에는 기본적으로 패키징기능이 포함되어 있으나, 별도의 APK 패키징을 위한 압축을 할 때 사용하는 명령어 입니다. Zip 이나 jar를 이용하여 압축을 할 수 있으나, 여기서는 jar를 이용하여 패키징화 할 수 있도록 기본 설정되어 있습니다.
- ZipAlignCmd
[그림 21] ZipAlign 위치
- ZipAlignArgs
[그림 22] ZipAlign Argument
기본적으로 자바프로텍트에는 zip alignment 기능이 포함되어 있으나, 별도의 프로그램을 이용하여 zip alignment를 수행하고자 할 경우에 사용합니다.
- 이름보존목록
[그림 23] 이름변경이 안돼야 할 목록들
프로그램의 실행 시 이름을 보존해야 할 필요성이 있을 때가 있습니다.
하이브리드 앱일경우 Html단에서 호출하는 이름은 변경이 되면 안되기 때문에
해당 제외목록을 확인할 수 있도록 되어있습니다.
제외목록을 추가하기 위해서는 이름보존설정 버튼을 클릭하시면 됩니다.
[그림 24] 등록된 이름변경이 안 되야 할 목록들
등록된 이름을 추가하면 위와 같이 현재 제외되어있는 리스트를 확인 할 수 있습니다.
- 이름보존설정
[그림 25] 이름변경이 안되 야할 것들의 설정버튼
이름보존을 설정하여 변경되지 말아야 할 메소드이름 또는 클래스이름 등을 지정할 수 있습니다.
[그림 26] 이름변경금지 항목의 선택
이름변경 금지항목의 선택을 통하여 해당 금지항목을 추가 할 수 있습니다.
- 실행
[그림 27] 실행버튼
마지막으로 실행버튼을 클릭하면 해당 출력 디렉터리에 해당 난독화된 파일이 생성된 것을 확인 하실 수 있습니다.
'보안 > 시큐어코딩' 카테고리의 다른 글
[안드로이드 시큐어코딩] 실습 환경 설정 (0) | 2016.03.22 |
---|---|
[OWASP] 애플리케이션 위협 모델링 (0) | 2016.02.29 |
자바 디컴파일러 (0) | 2015.11.10 |
[금융보안원] 금융전산시스템 개발자를 위한 보안 과정 (0) | 2015.08.09 |
진단원 과정 보안약점 진단 보고서 (0) | 2015.06.16 |