dex2jar工具及问题

目的将dex文件反编译成jar

步骤如下:

(1) 将apk重命名为zip;

(2) 用zip解压classes.dex;

(3) 执行 d2j-dex2jar  classes.dex //将classes.dex反编译成classes-dex2jar.jar

     dex2jar classes.dex -> .\classes-dex2jar.jar 

可选参数如下:

usage: d2j-dex2jar [options] <file0> [file1 ... fileN]
options:
-d,--debug-info translate debug info //转 debug信息
-e,--exception-file <file> detail exception file, default is $current_dir/[file-name]-error.zip //指定报错文件路径文件名
-f,--force force overwrite //强制覆盖目标文件
-h,--help Print this help message //帮助
-n,--not-handle-exception not handle any exception throwed by dex2jar //不处理异常
-nc,--no-code
-o,--output <out-jar-file> output .jar file, default is $current_dir/[file-name]-dex2jar.jar //指定输出jar包文件路径文件名
-os,--optmize-synchronized optmize-synchronized//??
-p,--print-ir print ir to Syste.out
-r,--reuse-reg reuse regiter while generate java .class file //复用寄存器?
-s same with --topological-sort/-ts
-ts,--topological-sort sort block by topological, that will generate morereadable code, default enabled

支持直接decode apk文件,命令如下:

d2j-dex2jar  xxx.apk

 

FAQ 

1  遇到 "not support version"问题? 

E:\Decompilation\Dex2jar\dex2jar-2.0>d2j-dex2jar.bat  classes.dex

dex2jar classes.dex -> .\classes-dex2jar.jar

com.googlecode.d2j.DexException: not support version.

        at com.googlecode.d2j.reader.DexFileReader.<init>(DexFileReader.java

        at com.googlecode.d2j.reader.DexFileReader.<init>(DexFileReader.java

        at com.googlecode.dex2jar.tools.Dex2jarCmd.doCommandLine(Dex2jarCmd.

        at com.googlecode.dex2jar.tools.BaseCmd.doMain(BaseCmd.java:288)

        at com.googlecode.dex2jar.tools.Dex2jarCmd.main(Dex2jarCmd.java:32)

解决办法:将dex文件以16进制打开(例如用Ultra Edit), 若前八位是不是“64 65 78 0A 30 33 35 00”(字符串格式为“dex.035."),

则将其修改为“64 65 78 0A 30 33 35 00”保存好再进行反编译即可

 

2 关键代码解不出来?

可以尝试使用Jadx-gui工具打开,大部分java代码都能自动反解出来,但是仍然有些反解不出。

 

Jadx-gui工具

使用简单,只用把apk或dex文件拖拽到界面上,自动反解,用时较慢。

 

luyten 工具

该工具只能打开jar包,只用把jar文件拖拽到界面上,自动反解。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值