android odex的反编译

odex 是 Optimized dex 的缩写,是优化后的dex文件,通过将 apk 中的 dex 文件进行 odex 优化,可以提升程序的启动速度,同时减小空间的占用odex 文件依赖系统中已经编译好的系统模块,一般是 /system/framwork 目录下的 jar 包,目的也是为了提高虚拟机的运行速度,可以说从 class 到 dex 是针对 Android 平台的一种通用优化,odex 是 dex 文件在不同手机上做的特殊优化。低版本的android系统是没有odex的,有了这个odex调试系统的各种jar包很麻烦,所以如果要调试系统的各种jar包,可以把这个去掉,可以在BoardConfig.mk中添加

WITH_DEXPREOPT := false

为了反编译 odex 我们需要准备以下工具:

baksmali和smali
baksmali-xxx.jar 将 odex 转换为 smali 文件 
smali-xxx.jar 将 smali 文件打包成 dex 文件

我试了比较高版本的baksmali,发现不能使用,出现了下面的错误

在网上找了半天,找不到原因,后来把版本换成baksmali-2.1.3.jar,没出现上面的错误了,但是出现了这个

意思是:找不到 /system/framework/core.jar ,这个 jar 是在 /system/framework/arm/boot.oat 中,当然 boot.oat 不只包含 core.jar ,还有 framework.jar ,core-libart.jar 等一系列 jar所以我们将命令改变一下,记得将boot.oat 从系统导出来。

java -jar baksmali-2.1.3.jar -x KSTFactoryTest_Aging.odex -d framework/arm/ -c framework/arm/boot.oat

成功后会出现一个out目录,然后用smali-2.1.3将out目录重新打包

java -jar smali-2.1.3.jar out -o classes.dex

这样就成功的将odex文件转换成dex文件。然后将dex文件直接复制到apk中

将这个app重新签名,就可以使用了。这是在8.0之前的系统,在这之后新增了vdex,没有发现可以反编译的方法。

baksmali和smali下载:https://pan.baidu.com/s/1Pxc2THFHaWAtX2R-JFb3hw 
提取码:pxnq 
链接:https://pan.baidu.com/s/1r8M_zhVJWuxAjRVGiG5G3w 
提取码:r5jr
 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值