Mac 上 android 反编译apk完整流程

直接进入正题,如果要在mac下反编绎apk跟在window下还是有点区别的,但是大体原理是一样的。首先下载三个工具:

Apktool

dex2jar

jd-gui

分别介绍下这几个应用在mac下的安装

Apktool,官方有明确的文档说明:

Download Mac wrapper script (Right click, Save Link As apktool)

Downloadapktool-2

Rename downloaded jar toapktool.jar

Move both files (apktool.jar & apktool) to/usr/local/bin(root needed)

Make sure both files are executable (chmod a+x filename)

Try running apktool via cli

这样你就配置了bash权限,可以执行apktool命令,回车可以查看其命令集

1

apktool d file.apk

这样就能生成一个file的文件夹,就生成了资源文件,smile文件,如果修改了生成apk文件

1

apktool b file

上面的build和dist就是回编译apk过程中生成的东西,编译出来的apk在dist目录下,打开build/apk文件夹会发现少了original文件夹下的META-INF文件夹,也就意味着dist里的apk文件是没有签名的。

dex2jar,我们把.apk重命名成.zip,解压,取出classess.dex。我们要用dex2jar将apk转成jar文件,实质是将apk里的classes.dex转成jar。然后进到dex2jar这个文件夹下运行:

1

sh d2j-dex2jar.sh classes.dex

可能会出现

1

d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied

这时候就将dex2jar里的d2j_invoke.sh/d2j-dex2jar.sh增加可执行权限

1

2chmod +x ./d2j_invoke.sh

sh d2j-dex2jar.sh classes.dex

这样就生成了classes-dex2jar.jar,

打开JD-GUI,将hongbao-dex2jar.jar拖进去就看到源码了。 通过看Java源码对比smali文件,修改后回编译就ok了!

如何手动给apk增加签名?

回编译后的apk是安装不成功的,总是提示

Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION] 实质是没签名。

1,生成签名:

1

keytool -genkey -keystore filename.keystore -keyalg RSA -validity 10000 -alias aliasname

注意:上面-keystore后面跟的是签名文件的名字,而-alias是别名,一般情况下-keystore后面跟-alias是一样的,但其实两者没有关系,这也是我故意搞成不一样的原因。

2,为apk增加签名:

1

jarsigner -digestalg SHA1 -sigalg MD5withRSA -tsa -verbose -keystore filename.keystore -signedjar filename-signed.apk filename.apk aliasname

注意:

1,最后的”aliasname”就是-alias后面带的,必须保持一致。

2,如果不带-digestalg SHA1 -sigalg MD5withRSA签名后的apk安装也是不成功的,说INSTALL_PARSE_FAILED_NO_CERTIFICATES的错误,如果不带-tsa会报一个时间方面的警告。


http://stareme.wang/2016/12/14/Mac%20%E4%B8%8A%20android%20%E5%8F%8D%E7%BC%96%E8%AF%91apk/

你可能感兴趣的:(Mac 上 android 反编译apk完整流程)