手把手教你将odex转dex

本文详细介绍了如何将odex文件转换为dex文件,以供Android开发中的兼容性问题研究。首先,解释了odex是优化后的dex文件,依赖系统模块。接着,列举了转换所需的工具和步骤,包括下载smali和baksmali工具,将odex转为smali汇编代码,再将smali代码还原为dex文件。需要注意的是,转换过程中需要对应系统框架的jar包,否则可能解析失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请标明出处:http://blog.csdn.net/EdisonChang/article/details/51406623

android 开发中经常需要解决一些兼容性问题,通常情况下我们会把对应的系统预装的app拉出来,逆其结构看其有何端倪。过程中,我们会发现,有一些rom ,/system/app 目录下是以xxx.odex的文件形式存在,那么odex 是什么呢?

odex是Optimized dex的缩写,也就是优化后的dex文件。odex文件依赖系统中已经编译好的系统模块,一般是/system/framwork目录下的jar 包,目的也是为了提高Dalvik虚拟机的运行速度,可以说从class 到dex是针对android 平台的一种通用优化,odex是dex 文件在不同手机rom在做的特殊优化。对此有兴趣的朋友可以阅读 邓凡平老师的深入理解Android之Java虚拟机Dalvik。

文章的主要内容就是介绍下如何将odex 转成dex 。

1、工欲善其事必先利其器,配置好jar 环境后,到bitbucket.org上下载 smali-xxx.jar、baksmali-xxx.jar、baksmali、smali四个文件,并放到本地目录test。

2、将odex转smali
将对应的odex文件也一同拷贝到test目录,/system/framwork 中的jar 包拷贝到test/framwork目录,运行如下命令:

java -jar baksmali-xxx.jar -x test.odex -d framework

3、将smali转dex

java -jar smali-xxx.jar out -o test.dex

-o,–output the directory where the disassembled files will be placed. Default is out.
-d,–bootclasspath-dir the base folder to look for the bootclasspath files in.
-v,–version prints the version then exits
-x,–deodex deodex the given odex file.

因为odex的优化是依赖于特定os的,所以使用baksmali时,依然需要Android系统的库文件,如果缺少framwork里面的jar包,会导致解析失败 。网上也有朋友将这些命令行集成一个bat ,可以参考 android APK提取内置软件odex转dex

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值