app反编译

在进行安卓开发或者爬虫开发过程中,偶尔会遇到需要将app进行反编译分析参考源码的需求,接下来,笔者将自己实践过程记录下来,給需要的朋友一个参考。仅供学习之用,勿做坏事儿,哈哈哈!

准备工作:确保电脑已经配置好了java环境,最好是jdk1.8以上

使用工具:

apktool (作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看)  下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads/

dex2jar(作用:将apk反编译成java源码(classes.dex转化成jar文件)) 下载地址:https://sourceforge.net/projects/dex2jar/files/

jd-gui  (作用:查看APK中classes.dex转化成出的jar文件,即源码文件) 下载地址: http://java-decompiler.github.io/

百度云盘下载地址:https://pan.baidu.com/s/1u7h1VT8WCW4vhQXpzq6png

将下载好的工具放在指定目录,解压,如下图所示:

1.用apktool反编译apk得到图片、XML配置、语言资源等文件

1.1 使用cmd命令cd到工具所在的目录,例如

cd C:\Users\lyl\Desktop\app反编译相关

1.2 使用 apktool 反编译得到 图片、XML等静态资源

java -jar [apktool_2.4.0.jar] d -f [apk地址] -o [输出的目录名称]

例如下图所示,我这里需要反编译的app为非常准的app,名字为:feichangzhun_142.apk:

执行成功之后,将会在指定的 fcz 目下生成如下图类似的文件,资源都在这里面:

如果你想将反编译完的文件重新打包成apk,那你可以:

java -jar [apktool_2.4.0.jar] b fcz (你编译出来文件夹)

例如:

java -jar apktool_2.4.0.jar b fcz

之后在之前的fcz文件下便可以发现多了2个文件夹:

build

dist(里面存放着打包出来的APK文件)

2.Apk反编译得到Java源代码

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

2.1 在命令行下定位到 dex2jar.bat所在目录,输入

dex2jar.bat  classes.dex

如图:

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

备注:如果要反编译的app是加了壳的话,需要脱壳,这里推荐有个大佬的文章地址可以参考一下:http://www.52bug.cn/cracktool/4794.html

作者我这里这个app也是使用的360加壳过的,所以也需要进行脱壳处理,具体脱壳步骤将在下一篇文章进行记录

3.签名

在从新打包之后,需要进行重新签名,这样才能在手机上成功安装,这里需要下载 Auto-sign.zip 工具,我这里有整理一份以上传百度云盘,下载地址:https://pan.baidu.com/s/1JeA4MkS7BWdeQkSHLvUs1w

将 Auto-sign.zip 解压,然后通过命令行 cd 到路径下,并且把要签名的app拷贝进去,例如我这里要签名的app为 飞常准.apk ,拷贝进去之后,目录结构如下图:

在命令行使用此命令进行签名

java -jar signapk.jar testkey.x509.pem testkey.pk8 飞常准.apk fcz.apk

注意:这里的 fcz.apk 是指的签名成功之后,要生成的新的app名称

执行成功之后,将会在当前目录生成已经签名好的新文件,如下图

我这里遇到一个问题,就是我已经从新签名之后,并且把安装包发到手机上也成功安装了,但是打开运行app之后,会闪退,不不知道是否是我修改源码之后,修改出了问题,如有遇到同样问题的朋友,可以留言互相交流下喔!

发布了130 篇原创文章 · 获赞 84 · 访问量 94万+

猜你喜欢

转载自blog.csdn.net/qq_32502511/article/details/102837593
今日推荐