제이a
13.06.30
조회 수 7855
추천 수 13
댓글 16

제 블로그에 있는 설명을 그대로 복붙한 거예염. 근데 일부 사진 안습.. ㄱ-

다운로드 게시글은 http://www.matcl.com/?m=bbs&bid=tip&uid=181934에 있습니다.


설명할 필요가 있을까 싶지만 놓치기 쉬운 기능도 몇 있으니 따라하기 식으로 정리를 했습니다~

이 설명은 디컴과 디오덱스에 대해 전혀 모르는 사람들을 대상으로 작성한 것이니 아시는 분들은 그냥 프로그램 쓰셔도 돼요 ㅇㅅㅇ 딱 보면 알 수 있을테니.

초보자 분들은 간단모드나 튜토리얼모드가 괜찮고요, 숙련자 분들은 수동모드를 쓰면 되겠습니다.

간단모드는 최대한 자동화에 중점을 맞췄고, 이 글에선 이걸 기준으로 설명할게요.

튜토리얼 모드는 어떤 기능이 무슨 역할을 하는지 배우기 좋고요, 수동모드는 다른 모드엔 없는 기능들도 약간 있답니다. (예를 들면 자바소스 보기같은 기능이라든가요)


서론은 끝났고, 이제 시작해 볼까요.


갤투 SystemUI.apk 만지작거리기


일단 SystemUI.apk파일이 필요하겠군요. 없다고요? 괜찮아요. 갤투만 있으면 됩니다.

갤투가 아니라고요? 뭐 비슷비슷하겠죠. 이건 이제 구닥다리고 다른 기종들은 더 자료가 많을테니 더 편할 수도 있겠네요.

준비물은 Apkzipper v2.3.4 실행파일 하나만 있으면 됩니다. 심플의 극치 ......


장황한 설명이 싫으신 분들은 맨 아래쪽에 요약을 해 둘 테니까 그거 보시면 됩니다.


처음 실행하면 튜토리얼 모드로 보입니다. 간단모드로 가죠. 편하게..



간단모드로 들어가면... 정말 간단하게 보이지 않아요?



1. 수정할 앱을 준비합시다.

SystemUI.apk가 있으면 넘어가고, 없다면 폰 드라이버를 설치, 개발자 옵션도 켜고 컴하고 휴대폰을 USB로 연결해줍시다.

근데 USB케이블도 없다면... 그래도 불가능하진 않습니다. 무선연결이 있거든요. 다만 루팅과 Busybox, Wifi ADB같은 앱들이 설치되어 있어야 합니다.

무선연결 안 하시거나 USB로 연결하신 분은 휙휙~~ 넘어가시면 되겠습니다아~~



루팅하는 방법은 범위를 벗어나므로 여기서 설명하지 않겠습니다. 다른데서 배워오든지 USB로 연결하든지 어떻게든 SystemUI.apk파일과 여타 필요한 파일을 준비만 할 수 있으면 됩니다.



마켓에서 쉽게 Wifi ADB를 찾아 설치할 수 있습니다. 설치하고 위젯을 만들어서 켜면 위 사진처럼 주소가 나옵니다.

같은 와이파이에 접속한 폰에 무선연결 할 수 있게 해주는 앱이라고 보시면 됩니다.




정상적으로 연결되면 위 사진처럼 뜹니다. 연결이 안 된다면... 3G는 안 되고 컴퓨터하고 폰이 같은 와이파이에 연결되어 있어야 합니다.


USB로 연결하신 분은 여기서부터 따라와주시면 됩니다. 이제 SystemUI.apk를 가져올 건데요.

아래 사진에 '폰에서 가져오기' 버튼이 떡하니 있네요. 그걸로 가져오면 돼요 ㅇㅅㅇ



 /system/app/SystemUI.apk를 치면 됩니다. 그 경로에 파일이 있거든요.

(대소문자를 구분해주세요)

근데 

remote object '/system/app/SystemUI.apk' not a file or directory

가 뜰 수 있습니다. 젤리빈 업글하면서 위치를 옮기고 링크를 시킨 것 같더라고요. 하튼 이러면

/preload/symlink/system/app/SystemUI.apk   를 치면 될 겁니다.




오홋~~ 성공 ㅋ

이제 버튼 3개가 보이네요. 사진파일만 바꿀꺼면 압축풀기만 하는게 정신건강에 이로울 겁니다.

정신건강에 해로운 디컴파일 & 디오덱스 과정을 밟으시는 분들은 계속 읽어주세요 ㅇㅅㅇ



네. 그냥은 디컴이 안 되는 것 같네요. 프레임워크 파일을 가져오지 않아서 발생하는 문제입니다.

뭐 가져오면 되죠




이 참에 디오덱스도 할 겸 오덱스 파일도 가져올까요.

(앗, 실수. /system/app/SystemUI.odex였네요 ㄱ- 아래에 나옵니다)



어쨌든 전부 잘 가져온 것 같으면 이상한 파일이 선택되었을 수 있으니까 맨 처음 앱 선택하기에서 다시 SystemUI.apk를 골라주세요.



아까 가져온 SystemUI.apk와 framework. odex파일도 있지만 확장자땜시 안 보일 뿐이랍니다.



오.. 이제 잘 디컴파일 되네요. 작업폴더 열기를 하면 디컴파일한 폴더, 사진들이랑 xml, 일부 smali코드들이 있는 폴더를 열어주고요,

오덱스 폴더를 열면 말 그대로 디오덱스한 폴더를 열어줍니다. 소스코드 폴더라고 보면 되겠네요.





앱파일 만들기를 누르면 뭐... 잘 됩니다. resource.arsc는 알아서 보존해주니까 신경쓰지 마세요.

다만 간단 모드를 벗어나면... 시스템컴파일을 일부러 선택해서 신경써야 할 거예염.



만들어진 앱 파일을 열어본 화면입니다. classes.dex파일이 있는 걸로 보아 디오덱스와 포함 과정이 성공적으로 된 것 같네요.


이제 폰으로 보내는 과정입니다. 오덱스는 설명에 안 들어갑니다. (오덱싱을 안 하면 부팅이 좀 느려집니다)

이전 사진이지만 '설치하기'와 '폰으로 내보내기' 버튼이 있었습니다.

이건 시스템 앱이라 설치해봤자 안 될테고, 그냥 있는 경로에다가 덮어 씌워야 하는데 문제는 시스템 경로는 기본적으로

'읽기 전용'이라는 거죠 ... ㅠㅠ (아니 좀 당연한 거지만)

이 읽기 전용을 해제할 건데, 쉽게쉽게 따라해보자고요 ㅇㅅㅇ



이 과정은 루팅과 개발자 옵션 - USB디버깅이 이미 켜져 있다고 가정하고 한 겁니다.

루팅 안 하고 SystemUI.apk를 덮어씌우는 방법은 아마 없지 않을까요? (있어도 어려울 것 같습니다만)



#이면 루트권한이라는 뜻이예염. 아니면 $이 뜬답니다. 일단 mount를 쳐 보세요.



그럼 뭐가 쏼라쏼라 뜰 텐데 (이거 busybox필요한 건지 잘 모르겠네;;) 경로명이 /preload인걸 하나 찾고,

저 노란 부분을 드래그해서 마우스 우클릭하면 드래그한 부분이 복사됩니다.

그럼 mount -o rw,remount 까지만 치고 다시 우클릭을 하면 저 노란 사각형 만큼이 붙여넣기 될 겁니다.



네 끝났습니다. 저 까만 화면 이제 안 봐도 돼요. 이제 넣어주자고요.



솔직히 아까 mount어쩌고가 위 경로보다 더 짧잖아요. 쉽지.



네 끝났습니다~~ 어차피 수정한 거 없으니까 폰 사진은 안 올릴게요.

실패하면 ......은 안 되어봤고 끽해봐야 상단바 사라짐쯤 될 거예요.

원래 파일로 돌리고 싶을 땐 처음에 가져온 SystemUI.apk를 덮어 씌우면 돼요. 이 프로그램은 원본 apk는 절대 안 건드리거든요. (삭제기능 예외)

돌리고 싶으면 위쪽 메뉴의 기타 - 폴더 정리 - 현재 결과물 삭제하고

(간단모드 말고 다른 모드로 전환한 다음) 폰으로 내보내기를 고르면 됩니다.

그럼 원본 apk가 전송 될 거예요. (남은 게 그거밖에 없으니까 ㅇㅇ)


요약을 빼먹을 뻔 했네요. 좀 지나치게 요약이다 싶은 부분만 되돌아가서 보세요.


1. 간단모드로 들어간다

2. 휴대폰을 연결한다. (USB로 연결하면 간단하겠죠?)

3. 압축풀기 할 사람은 그냥 압축푼다.

4. 디컴, 디오덱스를 할 사람은 framework폴더와 odex파일을 같이 준비하고 디컴, 디오덱스를 한다.

5. 맘껏 수정한다.

6. 앱파일 만들기 클릭

7. SDK기능 - ADB Shell - mount명령어 입력

8. 읽기 전용 해제할 파티션을 드래그, 우클릭해서 복사한 다음 mount -o rw,remount 까지 치고 우클릭해서 붙여넣기

9. 잘 읽기 전용이 해제되었으면 앱 파일 전송하기

10. 리붓


와 끝났다~~!!

댓글 16
  • ?
    헥헥 [2.1.2/M250KKKJME3/4.1.2]
  • ?
    chitos7
    13.07.02
    정보 감사합니다.^^
  • ?
    너무 어려운데..
  • ?
    강좌대로 따라해봤습니다. 잘되는군요… 감사합니다. [2.1.2/E300KKKUAMF3/4.2.2]
  • ?
    제이a
    13.07.04
    으아... 실패했네요 ㅠㅠ 무선연결 부분 빼고 설명할 걸 그랬나봐요;; 너무 어려우면 그냥 간단모드에서 버튼 순서대로(?!) 누르세요. (압축하고 컴파일만 구분하면 되니까) 사실 설명이 필요 없는 건데...
  • ?
    제이a
    13.07.04
    넵! 팁을 더 드리자면 아래 텍스트 입력란에 s mount이런 식으로 입력해도 휴대폰이 연결되어 있으면 출력됩니다! shell ls라든가... 아직 명령어가 중복되는 게 없어서 s만 쳐도 돼요.
  • ?
    감사합니다
  • ?
    팔마천
    13.07.27
    귀중한 자료 감사 합니다 일단 완전 초보라서 강좌보고 따라해봤습니다 twframework-res.apk<--이파일 디컴하고 수정없이 바로 다시 컴파일 해서 사인하고 압축정렬까지 해봤습니다 오류없이 잘된것같은데 아무 수정도 안했는데 원본과 비교하니 파일 용량이 조금 차이가 납니다 이건 왜 그런건지요 또 그냥써도 무관한지 궁금 합니다
  • ?
    제이a
    13.07.27
    다른 방법으로 하셔도 용량차이가 없는 경우는 거의 없을 거예요. 파일 크기는 압축 세기를 조절해서 바꿀 수도 있고.. 실제 동작엔 무관해요.
  • ?
    2분만에 답장 주시는거보니 충분히 깨소금입니다!
  • ?
    팔마천
    13.08.03
    운영체제에 따라서 프로그램이 안되기도 하내요 저가 윈7 32 64를 쓰는데요 32에서는 잘되던 컴파일이나 오덱스가 64에서는 오류 막 품어버리내요
  • ?
    제이a
    13.08.05
    그러면 버그리폿 ㄱㄱ~~ 운영체제에 따라 안 되는건 99.9% 프로그램 문제일 테니까요.
  • ?
    팔마천
    13.08.05
    버그리포트라고 프로그램에 있던데 그것으로 보내면 되는건가요 저가 아직 초보라 파일문제인지 프로그램 문제인지 아직은 잘모르겠내요 순정파일것은 아무 문제 없이 잘풀리고 잘만들어 집니다 간혹 다른분이 수정해서 올려준것들중에 특히 framework폴더에 있는 파일들중에 안풀리거나 풀렸는데 잘 안만들어지는경우가 가끔있내요 좀더 사용해보면서 버그리포트 보낼정도라고 생각되면 보내보겠습니다 다시한번 사용하기 쉽게 만들어주신것 감사 합니다
  • ?
    팔마천
    13.08.28
    이번에 펌업이되서 자주수정이 필요한것들 디오덱스화할려구 하는데 android.policy.jar & odex 이걸 디오덱스화해서 폰에 투척하고 android.policy.odex 이걸 지우고 재부팅하니 부팅음까지나오면서 무한부팅상태로 멈추내요 컴파일할때 뜨는 W: Could not find resources<---요건 resources.arsc 파일자체가 없어서 그런건가요 그리고 android.policy.jar 이것만 디컴하고 컴파일할려니 안되내요 질문계시판에도 많이 질문되어 있던데 해답을 못찾아서 미치겠내요 그리고 dex파일을 다시 odex로 만들려니 영 어렵내요 님프로그램에 그 기능도 추가했으면 좋겠는데 많이 힘들까요
  • ?
    제이a
    13.09.05
    리소스 파일을 못 찾았다는 경고는 저도 본 기억이 없어서 정확히 어떤 상황에서 발생하는진 잘 모르겠네요. resource.arsc가 없어서 발생할 가능성도 높겠지요. 최근엔 다른 팀프로젝트를 하는게 있어서 많이 소홀했어요;; 거의 하루 종일을 투자하고 있어서요. 언제 기능추가를 할 수 있을진 모르겠네요..
  • ?
    폰에서 pc로 추출해 놓은 systemui.apk systemui.odex 파일 두개를 불러와서 디컴파일 누르면 진행하다가 런타임 에러 발생하네요 apkzipper v2.3 beta 인데요
댓글 쓰기 권한이 없습니다.
강좌 최신순 목록 검색 쓰기
등록된 글이 없습니다.
1 -