EXODUS_Q™
14.04.30
조회 수 14770
추천 수 12
댓글 11






1.resources.arsc


이것은 우리가 흔히 사용하는 일반적인 apk파일안에 포함돼 있는것입니다.(알집으로 열어보면 보입니다.)


그런데 apk파일을 "디컴파일"하면 이 resources.arsc라는 파일은 온데간데 없고, res폴더안에 value라는 폴더(values가 앞에 붙은 다른 폴더도 포함)가 생성됩니다.


바로 그 values가 앞에 붙은 폴더들이 resources.arsc입니다.


public.xml를 비롯하여 styles.xml/dimens.xml등 아주 중요한 xml을 포함하고 있는 apk파일의 핵심적인 디렉토리입니다.


하지만, 이 중요한 values라는 폴더는 디컴파일을 하지 않으면 볼수가 없습니다.


위에서 언급했지만 일반적인 apk파일 상태에서는 그냥 resources.arsc란 파일로 존재할뿐입니다.


고로...


apk파일을 디컴파일 하지 않으면 이  resources.arsc파일은 수정작업 자체가 안됩니다.


이번엔 거꾸로 디컴파일한 apk파일을 다시 "컴파일"하게되면, 컴파일된 apk파일안에는 values라는 폴더는 없고 원래의 resources.arsc파일만 존재하는것이죠.


테마사들이 "res/values쪽을 수정했을 경우엔 컴파일후에 resources.arsc를 기존apk파일안에 덮어씌우라"는 말이 바로 그 뜻입니다.






2.classes.dex


이것은 쉽게 말해서 smali라고 보시면 됩니다.(데오덱스apk파일에서의 개념)


위에 resources.arsc과 비슷한 개념으로...


데오덱스된 일반적인 apk파일을 열어보면 classes.dex라는 파일이 그안에 포함돼 있습니다.


 framework경로의 .jar파일들도 마찬가집니다.


그런데 그 apk파일(또는 jar파일)을 "디컴파일(또는 baksmali)"하면, classes.dex라는 파일은 온데간데없고  smali라는 폴더가 생성되어있습니다.


그렇게 디컴파일후 생성된  smali폴더를 열어 원하는 smali를 수정작업한후 다시 "컴파일"하게되면 이번엔 smali라는 폴더는 온데간데없고 원래의 classes.dex파일이 떡~하니 있습니다.


그걸 원래의 파일에 덮어씌줘주면 되겠죠~.




》오덱스apk(또는 jar)파일에서의 classes.dex개념:


오덱스롬에 있는 apk파일(.jar)을 알집등으로 열어보면 데오덱스롬에 있는 apk파일과는 달리 classes.dex라는 파일이 없습니다.


그럼 그 녀석들이 대체 어디 있느냐?


바로 apk(jar)파일 밑에 같은 이름이지만 뒤에 확장자명 .odex로 찰싹 달라붙어있는 녀석들입니다.


그 odex파일안에 classes.dex가 들어있습니다.


apk파일과 그 밑에 찰싹붙은 odex파일을 데오덱스화 한 후  디컴파일(baksmali)하면 위의 데오덱스 apk파일과 같이 smali라는 폴더가 생성됩니다.그걸 수정작업하면 되겠죠~


그리고 다시 컴파일(smali)하면, smali라는 폴더는 없고 원래의 classes.dex라는 파일만 생성됩니다.


(일반적으로 테마사들은 작업과정이 조금 번거롭고 복잡한 오덱스롬보다는 데오덱스롬 테마작업을 선호합니다.)


 


보충설명:(사실 기본개념만 설명하고 이 부분은 설명안할려고 했는데...안할수가 없겠네요.지적해주신 흰고양이님 감사합니다.^^)


오덱스롬같은 경우는,


apk(또는 jar)파일과 odex파일을 데오덱스화하여 수정작업을 거친후에 다시 폰에 넣기위해선 별도의 추가 작업(오덱스화)이 필요합니다.


우선, 오덱스롬의 system/app경로에 있는 파일들은 컴파일후에 생긴 데오덱스화된 apk파일을 굳이 따로 오덱스화 시킬 필요는 없습니다.그냥 데오덱스화된 apk파일 그대로 system/app경로에 투척해준 후, 기존에 있는 .odex파일만 삭제(또는 이름 변경)해주면 됩니다.


그래도 굳이 odex파일을 만들고 싶은분들은, 일단 데오덱스화된 apk파일을 system/app경로에 넣고 재부팅한후에, data/dalvik-cache경로에 있는 해당 @classes.dex파일을 Total Commander어플같은걸로 odex파일로 만들어 투척해주면 됩니다.(이 방법은 AZdesign님 블로그에 가시면 아주 상세하게 잘 나와 있습니다.)


http://azdesigntm.com/437


 


그런데 정말 중요한것은, system/framework경로입니다.


이 경로는 오덱스롬에 데오덱스화된 jar파일을 그냥 넣어선 안됩니다.


(이거..예전에 제가 어디선가 설명한것 같은데...ㅇㅅㅇ)


오덱스롬의 system/framework경로에는 반드시 .odex파일이 존재해야 합니다.


그렇게 하기 위해선 주로 adb push작업을 하는데 그건 추후 별도로 설명드리도록 하겠습니다.


(이 방법도 AZdesign님 블로그에 가시면 아주 상세하게 잘 나와 있습니다.)


http://azdesigntm.com/177


 




▽결론;


resources.arsc는 디컴파일하면 res/values라는 폴더로 나타나고,


classes.dex는 디컴파일하면 smali라는 폴더로 나타나는 개념입니다.


둘 다 컴파일하면 원래의 파일로 나타나구요~^^


고로....


apk(jar)파일을 디컴파일(baksmali)하여 res/values쪽이나 smali쪽을 수정작업했다면,


컴파일후에는 resources.arsc나 classes.dex를 원본파일에 덮어쓰워주면 됩니다.




(제대로 설명이 됐는지..저도 쪼매 헷갈리네요..ㅎㅎ)


 


 


1.데오덱스 apk파일입니다.





 


 


2.저렇습니다.


 


 



3.디컴파일된 파일입니다.



 


 


4.smali가 생성돼 있습니다.(컴파일하면 저 smali폴더는 없고 classes.dex만 있습니다.)




 


 



5.res/values폴더가 있습니다.(컴파일하면 저 res/values폴더는 없고 resources.arsc만 있습니다.)




Extra Form
첨부
강좌3.png  [File Size:10.5KB/Download:0]
강좌5.png  [File Size:44.1KB/Download:0]
강좌4.png  [File Size:13.1KB/Download:0]
강좌3.png  [File Size:14.3KB/Download:0]
강좌2.png  [File Size:49.5KB/Download:0]
강좌1.png  [File Size:54.5KB/Download:0]
댓글을 남겨야 다운로드가 가능합니다. 감사의 댓글을 달고 오른쪽 확인버튼을 눌러주세요.
다운로드시 일주일에 한개 이상의 게시물 작성이 필요합니다. 지금 자유게시판에 회원님의 하루를 남겨보세요.
추천♡버튼을 잊지 마세요. 추천인과 회원님 모두 포인트가 적립됩니다.

EXODUS_Q™ 님의 SIGNATURE

profile
Just Do It.
댓글 11
  • ?
    JUNGSSI
    14.04.30
    설명 잘 해주셨네요 제가 질문한건데 ㅎㅎ; 감사합니다 그런데 저는 지금 아직 햇깔리는 부분이 1. 오덱스롬에 디오덱스화 시킨 apk나 jar를 그냥 넣으면 사용할 수 있는것인지? (물론 기존경로 odex파일 삭제) (만약에 그냥 가능하다면 오덱스화는 왜 번거롭게 시키는건가요?) 2. 디오덱스화 시킨 apk에 수정한 classes.dex를 넣고 꼭 오덱스화를 시키고 폰에 넣어야 하는지? 3. 디오덱스화를 시킨 apk에서 classes.dex를 따로 빼서 adb로 baksmali.jar 작업을 안하고 apk매니저로 디컴파일후 생성된 smali폴더에서 원하는부분 수정후 다시 apk매니저로 컴파일 후 build폴더에 있는 classes.dex를 다시 컴파일한 apk에 덮어씌워주면 문제 없는것인지 디오덱스 오덱스 개념을 오늘 처음 접해서 궁금한게 많네요 답변 부탁드립니다!
  • ?
    odex 알집으로 안열립니다. 그리고 dex를 .odex로 바꾸면 큰일날걸요. dex를 odex로 바꿔도 되는것은 data/dalvik-cache에서의 .dex파일 뿐입니다. 결론은 odex는 먼저 디오덱스를 해두고 디오덱스된 .jar파일을 백스말리(jar파일에서의 디컴파일 정도..?) 하셔야 열립니다.
  • profile
    1.system/app경로에는 괜찮습니다.다만,기존에 있는 odex파일은 삭제시켜야합니다. 하지만 system/framework경로는 절대 안됩니다.반드시 odex화 시켜서 넣어줘야합니다. 2.1번과 마찬가지인데, 오덱스롬인 경우는 system/framework경로에 반드시 오덱스파일이 존재해야합니다. 3.apk파일은 APKmanager로 하면 되고, jar파일은 baksmali툴에서 해야겠죠. [2.2.7/E160SKSJMJ1/4.1.2]
  • ?
    방울새
    14.04.30
    추천드립니다 :) [2.2.7/E330LKLUCNC4/4.4.2]
  • profile
    맞습니다.헷갈린 부분인데 잘 지적해주셨네요.고맙습니다.^^ [2.2.7/E160SKSJMJ1/4.1.2]
  • profile
    이건 추천받을만한 글이 아닌데..일단 감사합니다.^^
  • ?
    JUNGSSI
    14.04.30
    감사합니다 이제 다 이해 했네요 ^^
  • profile
    기본개념만 간단하게 설명하려고 했던건데...일이 커지네요..ㅋ
  • ?
    한번 읽어보고는 모르겠네요. 정보 감사드립니다^^
  • profile
    네..그렇습니다.직접 해보시는게 가장 빠릅니다.
  • ?
    acca
    15.11.05
    궁금한게 있는데 apk파일 수정후에 컴파일하고나서 그파일을 그대로쓰면안되나요? 왜 수정햇던 내용을 기존 파일에다 살짝바꿔주는 식인지 정말궁금합니다 알려주시면감사드리겠습니다!
댓글 쓰기 권한이 없습니다.
최신순 목록 검색 쓰기
등록된 글이 없습니다.
1 - 2