apk反编译

工具介绍:

apktool  

     作用:主要查看res文件下xml文件、AndroidManifest.xml和图片。(注意:如果直接解压.apk文件,xml文件打开全部是乱码)

dex2jar

     作用:将apk反编译成Java源码(classes.dex转化成jar文件)

jd-gui

     作用:查看APK中classes.dex转化成出的jar文件,即源码文件


smali2java 

作用:smali2java将smali代码反编译成java代码。

新版本apktool用法:

1、下载:



当然了上面这个链接和图片描述的可能也会变。
目前就是下载两个文件apktool.bat和apktool.jar(这个如果你下载的文件有版本号,比如apktool_2.2.1.jar,就要改名字为apktool.jar),
然后把上面两个文件都放到C://Windows下面。(我是windows系统,其他系统按照自己的来)

2、使用方法


官网教程

$ apktool d test.apk
I: Using Apktool 2.2.1 on test.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: 1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
$ apktool b test
I: Using Apktool 2.2.1 on test
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
I: Copying unknown files/dir...
        
其实就是,运行CMD,进入比如app-release.apk所在目录,然后运行apktool d app-release.apk就可以了,默认解压的文件就在app-release.apk所在目录。







最后,如果我上面的方法不能用了,请看英文的原网页怎么说。



比如:

http://blog.csdn.net/vipzjyno1/article/details/21039349/#reply


二、Apk反编译得到Java源代码

下载上述工具中的dex2jarjd-gui ,解压

将要反编译的APK后缀名改为.rar或则 .zip,并解压,得到其中的额classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的classes.dex放到之前解压出来的工具dex2jar-0.0.9.15 文件夹内,

在命令行下定位到dex2jar.bat所在目录,输入dex2jar.bat   classes.dex效果如下:

在改目录下会生成一个classes_dex2jar.jar的文件,然后打开工具jd-gui文件夹里的jd-gui.exe,之后用该工具打开之前生成的classes_dex2jar.jar文件,便可以看到源码了,效果如下:

被混淆过的效果图(类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名):



smali2java 是一款能够将smali代码反编译成java代码的工具

软件基于 apktool  v1.5.0(baksmali v1.3.4)生成的smali文件,依赖于smali文件中的代码行数(.line关键字)和变量别名(.local关键字)等信息,可以最大程度还原原始的java代码,并且还原出的java代码将具有原始的变量命名,代码的顺序也与原始的java代码保持一致,使用非常方便快捷,有需求的朋友请下载体验

使用介绍

1、解压后运行“Smali2JavaUI.exe”,点击右上角的“打开”按钮,将我们需要编译的apk文件载入,smali2java会自动反编译该apk文件。如下图所示:

2、smali2java使用了apktool将Android字节码文件转换为smali文件,左侧树型列表中显示了当前apk文件所有的java文件,如下图所示:

3、选择需要导出的java对象,点击“保存”按钮,可将该编译文件导出

4、如果您需要处理的是已经反编译之后的smali文件,可以选择“文件”—"处理单个smali…",进行转化,还原出的java代码将具有原始的变量命名,代码的顺序也与原始的java代码保持一致

温馨提示

由于smali2java主要依赖于smali文件中的代码行数(.line关键字)和变量别名(.local关键字)等信息进行反编译,所以具有一定的局限性,仅适用于带有行数和变量别名信息的smali文件(java编译器的编译选项可以在生成的字节码中剔除这些信息),请用户酌情使用



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值