odex转dex和重新打包apk

ODEX是安卓上的应用程序apk中提取出来的可运行文件,是通过apk安装包的中的dex优化过的,再把apk包里的dex文件删除。
这样做可以加快软件的启动速度,预先提取,减少对RAM的占用,因为没有odex的话,系统要从apk包中提取dex再运行。

Odex化后系统启动和程序运行速度大大提高,稳定性不变。因此推荐做Odex化。
一般来说官方rom都是odex化的rom(含Odex文件),所以要从这中ROM中提取apk需要将odex转成dex。

下载软件工具:

http://code.google.com/p/smali/downloads/list


现在我们要对CardManager.odex进行反编译,以CardManager.odex为例。

1:java -jar baksmali-1.3.2.jar -a 12 -x CardManager.odex    

这时候出现问题:

Error occured while loading boot class path files. Aborting. 
org.jf.dexlib.Util.ExceptionWithContext: Cannot locate boot class path file bouncycastle.odex 
at org.jf.dexlib.Code.Analysis.ClassPath.loadBootClassPath(ClassPath.java:237) 
at org.jf.dexlib.Code.Analysis.ClassPath.initClassPath(ClassPath.java:145) 
at org.jf.dexlib.Code.Analysis.ClassPath.InitializeClassPathFromOdex(ClassPath.java:110) 
at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:96) 
at org.jf.baksmali.main.main(main.java:278) 
这是由于缺少core.odex, ext.odex, framework.odex, android.policy.odex, services.odex, bouncycastle.odex, core-junit.odex, 这7个文件的问题,将framework下的这7个odex文件一并考到同级目录下,在运行命令会生成一个out文件夹,里面的文件以.smali结尾

2:生成 classes.dex文件

运行 java -jar smali-1.3.2.jar out/ -o classes.dex


反编译framework.odex 

java -Xmx512m -jar baksmali-1.3.2.jar --api-level 12 -c:core.jar:bouncycastle.jar:ext.jar:framework.jar:android.policy.jar:services.jar:core-junit.jar -d framework/ -x framework.odex 

 

重新打包

参考: http://nitinzzz.blogspot.com/ (注:这个被墙了 !!=_=!!)

  • 首先,准备工具
    • apktool apk_manager , 点这里下载
    • zip 的 管理工具 ,这个 ubuntu 底下默认有了。
    • jdk 的 jarsigner , 我这里路径为 /home/nxliao/tool/android/jvm/java/jdk1.6.0_25/bin/jarsigner
    • android sdk 的 debug.keystore ,在ubuntu下为 ~/.android/debug.keystore
  • 准备实验对象
  • 改装
    1. 用 zip 管理工具打开这个 apk,删除里面的 META-INF 目录
    2. 用 apktool 解压处理过的 apk
       $ ./apktool d ~/tmp/jianjiuhongchenfengha_V1.0_mumayi_85342.apk ~/tmp/jianjiuhongchenfengha
    3. 用 vi 打开目标代码
      $ vi ~/tmp/jianjiuhongchenfengha/smali/com/sg/android/fish/FishActivity.smali
    4. 转到第 330行(在 .method private init()V 内),将 const/16 v6, 0xc8 修改成 const/16 v6, 0x647d (也可以设置成其它数值),即可将初始金钱改成 0x647d =25752
    5. 保存退出
    6. 用 apktool 重新打包 apk
      $ ./apktool b ~/tmp/jianjiuhongchenfengha ~/tmp/jian.apk
    7. 这时候新的apk还不能直接安装,需要打上签名。用jdk的 jarsigner 打上签名
         $ jarsigner -verbose -storepass android -keystore ~/.android/debug.keystore ~/tmp/jian.apk androiddebugkey

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 全自动odex2dex是一种针对安卓系统上的应用进行优化和修改的工具odex文件是安卓系统中对应用进行优化后的文件,而dex文件是未优化的原始文件。全自动odex2dex能够将应用从odex格式换回dex格式,使得开发者能够对应用进行修改和调试。 全自动odex2dex的作用主要有以下几个方面:首先,它能够还原应用的dex文件,方便开发者在分析和调试应用时进行反编译和代码分析。其次,通过还原dex文件,开发者可以对应用进行修改和优化,改善其性能和功能。对于一些需要进行二次开发的应用,全自动odex2dex能够提供更大的灵活性和自定义性。此外,全自动odex2dex还可以用于研究和学习安卓系统的运行原理和应用优化。 全自动odex2dex的工作原理是通过解析odex文件中的优化指令和数据,还原出应用的原始dex文件。它可以识别并还原出dex文件中的类、方法、字段等元素,并提供相应的修改和调试工具。全自动odex2dex还可以根据开发者的需求,进行一些针对性的优化和修改,比如去除无用的优化指令、修复bug等。 总的来说,全自动odex2dex是一种方便开发者对安卓应用进行修改和优化的工具。它能够将odex文件换为dex文件,从而方便开发者对应用进行分析、调试和二次开发。通过全自动odex2dex,开发者可以更好地理解和改进安卓应用,提升应用的性能和功能。 ### 回答2: 全自动odex到dex改进的方式是通过使用特定的工具来实现。首先,我们需要明确odex和dex之间的区别。odex是一种为Dalvik虚拟机优化过的dex文件,它包含了预先编译的Dalvik字节码和相关的优化信息。而dex是Dalvik虚拟机可执行的文件格式,它包含了未经优化的Dalvik字节码。 全自动odex到dex改进可以按照以下步骤实现: 1. 解压odex文件:我们可以使用工具odex文件解压成对应的dex文件和相关的优化信息文件。 2. 反编译dex文件:使用反编译工具dex文件反编译成可读的Java源代码。这可以帮助我们理解原始代码的结构和逻辑。 3. 修改Java源代码:根据需求,我们可以对反编译得到的Java源代码进行修改。例如,修复bug、添加新功能等。 4. 重新编译dex文件:使用编译工具将修改后的Java源代码重新编译成dex文件。这将生成一个包含修改后代码的可执行文件。 5. 优化dex文件:使用优化工具重新编译后的dex文件进行优化。这将提高代码的执行效率和性能。 6. 打包和安装:将优化后的dex文件打包APK文件,并将其安装到Android设备上进行测试和验证。 全自动odex到dex改进的过程可以自动化,通过使用相应的工具和脚本来实现。这将提高开发效率和代码质量,同时保证应用在Dalvik虚拟机上的正确执行。 ### 回答3: 全自动odex 2 dex(改)是一种计算机技术,用于将已经经过应用程序优化(odex)的Android应用化为Dalvik虚拟机可以运行的dex文件。 在Android操作系统中,应用程序通常以apk格式存在,其中包含了Java代码和资源文件。为了优化应用程序的运行速度和性能,Android系统会对应用程序的字节码进行预处理和优化,生成odex文件。odex文件包含了已经被优化和调整过的字节码和方法信息。 然而,在某些情况下,我们可能需要将odex文件化为dex文件进行进一步的分析和修改。全自动odex 2 dex(改)则是为了解决这一需求而设计的工具。 全自动odex 2 dex(改)可以通过逆向工程技术将odex文件还原成dex文件,并且可以对这些dex文件进行修改。这些修改可以包括调试信息的插入、字节码的修改、资源文件的替换等操作,从而实现对应用程序的定制和优化。该工具的全自动化特性使得化和修改过程更加便捷和高效。 全自动odex 2 dex(改)不仅可以用于安全研究和漏洞分析,也可以用于改变应用程序的行为和外观,以满足个性化的需求。然而,我们需要明确,在进行这些操作时要遵循法律法规和道德规范,以免侵犯他人的合法权益。 总之,全自动odex 2 dex(改)是一种强大的工具,为我们提供了将odex文件化为dex文件并修改的能力,可以广泛应用于安全研究、漏洞分析和应用程序优化等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值