apk和odex的合并,让软件成为完整的apk包以便反编译
最新推荐文章于 2025-08-21 16:20:02 发布
转载
最新推荐文章于 2025-08-21 16:20:02 发布
·
2.4k 阅读
·
0
·
0
文章标签:
#apk
#反编译
android
专栏收录该内容
2 篇文章
订阅专栏
本文深入解析了Android ROM中dex文件与odex文件的区别,阐述了odex文件如何帮助厂商优化空间、提高加载速度并进行反盗版,并提供了将残缺apk与odex文件合并成完整apk的详细步骤与工具。
Android的ROM中正常的软件都是apk内包含有一个classes.dex,但也有有时会没有(比如MIUI或有些HTC的ROM),却有很多odex文件,相对于APK中的dex文件而言这个odex有什么作用呢? 首先分析一下apk文件的安装过程。安装apk包,会在/data/app目录复制一份安装包,在/data/dalvikvm-cache目录放一个解压出来的classes.dex,如果有so文件,还要复制到对应的文件夹。但是,如果把一个apk分解为apk+odex,情况就大大不同了,这时完全可以把apk内的lib文件夹和classes.dex文件删掉,然后签名,配合odex一起使用,当然so文件也不能丢。所以, 正常的包占的的空间=原包+classes.dex+so; 分解后的包占的空间=分解包+odex+so。 这样做可以使其厂商保证一定的反盗版,因为没有没有dex文件的 apk是无法正常安装的,而厂商直接将odex和不完整的apk文件放到手机rom固化到/system/bin中可以让一般用户无法正常导出使用,同时apk带odex不仅节约空间,而且还能优化加载速度。 而那个 apk 是残缺的,里面没有 classes.dex 文件,残缺的 apk 是装不了的,只能把这个 apk 跟 odex 合并成一个完整的 apk 才能安装。 下面介绍合并的方法: 需要的工具: 1.smali-1.2.6.jar 和 baksmali-1.2.6.jar 2.还需要这个 apk 所在的 rom 里面的一些 jar 文件,都在 /system/framework 里面: core.jar, ext. jar, framework. jar, Android.policy. jar, services. jar 。当然,这五个是最基本的,有可能还不够,最好将整个framework文件夹里面的都放这里(不然可能会出异常)。 总共分四步: 1. 首先你的电脑要配置好java环境,不懂的自己Google。 2.把下载好的 smali-1.2.6.jar 和 baksmali-1.2.6.jar ,还有 rom 里面抠出来的 jar ,放到工作目录,然后 apk 和 odex 也放到一起。 3.分解 odex 文件为 class 文件。 命令: java -jar baksmali-1.2.6.jar -x
这里再共享一个非常简单的合并工具,用这个工具可以批量合并ROM里面的apk和odex文件,只需两步
首先把你要合并的ROM解压到romdir文件夹里面,然后点击odextools.bat就可以了(注意同样要java环境和整个framework文件夹里面的文件
)
odextools.rar