본문 바로가기

Cell/Android

framework.jar 컴파일 and 디컴파일

안녕하세요 M1S Secur입니다. 이번에는 /system/framework/framework.jar이라는 파일을 디컴파일과 컴파일의 예제를 한번 하겠습니다.

준비물

JAVA : www.java.com

(만약 여기서 설치하고 재붓해도 않되면 자바환경변수라는것을 따로 추가시켜서 CMD에 java명령어를 인식시키게 해야됩니다.)

baksmali : http://code.google.com/p/smali/downloads/detail?name=baksmali-1.4.2.jar&can=2&q=

smali : http://code.google.com/p/smali/downloads/detail?name=smali-1.4.2.jar&can=2&q=

알집이나 winrar

baksmali는 디컴파일, smali는 컴파일하는 파일입니다.

디컴파일

1. 우선 baksmali-1.4.2.jari파일과 자신이 뜯고 싶은 framework.jar을 한폴더에 만들어서 넣습니다.

(예 : C드라이브에 framework라는 폴더를 만들어서 그 안에 넣음)

2. framework.jar을 알집이나 winrar로 열어서 classes.dex를 baksmali-1.4.2.jar이 있는곳에 같이 넣습니다.

*이때 framework.jar은 제거하지 않습니다.

3. cmd를 실행 후에 cd명령어로 1번에 있는 폴더까지 직접 cmd로 찾아가 주어야합니다.

(예 : cmd실행 후 cd C:\framework)

4. 3번과정처럼한 cmd로 java -jar baksmali-1.4.2.jar -o <baksmali-1.4.2.jar 있는 위치 쓰기> classes.dex

*띄어쓰기 주의합시다.

(예 : cmd로 java -jar baksmali-1.4.2.jar -o C:\framework classes.dex)

자 그러면 디컴파일은 끝입니다.

컴파일

1. 위에 디컴파일에 1번처럼 이번에는 baksmali-1.4.2.jar로 디컴한 폴더로 가서 smali-1.4.2.jar파일을 넣습니다.

2. 디컴파일에 3번처럼 cmd로 smali-1.4.2.jar을 넣엇던 곳으로 찾아가줍니다.

(예 : cd C:\framework)

3. 그 다음 2번에서 햇던 cmd로 java -Xmx512M -jar <1번에 smali-1.4.2.jar을 넣은 폴더> -o newclasses.dex

*띄어쓰기 주의!

(예 : java -Xmx512M -jar C:\framework -o newclasses.dex)

4. framework.jar를 아무폴더 하나만들어서 알집으로 압축풀은후에 classes.dex를 지워버립시다. 그리고 framework.jar도 지워버립시다.

5. 2번에 폴더를 보면 newclasses.dex가 생성되었을것입니다. 이 newclasses.dex를 4번폴더에 넣고 classes.dex로 이름을 바꿔버립시다.

6. 4번에 폴더로 가서 zip으로 압축합니다.(이름은 framework.zip)

7. framework.zip에 .zip을 .jar로 바꿔버립시다.

컴파일 완료되엇고 이제 framework폴더에 퍼미션 644줘서 투척합시다.

이상 강좌를 마치겠습니다.

참고한 포스트 : http://forum.xda-developers.com/showthread.php?t=1748757