如何反编译apk,查看源码

最近尝试着反编译自己的apk,照着百度上的一些方法,文章都比较老了,总是报各种错,现在我总结一下如何反编译apk

一、首先确保电脑配置了java运行环境,如何配置java环境,我不在述说,可自行百度,为了反编译apk,我们需要下载3个工具

(1)apktool

    作用:利用apktool查看apk的xml文件、AndroidManifest.xml和图片等。

    进入官网https://ibotpeaches.github.io/Apktool/install/,不同的操作系统按不同的步骤来就可以了,我是window操作系统。

(2)dex2jar

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

   下载地址:http://sourceforge.net/projects/dex2jar/files/

(3)jd-gui

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

   下载地址:http://jd.benow.ca/

将dex2jar、jd-gui解压,最好是将这三个工具放在同一个文件夹下,方便自己使用。

二、运行编译

将需要反编译的apk移动到这三个文件夹下,win+R,输入cmd调出命令行窗口,切换到apktool文件夹目录下: 

(1)运行:apktool d test.apk,反编译时,出现了如下错误:

WARNING: Could not write to (/Users/xxx/Library/apktool/framework), using /var/folders/wr/svbl4qg12kq75hghq7nr4lch0000gn/T/ instead...
S: Please be aware this is a volatile directory and frameworks could go missing, please utilize --frame-path if the default storage directory is unavailable

 

看提示是无法写入到这个目录/Users/xxx/Library/apktool/framework(xxx为电脑用户名),那就在/Users/xxx/Library下新建apktool文件夹,并在apktool文件夹下再新建个framework文件夹,然后为了保险起见设置新建文件夹到权限,在终端输入:chmod -R 777 /Users/xxx/Library/apktool
接着再重新执行反编译命令就可以成功了

 在test.apk相同目录下会出现反编译后的文件夹。

 (2) 把apk后缀名改为zip,然后解压后,就会发现有个classes.dex,这里面就是java源码了。

 (3) 把dex文件拷贝到dex2jar-2.0解压后的目录下,cmd窗口进入到dex2jar-2.0下,运行:d2j-dex2jar.bat classes.dex回车 

完成后我们在F:\Android\apktools\dex2jar-2.0目录下就会多了个classes-dex2jar.jar文件,这个就是我们需要的jar文件。

(4) 如何查看java代码了,用工具jd-gui打开classes-dex2jar.jar就可以了,如果你的apk经过混淆,那么看到的都是a、b之类的。 

三、重新打包

在终端输入编译命令: apktool b xxx (xxx为刚才反编译的文件夹),成功后会在xxx文件夹下的dist文件夹下生成打包好后的apk文件。现在打包好后的apk是没有签名的,所以无法安装,现在给apk签名

(1) 在终端输入:

keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore /Users/xxx/Desktop/android.keystore

20000为时间,这个设置长点就好了,-keystore后面是签名文件保存路径。输入命令按回车键会让输入密码等信息,按提示输入,不要忘了密码,签名时要用。

(2)接着输入:

jarsigner -verbose -keystore /Users/xxx/Desktop/android.keystore -signedjar /Users/guyuechao/Desktop/signed.apk /Users/xxx/Desktop/unsigned.apk android.keystore

-keystore后面的为签名文件的路径,-signedjar后面为签名好后apk的存放路径,在这个后面的一个为需要签名的pak的路径,最后的android.keystore为证书的别名,如果不知道别名,可以在终端输入:keytool -list -v -keystore /Users/xxx/Desktop/android.keystore查看具体信息,里面有别名。
这一步还要注意,签名文件和需要签名的apk要在同一目录下。

 

反编译Apk得到Java源代码 工具下载:需用到dex2jar和JD-GUI这2个工具 dex2jar下载地址:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip JD-GUI下载地址: windows版JD-GUI:http://laichao.googlecode.com/files/jdgui.zip Linux版JD-GUI:http://laichao.googlecode.com/files/jd-gui-0.3.2.linux.i686.tar.gz 步骤: 1.首先找到Android软件安装包中的classes.dex 把.apk文件改名为.zip,然后解压缩,得到其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件 2.把classes.dex拷贝到dex2jar.bat所在目录。 在命令行模式下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex ,生成classes.dex.dex2jar.jar 3.运行JD-GUI工具(它是绿色无须安装的) 打开上面的jar文件,即可看到源代码 --------------------------------------------------------------------------------- 二.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件。 转载自:http://blog.sina.com.cn/s/blog_5752764e0100kv34.html 工具下载: 在http://code.google.com/p/android-apktool/下 载获得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。 步骤:(可参考 http://www.xinyingde.com/Article/608.Html ) 1.解压缩下载的两个文件包,apktool-install-windows-2.1_r01-1.zip解压缩后得到的包里有aapt.exe 和apktool.bat. 2.打开命令窗口 (开始 > 运行,输入cmd,回车。)进入到apktool.bat的文件夹里。 输入:apktool d C:***.apk C:***文件夹 (命令行解释:apktool d 要反编译的文件 输出文件夹) 特别注意:你要反编译的文件一定要放在C盘的根目录里, 3.打开C:***文件夹 就可以得到我们学院的各种资源了。 (所有需要的文件已经打包放在附件里了)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值