如何在Mac上面进行AndroidApk反编译

今天是1024程序员节,闲来无事想着反编译几个apk来玩,之前在windows上面编译的十分6,可是在Mac上面试了之前的方法,一直提示command not found: apktool,Google了一番,原来是要进行配置的,今天我们从头开始进行apktool的配置,亲测成功。

1. 打开你的终端,输入cd /usr/local/bin,为什么打开这个路径,后面会说到,如果没有此目录创建一个就好,sudo mkdir bin,然后输入权限密码,ls查看已经有了此目录。

这里写图片描述
我这里已经有的这目录
2. 然后下载我们需要的小工具

这里写图片描述
后面会给出下载链接的,然后将其中前三个复制到我们刚刚创建的bin目录下面,复制不是简单的ctrl+c,ctrl+v,而是cp,

这里写图片描述
回车,输入密码,复制进去,ls,查看,里面已经有了

这里写图片描述
到这里我们的环境变量已经配置好了,为什么会这样说那。
3. 我们只需要在命令行中输入echo $PATH,回车就可以看见,在环境变量里面我们已经配置过的目录,实际上我们把apktool放在这些其中的一个就好,

这里写图片描述
从一开始我就说的那个目录实际上就在这里面。
4. 现在我们打开一个空命令行界面,输入apktool,看到下面这些东西,证明已经是成功的啦。

这里写图片描述
5. 工欲善其事,必先利其器,我们的工具已经好了,下面就开始反编译了,下面的东西就简单了,随便找一个apk,然后通过命令行进入到apk的目录,然后通过apktool d [apk的名字],回车

这里写图片描述
然后看目录下面会多处一个和apk名字一样的文件夹,那我们已经成功了。
6. 反编译出来的这些的东西,我们只能简单的看到布局和图片,有可能这些东西都看不到,那我们接下来反编译java文件
7. 我们讲我们的apk重命名成zip文件,然后通过解压工具解压出来,会得到这么一个东西,我们只需要里面.dex的东西

这里写图片描述
8. 然后我们吧这个东西复制出来,放到这个目录里面

如何在Mac上面进行AndroidApk反编译_第1张图片
9. 然后我们再打开终端,进入到这个目录,输入命令sh dex2jar.sh classes.dex回车,然后这个目录里还会多出一个文件classes.dex2jar.jar的东西,这里就不截图了,应该会在最上面。
10. 最后用jd-gui工具打开这个jar包就可以看到java源代码了

这里写图片描述

这里写图片描述

最后再给大家说一点好玩的,如果你对一个app反编译很成功,没有乱码,那么你们只可对他的布局文件已经图片进行些许修改,然后重新打包发不,这种方式是不推荐的,但是平时玩玩还是挺好的,嘿嘿,既然我们的环境已经配置好了,那就说一下吧。
1. 通过命令行进入到你刚刚修改的那个反编译的文件,执行如下命令

这里写图片描述
然后就可以看到在原文件夹下面会多出一个dist文件夹,重新打包的APK就存在下面,哈哈,嗨森.
2. 签名文件的配置。将你准备签名的keystore放到当前目录下,运行命令:

这里写图片描述
解释一下这里面的意思
【keystore】:bxp.keystore
【签名后的apk名字】:new.apk
【签名前的apk名字】:com.sina.weibo.apk
如果您没有keystore或者是不知道keystore密钥库的口令,那么您需要自己做一个,怎么做?一步步来!
3. 看图识字

如何在Mac上面进行AndroidApk反编译_第2张图片
4. 命令参数说明:

-genkey 产生证书文件
-keystore 指定密钥库的.keystore文件中
-keyalg 指定密钥的算法
-validity 为证书有效天数,这里我们写的是10000天。
-alias 产生别名

在输入密码时没有回显,只管输入就可以了,一般位数建议使用20位,切忌需要记下来后面还要用,
注意:

  1. CN(Common Name – 名字与姓氏):其实这个“名字与姓氏”应该是域名,比如说localhost或是blog.devep.net之类的。输成了姓名,和真正运行的时候域名不符,会出问题。浏览器访问时,弹出一个对话框,提示“安全证书上的名称无效,或者与站点名称不匹配”,用户选择继续还是可以浏览网页。但是用httpclient写程序访问的时候,会抛出类似于“javax.servlet.ServletException: HTTPS hostnamewrong: should be ”的异常。
  2. 在用keytool生成数字证书时必须保证:-keystore androidapp.keystore -alias androidapp.keystore 两者名称必须相同。否则下一步签名时会出现错误:jarsigner: 找不到 androidapp.keystore 的证书链。androidapp.keystore必须引用包含专用密钥和相应的公共密钥证书链的有效密钥库密钥条目。

最后附上编译三剑客下载链接apktool、dex2jar、jd-gui


最后编辑于2016-3-7

最近鄙人已经不怎么用以上三种了,推荐一个可以把上面干倒的利器
Jadx,基本上混淆过的代码也是放进去就可以了。黑科技值得学习。

你可能感兴趣的:(android开发,apk反编译)