赞
踩
具体的安装和使用,推荐看这篇文章吧点这里
关键命令:
d2j-dex2jar classes.dex
ps:将获取到的classes.dex放到之前解压出来的工具【dex2jar-2.0】文件夹内,执行此命令即可。得到classes-dex2jar.jar文件之后,用【jd-gui】工具将class文件反编译成java源代码。
首先访问 ApkTool 官方文档,安装apktool工具:
注意文档是英文版的,下方截图是翻译后的:
ps:window系统按照第一种方式配置就行了。第一步我们下载脚本语言,新建一个txt文本,复制进去脚本后,保存文本为apktool.bat 文件。第二步下载最新的apktool jar包。第三步把这2个文件,放到C盘Windosw目录下或者配置到环境变量中。
进行这种配置的目的是:我们可以直接使用 apktool 命令。
一切就绪后,关键命令:
apktool d 考勤_1.1.5.apk
如果你不进行上面的apktool配置,此命令也可以:
java -jar apktool_2.5.0.jar d -f E:\Android反编译工具包\测试apk\考勤_1.1.5.apk -o MMTS
其中d是decode的意思,表示我们要对考勤_1.1.5.apk这个文件进行解码。那除了这个基本用法之外,我们还可以再加上一些附加参数来控制decode的更多行为:
到这里我们已经可以反编译资源文件和java代码了。当我们修改了资源文件和相应代码逻辑后,下面来进行重新代码和签名apk。
这里可能有小伙伴要问了,怎么修改代码逻辑呢。如果你精通 smali 语法,恭喜你牛X。一窍不通,也没有关系。
这里值得一提的是smali文件夹,如果你进入到这个文件夹中你会发现它的目录结构和我们源码中src的目录结构是几乎一样的,主要的区别就是所有的java文件都变成了smali文件。smali文件其实也是真正的源代码,只不过它的语法和java完全不同,它有点类似于汇编的语法,是Android虚拟机所使用的寄存器语言。
这里提供一个思路:
(1)我们要通过反编译得到的java代码,查看代码逻辑后,在去阅读与之对于的smali文件,会更好一些。
(2)自己可以写个简单项目,反编译后找到smail文件夹,比对实际java代码和smail代码的关系。例如java定义个boolean变量是这样:
private boolean isIn=true;
而smail代码是这样:
关键命令:
apktool b 考勤_1.1.5
如果你不进行上面的apktool配置,此命令也可以:
java -jar apktool_2.5.0.jar b
ps:注意,考勤_1.1.5 是当时反编译后文件夹的名字,在当前文件的路径下,执行此命令成功后,会在 考勤_1.1.5 文件夹下多个dist文件夹,里面有重新打包后的考勤_1.1.5.apk
此apk还需要再次签名,才能使用。如果你已经拿到了此app的签名文件和签名秘钥,那么恭喜你,重新打包后apk完全可以代替反编译前的apk。不过一般此文件我们是得不到的。那我们只能自己重新生成一个签名文件,再用此签名文件,对app重新签名。
进入到dist文件夹后,把签名文件也放到此目录下,执行关键命令:
jarsigner -verbose -keystore 密钥库名称 -signedjar 考勤_1.1.5_signed.apk 考勤_1.1.5.apk 别名
说明:
-verbose 输出签名的详细信息
-keystore watson.keystore 使用key的绝对路径,就是在第一步中生成的key
-signedjar Decompile_signed.apk Decompile.apk watson.keystore 正式签名,三个参数中依次为签名后产生的文件Decompile_signed,要签名的文件Decompile.apk和密钥库的alias
例如:
jarsigner -verbose -keystore watson.keystore -signedjar 考勤_1.1.5_signed.apk 考勤_1.1.5.apk fangke
ps:输入此命令回车后,接着会提示你输入签名文件秘钥,正确输入秘钥后就能再次签名成功,生成 “考勤_1.1.5_signed.apk”文件。到这里恭喜你已经完全成功啦。
当安装签名后的apk时,如果遇到安装失败,并且有如下错误提示时:
Failure [INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2]
此时要看看源代码清单文件中 application 标签下是否有 如下配置:android:extractNativeLibs=“false” 有的话,删除后再次签名打包就行啦!
可以搜索 apkdb 关键字,也可访问这个网址:点这里,下载此工具。
该工具实现了傻瓜式反编译和逆向打包。不过发现最近的一次更新也是18年的,比较老旧了。感兴趣的小伙伴也可以了解一下。
这里附个截图吧:
参考文章:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。