怎么对apk文件进行反编译以及重新打包签名
最近在看视频的时候看到有关apk文件如何反编译的,顿时提起了自己的兴趣,记得在刚刚学习Android的时候就对这份面有兴趣,只是当时自己的技术…咳…现在自己…咳咳..咳…
注:以下的前提是Java相关环境变量配置完成
我觉得反编译无非就是能够得到其apk的资源文件,以及java代码等
常用的工具有:apktool、jeb、Smali2Java等,下面我会一一介绍这几种工具的用法,展示下自己这两天的百度成果
Apktool
下载地址:
http://download.****.net/detail/w18756901575/9515620
中文版:
http://download.****.net/detail/w18756901575/9515642
查看帮助:
输入:
java -jar apktool-v2.0.0RC2.jar
当你把文件下载下来之后是一个.jar文件,我一开始也不知道.jar文件是如何使用,仅仅知道是个架包可以导入libs下使用,还可以解压,但这个.jar文件并不是这样用的.
在你下载的.jar包所在文件夹下,在搜索栏输入cmd回车,打开dos窗口,或者是直接打开dos,cd到.jar文件所在的目录
反编译
输入命令:
apktool-v2.0.0RC2.jar 是.jar文件名称
d 是反编译
a.apk 是文件路径加名称,因为我的a.apk和架包apktool在一个文件夹下所以直接输入文件名称就可以了
apktool-v2.0.0RC2.jar d a.apk
然后在apktool所在文件夹下会生成一个以apk文件的名称命名的文件夹
文件结构如下:
其中assets、res文件夹对应原来工程中的文件,这样就可以原原本本的拿到原项目的图片、xml文件,并根据自己的需要进行修改
smali文件夹对应的是原Java文件,里面都是.smali文件,这个文件是可以修改的,修改他就相当于修改java代码。
.smali文件的内容是用smali语法编写的,我们一般编写都是对.java文件进行编写.smali文件阅读起来着实费力,初学者根本看不懂.smali代码,额..至少我看着很晕,如何将其转化成java代码可供阅读呢?不要着急,在下面我会讲到了。
接下来来讲解如何对修改后的文件进行重新打包
输入以下命令
b 是对修改后的文件重新打包
a 是刚刚解压的文件夹
apktool-v2.0.0RC2.jar b a
如果没有错误的话就会生成dist文件夹里面就是打包的apk文件
记住如果修改的文件有错误的话,是编译不通过的,那么就只会生成
build\apk 文件夹而其中没有任何东西,也不会生成dist文件夹
这个时候我们已经得到了apk文件,注意这个时候,因为没有签名文件,apk是无法安装的
如何对apk文件重新签名
想要对apk文件进行重新签名,这个时候我们就用到了另外一种工具
re-sign
输入:jarsigner可查看re-sign的帮助
下载地址:
http://download.****.net/detail/w18756901575/9515623
输入命令:
jarsigner -keystore G:\FuZa\WeChatSDK_sample_Android221cbf\debug.keystore -storepass android -keypass android D:\apktool\a\dist\a.apk androiddebugkey
其中:
G:\FuZa\WeChatSDK_sample_Android221cbf\debug.keystore是debug.keystore路径
D:\apktool\a\dist\a.apk 是需要重新签名的文件路径加文件名
这个时候我们就对刚刚的apk文件进行了重新签名,然后就可以安装了
如何查看java源码:
使用jeb
下载地址:
http://download.****.net/detail/w18756901575/9515633
下载下来之后解压:
然后在xxxx\jeb-1.5.201404100_modified_by_scz(20140711)\64-bits\bin
文件夹下运行dos命令(它有32位和64位两个文件夹,根据自己的需要去运行)
java -jar jeb.jar
然后就会启动jeb
启动之后的事情就很简单了,只需要直接将apk文件拖入其中就可以了,apk文件比较大的会有一小会的卡顿是正常现象。
这个时候就是可以查看源码了,
tab键可以在smali代码和java代码中切换
需要注意的是,在jeb中是不可以修改其代码的
Smali2Java
下载地址:
http://download.****.net/detail/w18756901575/9515648
使用Smali2Java查看java源代码
Smali2Java就跟简单了,下载文件之后解压,得到Smali2JavaUI.exe可执行文件,打开文件,然后就像jeb一样,把apk文件往里面一拖就行了
注意:Smali2Java也不可修改java代码