





안드로이드 5.0 롤리팝용 디오덱스
(Android 5.0 Lollipop de-odex : How to convert .oat file to .dex)
아직 공개되지 않는 것을 세계최초(?)로 오픈하는 것 같습니다. 컨버팅 oat2dex는 직접 코딩하여 제작한 것입니다. 제가 아니더라도 XDA 포럼에도 공개해 주시면 아마 롤리팝 시스템 앱들이 많이 컨버팅되서 쏫아져 나올겁니다.
안드로이드 5.0 롤리팝 단말기에 보면 freamwork, app, priv-app 폴더에 *.apk 파일과 *.jar 파일이 있고 그 뒤에 /arm 이라는 서브 폴더에 보면 *.odex 파일이 있습니다. 그리고 특정 폴더에는 art 모드를 위해서 2개로 나누어 압축해 놓은 경우도 있습니다.
*odex.art.xz -> art 모드 네이티브 파일입니다.
*.odex.xz -> 7zip 압축 해제하면 *.odex 파일이 나옵니다.
*.odex.xz 파일 압축을 풀어서 *.odex 파일을 사용합니다.
arm 폴더에 압축이 되어 있지 않는 *.odex 는 그냥 이 파일을 사용합니다.
*.odex 파일은 기존의 *.odex 파일과 다른 구조의 OAT 파일의 구조를 가지고 있는 파일입니다.
이 파일을 예전의 odex 파일 구조로 변경해야 합니다.
예전 구조로 변경하는 OAT2DEX 툴을 이용합니다.
오늘 몇시간동안 만드냐고 고생했네요.
첨부한 파일을 압축을 해제하면 oat2dex.jar 과 oat2dex.bat 파일이 있습니다.
arm 폴더에서 아무거나 *.odex 을 가져옵니다. 예를들어 전 SecVideo.odex 라고 하겠습니다.
..>7za x SecVideo.odex.xz
라고 해서 압축을 해제하면 SecVideo.odex 파일이 압축이 해제됩니다.
그 다음 oat2dex tool 을 이용합니다.
..>oat2dex.bat SecVideo.odex [Enter]
이렇게 명령을 하면 OAT 파일과 DEX 파일 헤더가 존재하는지 확인합니다.
만약 에러가 난다면 변환이 되지 않는 파일입니다.
변환하기 위해서는 다음과 같이 변환할 파일명을 추가로 입력합니다.
..>oat2dex.bat SecVideo.odex temp.dex [Enter]
temp.dex 파일이 생성되었으면 이것이 예전 구조를 가지는 odex 파일입니다.
이제 De-Odex 하기 위해 baksamli/smali 를 이용합니다.
..>java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o deodex [Enter]
그러면 deodex 폴더가 에러 없이 생성되면 정상적으로 Decompile 된겁니다.
이제 다시 컴파일을 하여 classdex.dex 파일을 생성하기 위해 Compile 합니다.
..>java -jar smali-2.0.3.jar -a 21 deodex -o classes.dex [Enter]
이제 정상적으로 에러없이 Compile 되면 classes.dex 파일 생성됩니다.
apk 파일에 추가해 넣으면 됩니다.
..>7za u -tzip SecVideo.apk classes.dex [Enter]
그러면 SecVideo.apk 파일이 디오덱스된 파일이 됩니다.
이제 de-odex 된 SecVideo.apk 파일을 Apk-Manager 등으로 디컴파일/컴파일해서 사용하시면 됩니다.
압축 프로그램은 7za.exe 사용하지 않고 다른 zip 형식을 지원하는 압축 프로그램을 사용하셔도 됩니다.
안드로이드 5.0 롤리팝 프레임워크를 얻기위해 통째로 deodex 한 결과 딱 2개가 오류가 나고 나머지는 모두 정상적으로 deodex 되었습니다.
Apk-Manager Fix 6.1 에서는 자동 DeOdex 기능이 추가되어 있는데 시간나는데로 조만간 공개하겠습니다.
허락없이 마음것 퍼가시고 출처 남겨주시면 고맙겠습니다.
출처 : http://softdx.kr/220200813802
- 작성 : 웃음투자