FINEDAYS
13.01.06
조회 수 16188
추천 수 41
댓글 20
윈도우 사용이라고 가정합니다

좋은 강좌가 많지만 다른 자동화 도구같은건 오래된 것도 많고 최근에는 작동 안하는 경우가 있어서

버전이 바뀌어도 먹힐만한 강좌를 씁니다.

이 글을 쓴 시점과 툴의 버전이 달라졌을 수 있기 때문에 버전은 xxx로 적어두었습니다



==========================================================================================

일단 툴 사용에 필요한 환경을 만들어야합니다


    Windows x86으로 받으시면 됩니다. (64비트 운영체제라도 x86쓰시면 됩니다)

    링크가 사라졌다면 구글에서 jre라고 검색하시면 됩니다



  
    baksmali-xxx.jar와 smali-xxx.jar 파일을 받으셔서 이름을 baksmali.jar와 smali.jar로 바꾸시고

    c:windowssystem32 폴더에 넣어주세요 (64비트라면 c:windowsSysWOW64)




    apktoolxxx.tar.bz2 파일과 apktool-install-windows-rxx-ibot.tar.bz2 파일을 받으셔서 모두 압축을 푸시면

    apktool.jar, apktool.bat, aapt.exe 파일 3개가 나옵니다. jar파일과 aapt.exe파일을 2)의 폴더에,

    apktool.bat는 비트에 상관없에 c:windowssystem32에 넣어주세요



4) smali.bat, baksmali.bat : 첨부 파일

    명령프롬프트에서 smali, baksmali를 좀 간단하게 해주는 배치파일입니다.  c:windowssystem32 폴더에 넣어주세요



 5) dexopt-wrapper : 첨부 파일

    받아서 폰의 /sdcard/tools 폴더를 만들어서 넣어두세요


6) busybox

    마켓에서 받아서 설치하시면 됩니다. 어플에 들어가셔서 install 하셔야하구요


7) adb 사용 환경

    검색하면 나옵니다

    폰을 디버깅모드에 두시고 명령프롬프트에서 adb shell을 입력해서 연결이 되는지 확인해주세요


8) 압축 프로그램

    여기서는 7-zip을 썼습니다. winrar나 알집이나 상관없으니까 아무거나 쓰세요


===========================================================================================



** 여기서는 일단 시스템 어플리케이션을 디컴파일하는 방법에 대해 서술하겠습니다 (odex 상태)

    입력할 명령어는 빨간색으로 표시해두겠습니다





간단한 모식도입니다. 파일 수정은 당연히 디컴파일된 단계에서 하시면 되고

컴파일된 DEX와 APK를 합치면 (점선) 흔히 말하는 deodex 작업입니다.




0) 디컴파일할 파일과 쓰시는 폰의 /system/framework 폴더를 복사하셔서 쉬운 경로에다 둡니다

   여기에서는 c:android로 하겠습니다

   프레임워크는 c:androidframework에 있고,

   디컴파일 할 파일은 c:androidappSystemUI.apk, SystemUI.odex라고 가정하겠습니다.




1) apktool 이용 디컴파일

명령프롬프트 (시작-보조프로그램 혹은 실행-cmd) 를 여시고

cd c:androidframework

입력하시면 프레임워크 폴더로 이동할 수 있습니다

apktool if framework-res.apk

apktool if twframework-res.apk (삼성펌웨어만 해당됨)

입력하시면 참조할 프레임워크 파일을 컴퓨터에 설치할 수 있습니다 (이 작업은 같은 펌웨어 버전 내에서는 한번만 하시면 됩니다)

cd c:androidapp

을 입력하셔서 디컴파일할 파일이 있는 경로로 이동합니다.

apktool d SystemUI.apk

을 입력하셔서 리소스를 디컴파일합니다

디컴파일된 파일은 c:androidappSystemUI 폴더에 있습니다.


2) apktool을 이용해서 컴파일

c:androidapp 폴더에서

apktool b test SystemUI_1.apk

입력하시면 SystemUI_1.apk 파일로 컴파일됩니다.


3) 서명 옮기기

압축프로그램으로 원본 apk 파일을 열면 META-INF 폴더가 있습니다.

그 폴더를 SystemUI_1.apk 파일로 복사해주시면 됩니다.


시스템 앱이 아닌 경우에는 복사하는 것 대신 http://forum.xda-developers.com/showthread.php?t=997180

이런 프로그램으로 직접 서명해주시면 됩니다.

다 하셨으면 폰에 넣으시고 이름을 SystemUI.apk로 바꾸셔서 권한 644(xx-x--x--)를 주시고 /system/app에 넣으시면 됩니다.






4) baksmali을 이용해서 odex 디컴파일

명령프롬프트에서 c:androidapp 폴더로 이동한 후

baksmali -a xx -b -d c:androidframework -x SystemUI.odex -o SystemUI_dex

를 입력하시면 odex 파일을 디컴파일할 수 있습니다.

-a xx에서 xx에는 api 레벨을 쓰시면 됩니다.

API level 1, Android 1.0
API level 2, Android 1.1
API level 3, Android 1.5 Cupcake
API level 4, Android 1.6 Donut
API level 5, Android 2.0 Eclair
API level 6, Android 2.01 Eclair
API level 7, Android 2.1 Eclair
API level 8, Android 2.2.x Froyo
API level 9, Android 2.3-2.3.2 Gingerbread
API level 10, Android 2.3.3-2.3.7 Gingerbread
API level 11, Android 3.0 Honeycomb
API level 12, Android 3.1 Honeycomb
API level 13, Android 3.2 Honeycomb
API level 14, Android 4.0-4.0.2 Ice Cream Sandwich
API level 15, Android 4.0.3-4.0.4 Ice Cream Sandwich
API level 16, Android 4.1 Jelly Bean
API level 17, Android 4.2 Jelly Bean

-b는 smali파일 내에서 디버그용 구문을 지우라는 파라미터입니다

  서로 다른 기종이나 다른 버전의 코드를 참고할 때 편리하니까 적어두었구요

-d 뒤에는 참조할 프레임워크 폴더를 적으시면 됩니다

-x 뒤에는 디컴파일할 odex 파일

-o 뒤에는 디컴파일한 파일을 내보낼 폴더 이름을 적으면 됩니다 

    여러 파일을 작업할 때 혼동하지 않기 위해서 파일 이름을 포함해서 적어주세요

    (안 적으면 out이라는 이름으로 나옵니다.)

디컴파일된 파일은 c:androidappSystemUI_dex 폴더에 있습니다


5) smali를 이용해 컴파일 하기

필요한 수정을 다 하셨으면

같은 폴더에서

smali -a xx SystemUI_dex -o classes.dex

를 입력해서 classes.dex 파일로 출력해줍니다. (xx에는 위에서 봤던 api 레벨을 적으시면 됩니다.)


6) dexopt-wrapper를 이용해서 optimized dex (odex) 만들기

이 과정을 모식도로 설명하겠습니다


별표가 안붙은 파일은 원본파일입니다.

지금까지 SystemUI.odex파일을 classes.dex 파일로 만들었습니다.

압축프로그램을 이용해서 SystemUI.apk에 classes.dex 파일을 넣어줍니다. (최상위폴더에 넣어주시면 됩니다.)

합친 SystemUI.apk 파일을 폰의 /sdcard/tools 폴더에 넣어줍니다.

그리고 루트익스플로러등을 이용해서 /system 폴더에 들어간 후 mount r/w를 눌러주세요


이제 폰을 컴퓨터와 연결하시고 디버깅모드를 켜신 다음에 명령프롬프트에서 

adb shell

을 실행합니다.

shell@android:/ $

라는 표시가 뜰텐데, 루팅이 당연히 되어있을테니까

su

를 입력해줍니다.

폰을 보시면 슈퍼유저 권한을 요청하고 있을거고, 폰에서 확인을 눌러주면 명령프롬프트에서 #표시로 바뀝니다.

아래의 명령어를 복사해서 붙여넣으시면 자동으로 재부팅되고, odex작업은 끝입니다.

cp -f~ 부터 reboot 아래의 .까지 통째로 복사하셔서 명령프롬프트에서 오른쪽 마우스버튼을 이용해서

붙여넣기를 하시면 됩니다.

cp -f /sdcard/tools/dexopt-wrapper /system

cp -f /sdcard/tools/SystemUI.apk /system

cd /system

chmod 777 /system/dexopt-wrapper

./dexopt-wrapper SystemUI.apk a.odex $BOOTCLASSPATH

busybox dd if=/system/app/SystemUI.odex of=a.odex bs=1 count=20 skip=52 seek=52 conv=notrunc

mv a.odex /system/app/SystemUI.odex

chmod 644 /system/app/SystemUI.odex

sync

reboot

.

간단히 설명하면, 

dexopt-wrapper랑 SystemUI.apk를 /system 폴더에 복사하고,

dexopt-wrapper에 권한을 주고 SystemUI.apk안에 있는 classes.dex 파일을 a.odex 파일로 만든 다음에

원래 SystemUI.odex에 있는 서명을 a.odex에 옮긴 다음에 a.odex파일을 SystemUI.odex 자리에 옮기고

권한을 주고 동기화 후에 재부팅하라는 명령어입니다.




7) dexopt-wrapper를 이용해 odex를 만들지 않고, deodex를 하고 싶다면

압축프로그램을 이용해서 SystemUI_1.apk에 classes.dex를 넣고, 폰으로 옮겨서 이름 바꾸고 /system/app에 권한주고 넣으시면 됩니다.
Extra Form
첨부
tool.rar  [File Size:2.7KB/Download:230]
댓글을 남겨야 다운로드가 가능합니다. 감사의 댓글을 달고 오른쪽 확인버튼을 눌러주세요.
다운로드시 일주일에 한개 이상의 게시물 작성이 필요합니다. 지금 자유게시판에 회원님의 하루를 남겨보세요.
추천♡버튼을 잊지 마세요. 추천인과 회원님 모두 포인트가 적립됩니다.
댓글 20
댓글 쓰기 권한이 없습니다.
분류 정렬 목록 검색 쓰기
List of Articles
제목 글쓴이 추천 조회 날짜
SKT 노트2 통화 음질 사용자 설정 하기 15 file 아조리 26 4926 2013.01.22
노트2/S3) 순정 브라우저 다운로드 위치 '디바이스'로 고정하기 30 lawbug 31 4575 2013.01.20
kt갤노트2 카운터 초기화 방법 11 고로냥 13 3213 2013.01.19
노트2 알림토글순서바꾸기 8 기탁스 9 2363 2013.01.18
초보의.프레스티지 설치기 22 - 22 2332 2013.01.17
배경화면을 기본 백그라운드로 설정하기 19 file daedaios 25 4971 2013.01.17
자꾸깨어나 속터지게하는 네이버웹툰을 확실히 얼리는 팁 17 타브 20 3669 2013.01.16
KT갤럭시S3 LTE 기본어플목록입니다(4.1.2기준) 32 화언 26 6408 2013.01.15
이유없는 디컴파일 에러시 확인할 한가지 9 오르 11 2635 2013.01.15
갤럭시s3 키스연결 안되시는분들을 위한 팁. 6 후진왕김 9 4155 2013.01.14
갤럭시노트2도 동영상 확대가 됩니다^^ 19 HereiM 17 4114 2013.01.13
폰만 가지고 테그라크 루팅하기 14 장난의달 20 3803 2013.01.12
어플리케이션이 설치되지 않을때. 7 PAULICE 10 2316 2013.01.11
갤럭시S2 해외 젤리빈(유출롬) 패블릿 적용 방법. 10 file dks7408 9 5949 2013.01.10
각기종 PIT파일 추출방법 6 RaNi__ 15 4773 2013.01.10
빌드프롭수정으로 소프트키 생성방법 21 RaNi__ 14 13863 2013.01.10
[요청드려요]갤럭시탭M180S 순정진저버전 deodex 롬 1 음냐58 2 3383 2013.01.09
초짜의 커스텀커널없이 부팅애니 변환 체험기(노트2) 8 캐롯주스 10 6501 2013.01.09
smali/baksmali/apktool/dexopt-wrapper 강좌 20 file FINEDAYS 41 16188 2013.01.06
갤럭시S2 유출 젤리빈 기본어플 (System어플) 삭제목록 적어봤습니다. 15 캐삐 14 12077 2013.01.05
돌핀 브라우저 젤리빈에서 플래시 켜기 16 비둘기는 14 5014 2013.01.04
갤3, 노트2 순정 프레임워크에 존재하는 테마들 소개 16 file SKYRIM 27 8600 2013.01.03
강좌 갤럭시s 오버클럭1.4ghz안전수치 14 ㅅㄴㅎㅇ 16 9215 2012.12.31
테마처음적용하는분둘보새요!! 13 안늉하이 27 3171 2012.12.31
preload파티션을 이용한 시스템 용량 확보 7 RetinaLoad 5 4008 2012.12.31
cwm백업중 오류 ...... 해결법 2 옹다리 6 2747 2012.12.29
루팅(rooting) 이란? 19 크램프 29 4038 2012.12.29
[OK맵]리뷰도 아니고 추천글도 아니고 ,, 만화로 설명하니 이해하기 좋... 1 file 바라는대 4 2316 2012.12.27
외장메모리를 NTFS로 포맷하여 사용하기 3 기리길길 5 9161 2012.12.27
루팅시 주의점들 12 안드로이 14 6188 2012.12.25
1 - 83 - 135