본문 바로가기

☆ 테마제작관련 ☆/테마제작강좌

Odex [Deodex] 강좌 #3 [부제 : dex화일 수정 및 적용]





관련 강좌  강좌 보러가기

[Odex Deodex 강좌 2]  dex화일 추출 

[Odex Deodex 강좌 1] 오덱스 & 디오덱스란?






Odex & Deodex 강좌 #3


- dex화일 수정 및 적용 -




  Odex & Deodex 강좌 #2에 이어서 진행하겠습니다.


이전 강좌 안보시고 오신분들은 이전강좌부터 봐주세요






이전 강좌에서 Dex화일 추출까지 진행 했습니다.


본 강좌에서 추출한 Dex화일을 스마트폰에서 Odex화 하여 적용하는 방법에 대해 알려드릴께요







추출한 Dex화일  baksmali로 압축 해제 하기






폴더내에 classes.dex baksmali로 압축해제 해볼께요






폴더내에 commandprompt.bat 실행해 주세요




아래 스샷과 같이  cmd창 실행됩니다.




   baksmali를 이용한 jar 파일 압축 해제  문장 분석 


java -jar [baksmali파일] -x [압축을 풀 deodexing된 jar파일] -o [압축풀릴 폴더이름]




색상으로 구분 된 입력 구분

java -jar baksmali-1.4.0.jar -x android.policy.jar -o android.policy





사실 저도 이렇게 강좌가 되어있을 때 상당히 난감 했었습니다.

띄어쓰기라던가.. 정확히 어떤부분이 틀려서 안되는 몰라서 답답했었는데..

그냥 아래 스샷처럼 보이는 본문 내용 우클릭 해제 해서 앞뒤여백 없이 드래그해서 복해주세요





java -jar baksmali-1.4.0.jar -x android.policy.jar -o android.policy




그리고 cmd창에서 마우스 우클릭으로 붙여넣기 해주시면 됩니다.

Ctr+C & V으로는 입력이 안됩니다.





아래 스샷 처럼 잘 들어가죠?? 그럼 Enter를 쳐 줍니다.


Enter를 친 후 아래와 같은 화면이 나오면 압축해제가 끝난겁니다. 폴더를 확인해볼까요?




java -jar [baksmali파일] -x [압축을 풀 deodexing된 jar파일] -o [압축풀릴 폴더이름]

java -jar baksmali-1.4.0.jar -x android.policy.jar -o android.policy



압축풀릴 폴더이름 = android.policy 폴더가 신규로 생성 된걸 볼 수 있습니다.





  smali화일 수정하기   

dex화일 압축해제 후 이젠 편집가능한 smali화일을 볼 수 가 있습니다.

smali화일이 어디있냐고요??


android.policy 폴더안에 보시면 엄청나게 많은 smali화일들이 있습니다.




그 중에 ICS 순정락을 담당하고 있는 smali 경로는

android.policy\com\android\internal\policy\impl\LockPatternKeyguardView.smali



LockPatternKeyguardView.smali 을 우클릭해 메모장 및 Notepad++로 열어주세요



Ctr+F를 이용해서 아래 구문을 찾아주세요

iput-boolean v2, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->CIRCLELOCK_MODE:Z 




이제 ICS Lock 관련 구문 수정해 줍니다.


iput-boolean v2, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->CIRCLELOCK_MODE:Z [원본]


iput-boolean v1, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->CIRCLELOCK_MODE:Z [수정]


V2==> V1으로만 바꿔주시면 됩니다.



이제 smali화일을 저장해 주세요




  smali화일 다시 압축해서 수정된 Dex화일 추출하기   




  smali화일 다시 압축 명령어 구문 분석   

java -jar [smali파일이름] -o classes.dex [폴더 이름]







Cmd 창에 아래와 같이 입력해 주시면 됩니다.

java -jar smali-1.4.0.jar -o classes.dex android.policy





Smali.jar를 통해 압축해서 수정된 classes.dex화일이 생성 됐을 겁니다.

생성된 시간을 확인해 보세요 (방금전에 생성 된 게 맞습니다. ㅎㅎ)





  수정된 dex화일 android.polacy.jar에 덮어 씌우기  


처음 deodex된 android.policy.jar수정 된 dex화일만 바꿔치기 해주시면 됩니다.




압축화일에서 classes.dex화일을 꺼내놓은것과 반대로 폴더에 있는 classes.dex화일을 알집안으로 넣어 주시면 됩니다.





android.policy.jar 우클릭 ==> 알집으로 열기



수정 된 classes.dex화일 android.policy.jar 안으로 drag & drop로 덮어 씌우기



현재 파일에 추가하기 선택 후 확인



덮어쓰기 확인 후 확인



우측 상단 X키 눌러서 알집 창 닫기




이로써 dex화일이 수정 된 디오덱스 android.policy.jar 이 완료되었습니다. ㅜㅜ


옆에서 보면 정말 간단한데.... 문서로 작성하려니..

100배는 시간걸리네요. ㅎㅎ



수정 완료된 디오덱스 android.policy.jar을 Odex화 시키면 끝납니다. ㅎㅎ








마지막 단계 입니다. ㅎㅎ



  수정 된 deodex android.polacy.jar에서 odex추출 하기 [deodex==>odex화 하기  









우선 Rootexplorer프로그램에서 System 권한을 R/W로 바꿔주세요

이해가 안되시면 아래 강좌 참조해 주세요.


 루트익스플로러 사용법 / rootexplorer 사용방법 / 루트익스플로러 테마설치방법





USB 디버깅 모드를 체크해 주세요






USB로 스마트폰을 연결해 주세요



드라이버 등 설치가 이상 없이 되어 있다면 내컴퓨터 안에 자신의 기종이 잡혀있을 겁니다.











이젠  AutoDEOTool 폴더안에 있는 commandprompt.bat 를 실행시켜 주세요




commandprompt.bat 를 실행 초기화면 입니다.

이젠 아래 명령어를 복사해서 하나씩 붙여주시면 끝납니다.

파란색 명령어만 입력해주세요




adb 작업 [작업화일 넣기]

adb push dexopt-wrapper /system/framework

adb push android.policy.jar /system/framework



테그라크에서는 괜찮은데 cwm에서는 이 부분에서  폴더 퍼미션을 넣어줘야합니다.

아래와같은 퍼미션이 거부된다면


failed to copy 'dexopt-wrapper' to '/system/framework/dexopt-wrapper': permission denied


아래 링크를 참조해주세요

▷ 폴더퍼미션 강좌보러가기




<명령어 입력화면 화면>


이부분에서 다른문구가 나오시는 분은 루트익스플로러 R/W다시 한번 확인해보세요





adb shell작업 [작업영역으로 이동] 명령어

adb shell 

cd /system/framework





dexopt-wrapper 퍼미션 777 변경 / a.odex 생성 명령어

  chmod 777 dexopt-wrapper

  ./dexopt-wrapper android.policy.jar a.odex $BOOTCLASSPATH


<명령어 입력화면 화면>




Busybox 실행 명령어

conv=notrunc 

  busybox dd if=/system/framework/android.policy.odex of=a.odex bs=1 count=20 skip=52 seek=52 conv=notrunc

<명령어 입력화면 화면 한줄입니다.>



임시 a.odex android.odex덮음 명령어

mv a.odex android.policy.odex

 



퍼미션 변경 명령어

chmod 644 android.policy.*

chown root.root android.policy.*




리부팅 명령어

reboot


<명령어 입력화면>






입력명령어 순서 정리(회색 숫자 제외)

1)adb push dexopt-wrapper /system/framework

2)adb push android.policy.jar /system/framework

3)adb shell 

4)cd /system/framework

5)chmod 777 dexopt-wrapper

6)./dexopt-wrapper android.policy.jar a.odex $BOOTCLASSPATH

7)busybox dd if=/system/framework/android.policy.odex of=a.odex bs=1 count=20 skip=52 seek=52 conv=notrunc

8)mv a.odex android.policy.odex 

9)chmod 644 android.policy.*

10)chown root.root android.policy.*

11)reboot





리부팅이 되면서 아래와 같은 순정락에서 ICS 순정락을 보실 수 있습니다.^^

  



고생많으셨습니다.^^





Odex관련 명령어는 따로 정리해서 올려드릴께요.

이번 강좌에 모든걸 적어드리면 오히려 혼란스러울까봐서.. 생략한 부분이 있습니다.


이렇게 포스팅 내용을 보시면 정말 어렵다고 생각하실지 모르겠지만

막상 하나한 따라하시다 보면그렇게 어렵지 않은 내용입니다.



Odex명령어 중 가장 간단한 수정으로 큰 효과를 볼 수 있는 ICS 순정락 강좌였습니다.

앞으로도 Odex관련된 강좌를 실습을 통해 알려드릴께요



처음이라 자세하게 쓴다고 썼는데.. 쉽게 이해가 가셨는지 모르겠네요

아무래도 전혀모르는사람이 보면 역시 외계어겠죠ㅜㅜ











이상으로 Odex [Deodex] 강좌 #3 [부제 : dex화일 수정 및 적용] 포스팅을 마치도록 하겠습니다.