Android反编译apk并重新打包签名(Mac环境)

工具下载


image
image

然后点击find newest here下载apktool.jar,选择第一个下载最新版本

image

下载完把apktool_2.3.3.jar重命名为apktool.jar,然后把apktool.jar和apktool一起拷贝到/usr/local/bin路径下

image
image

这样环境就配好啦,打开终端,输入apktool命令,看到以下输出说明apktool配置成功

image

新建个MyTest目录方便管理,随便放个test.apk进去作为测试包

image

反编译

1.终端输入cd /Users/zachary/zachary/MyTest进入到测试apk所在目录,输入apktool d test.apk开始反编译

image

2.编译结束可以看到MyTest目录下多了个test文件夹,里面就是反编译以后的产物,我们想要的AndroidManifest.xml和res/.等资源文件

image

3.此时资源文件反编译就完成了,下面继续反编译java代码,这是就要用到dex2jarjd-gui
下载完dex2jarjd-gui解压一下就可以了,复制到MyTest目录方便操作

image

4.终端进入MyTest目录,输入命令sh dex2jar-2.0/d2j-dex2jar.sh test.apk(如果提示Permission Deny权限问题,先输入命令chmod +x dex2jar-2.0/d2j-dex2jar.sh改一下权限就好了)

image
image
image

回编译

1.刚才我们执行apktool d test.apk反编译得到了test目录

image

2.回编译就是执行命令apktool b test

image
image
image

3.dist目录下存放的是重新打包后的apk文件

image

重新签名

1.复制签名文件到dist目录下方便操作

image

2.终端进入dist目录,执行命令jarsigner -verbose -keystore [your_key_store_path] -signedjar [signed_apk_name] [usigned_apk_name] [your_key_store_alias] -digestalg SHA1 -sigalg MD5withRSA
字段说明:

  • [your_key_store_path]:密钥所在位置的绝对路径
  • [signed_apk_name]:签名后安装包名称
  • [usigned_apk_name]:未签名的安装包名称
  • [your_key_store_alias]:密钥的别名

因为我们把秘钥和test.apk放在同一路径,所以密钥所在位置的绝对路径直接填testkey就好啦,macjenkinskey是我的秘钥别名,别误会(邪恶.jpg)

image

3.输一下密码,看不到输入的,开始签名

image

4.签完名后,在dist目录下就可以看到签完名后的apk了

image

5.反编译的时候,也可以把test.apk的拓展名改成test.zip解压出来

image
image

6.终端进入dex2jar-2.0路径下,执行命令./d2j-dex2jar.sh classes.dex

image
image
image
image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容