今天是年一,新年快乐,被爆竹声吵醒,莫名想起最近老大让重构的项目,由于对方暂时没提供源码,自己尝试反编译下.反编译三部曲,需要Apktool,dex2jar,JD-GUI.第一个可以拿到apk资源,第二个把apk里面class文件变为jar,第三个可以直接观看jar代码.
Apktool:http://ibotpeaches.github.io/Apktool/install/
dex2jar: https://github.com/pxb1988/dex2jar
JD-GUI: http://jd.benow.ca/
1.如果没有没有homebrew的话 ,进行安装:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
(有的人肯定疑惑,为啥要装这个,下面就知道了)
2.
这是官网的操作步骤,照着上面的来
(1)点击进去第一个网址,把里面的内容全部复制到一个文本,不要后缀名,其实是下载一个shell脚本,保存名为"apktool"
(2)下载apktool的jar包,并且改名为"apktool.jar"
(3)将shell脚本”apktool”和”apktool.jar”放到 “/usr/local/bin”目录下
(4)修改这两个文件可执行权限终端中输入:chmod a+x yourFileName
(5)终端中输入shell apktool(你apktool存放的地方,貌似可以跳过此步骤)
(6)输入apktool 查看信息
3.下载另外两个软件,其中 JD-GUI这个官网下载后如果无法安装,那可以通过最开始我们下载的homebrew去安装 指令:brew cask install jd-gui
4.自己在你想反编译输出的地方建立文件夹,我这边就放桌面了 ,把下载好的dex2jar-2.0也放进去.cd 到这个文件夹,然后执行apktool d yourApkName,运行后会在当前文件目录路径生成一个文件夹,以apk的名字命名,只是没有后缀.apk.然后apktool b yourFileName(就是那个生成的文件夹名) 把apk重新生成,在新生成的dist文件下面.这个apk是没有签名的,把apk改后缀名.zip,然后解压拿到里面的classes.dex文件,将这个文件复制到dex2jar-2.0目录下.最后运行.sh d2j-dex2jar.sh classes.dex.成功后用jd-gui就可以查看文件了
5. 如果在执行sh d2j-dex2jar.sh classes.dex命令时提示类似“d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied”的错误,可以执行sudo chmod +x d2j_invoke.sh命令来增加可执行权限