android 反编译(dex 和 odex),非脑残转帖,绝对可靠

本文介绍如何使用特定工具反编译 Android 的 ODEX 文件(如 framework.odex),并将其转换为可读的 Java 代码。主要内容包括:设置工作目录、运行反编译命令、解决常见错误以及最终生成可读的源代码。

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

Android 反编译

反编译odex文件(比如framework.odex),若是反编译dex,直接第4步

1.因为反编译odex的工具在D:\Develop tools\android反编译工具\odex中,因此为了运行命令方便一点在odex目录里面,将system的目录结构给新建一下,将反编译的odex中所引用的全部包都放到相应的目录下
system-----
     |-------app
     |-------framework

2.java -jar baksmali-2.0.3.jar -d ./system/framework -x ./system/framework/framework.odex
-d      指定bootclasspath dir
-x      deodex the given odex file. This option is ignored if the input file is not an odex file
-a      --api-level <API_LEVEL>,The numeric api-level of the file being disassembled. If not specified, it defaults to 15 (ICS).
         网上非常多人转那个帖子都写的是-a 12, 不是必需

3.运行完上面的命令后就会在odex目录下生成一个out目录,里面就是层次结构了,注意:在运行上面命令之前看一下之前有木有out目录,有旧的out目录的话,可能导致以下要运行的命令抛出异常,因此要将旧的out目录删除,异常例如以下:
UNEXPECTED TOP-LEVEL EXCEPTION:
org.jf.util.ExceptionWithContext: Unsigned short value out of range: 78281
        at org.jf.dexlib2.writer.DexDataWriter.writeUshort(DexDataWriter.java:11
6)
        at org.jf.dexlib2.writer.InstructionWriter.write(InstructionWriter.java:
312)
        at org.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:980)
        at org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java
:759)
        at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:214)
        at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:192)
        at org.jf.smali.main.main(main.java:229)
最后将转为classes.dex的命令:java -Xmx512M -jar smali-2.0.3.jar out -o classes.dex

4.最后一步就是讲classes.dex反编译为jar文件了,用d2j-dex2jar命令:d2j-dex2jar -f classes.dex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值