APK反编译

最近简单的学习了下APK的反编译,现记录一下。

APK反编译用到的工具可以在此下载:http://download.csdn.net/detail/fengshuiyue/9622980

其中包含的工具有:

1)apktool:反编译资源文件

2)dex2jar:将apk反编译成jar

3)jd-jui:jar文件查看工具,反编译class文件为java文件


1.反编译apk资源文件

将apk文件放到apktool目录下,如下图:


打开cmd,运行 apktool d -f 310.apk 反编译apk,如下图:

(apktool参数:d表示反编译;-f表示如果目标文件已存在,则强制替换)


反编译后目录如下图:


其中:

original文件夹:存放未经反编译过的原始的AndroidManifest.xml文件

res文件夹:存放反编译出来的所有资源文件,图片和xml等

smali文件夹:该文件夹下的子目录和apk源码中的src目录结构是一样的,但是其中的文件是smali文件;smali文件是Andorid虚拟机所使用的寄存器语言,其也是正在的源代码。

2.打包反编译文件夹到apk文件

打开cmd,运行  apktool b 310.apk 重新编译apk,如下图:


会在310目录下面生成 buliding和dist两个目录,dist目录下面即是我们需要的apk文件了,如下图:


重新打包的apk文件不能直接安装,安装时会报包解析错误,此时我们需要下面得操作—>apk重新签名

3.apk重新签名

任然在cmd中运行命令,命令如下:

1)使用jdk自带命令keytool生产签名文件

keytool -genkey -alias 310.keystore -keyalg RSA -validity 9999999 -keystore 310.keystore
其中:
-genkey 产生密钥
-alias demo.keystore 别名 310.keystore
-keyalg RSA 使用RSA算法对签名加密
-validity 有效期限4000天
-keystore 数字签名文件名称310.keystore

2)使用jdk自带命令jarsigner签名apk

jarsigner -verbose -keystore 310.keystore -signedjar 310_signed.apk 310.apk 310.keystore

其中:

-verbose 输出签名的详细信息
-keystore  310.keystore 密钥库位置
-signedjar 310_signed.apk 310.apk 310.keystore 正式签名,三个参数中依次为签名后产生的文件310_signed,要签名的文件310.apk和密钥库310.keystore.

整个操作如下图:



一般apk的汉化通过1、2、3步,在配合上资源文件的修改即可完成,下面将是要介绍apk源码的反编译。

4.apk的JAVA源码反编译

apk的JAVA源码反编译我们就需要用到apk原始文件中的classes.dex文件了,将apk扩展名修改为zip后,解压,我们可以看到如下图的目录结构:


在cmd界面进入dex2jar目录,执行dex2jar.bat classess.dex 命令,如下图:


classes_dex2jar.jar即为反编译好的jar文件了,下面jd-jui将要出场了。

5.jar文件反编译

将4步中反编译的classes_dex2jar.jar拖入jd-jui中,我们即可看到项目中整体的包目录和源文件了,如下图:


选中file-sava all source即可将源码按目录结构保存到磁盘,如下图:



打开eclipse新建android工程,将步骤1中的资源文件、lib文件;步骤5反编译的源码文件按照android工程的目录结构复制到相应位置,下面就可以修改apk中的相应的功能了。


上述步骤4、5中反编译出来的源码是没有经过混淆的,如果apk是混淆过的那么我们仅仅只能大体阅读下该apk的相关的思路,无法原样拷贝到工程中使用,混淆过的apk反编译出来的目录结构如图:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风水月

从心底相信自己是成功的第一步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值