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

工具下载

image.png

根据apktool网站提示的下载方法,右击wrapper script,链接存储为apktool,不要带拓展名

image.png

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

image.png

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

image.png

image.png

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

image.png

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

image.png

反编译

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

image.png

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

image.png

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

image.png

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

image.png

运行结束,在MyTest目录会生成文件test-dex2jar.jar,就是我们需要的java代码压缩文件

image.png

右击用jd-gui打开(或者先打开jd-gui再把test-dex2jar.jar拖到jd-gui自动导入,就可以看到java代码啦

image.png

回编译

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

image.png

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

image.png

成功之后,test目录下会生成build和dist目录

image.png

build目录下存放的是打包后的dex文件和资源文件(和apk解压后一样一样的)

image.png

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

image.png

重新签名

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

image.png

终端进入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.png

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

image.png

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

image.png

后话

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

image.png

把classes.dex复制到dex2jar-2.0路径下

image.png

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

image.png

同样可以得到classes-dex2jar.jar

image.png

反编译,再回编译,同样可以得到classes.dex,就在这个路径下

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏区块链

Web安全测试基础-2

文 | 李文祥 一、Web安全漏洞概念及原理分析 1.2 跨站脚本攻击(XSS) 概念:通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏...

2079
来自专栏Porschev[钟慰]的专栏

Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

前言   前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识!   主要是些基础的东西...   如何去创建...

3407
来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

React Native应用部署/热更新-CodePush最新集成总结(新)

React Native应用部署/热更新-CodePush最新集成总结(新) ---- 更新说明: 此次博文更新适配了最新版的CodePush v1.17....

7646
来自专栏吴柯的运维笔记

如何用Rysnc实现数据同步?

Rsync(remote sync) 是UNIX及类UNIX平台一款数据镜像备份软件,它不像FTP等其他文件传输服务那样需要进行全备份,Rsync可以根据数据...

39813
来自专栏BIT泽清

React Native应用部署/马甲包热更新-CodePush最新集成总结(2018年最新)

React Native支持大家用React Native技术开发APP,并打包生成一个APP。在动态更新方面React Native只是提供了动态更新的基础,...

3630
来自专栏黑白安全

即收即毁临时邮箱系统搭建

执行完毕后按键盘上的CTRL+A,再按D返回,此时就可以通过访问  mx.deyaya.cc:3000  来访问你搭建的邮件系统了,如果打不开,十有八九是没有开...

3311
来自专栏企鹅号快讯

abaqus中python脚本的应用

abaqus提供了很丰富的功能,然而有时候操作起来并不方便或者没有我们想要的基本功能。此外,在工作中经常会处理一些重复性的操作,这时候用python脚本处理将会...

4499
来自专栏hbbliyong

Ubuntu16.04安装后开发环境配置和常用软件安装

Ubuntu16.04安装后1.安装常用软件搜狗输入法+编辑器Atom+浏览器Chome+视频播放器vlc+图像编辑器GIMP Image Editor安装+视...

4278
来自专栏王小雷

Ubuntu16.04安装后开发环境配置和常用软件安装

Ubuntu16.04安装后1.安装常用软件搜狗输入法+编辑器Atom+浏览器Chome+视频播放器vlc+图像编辑器GIMP Image Editor安装+视...

3825
来自专栏守望轩

Visual Studio 2008 每日提示(十二)

#111、定义最近使用的列表中显示项的数目 原文链接:How to customize the number of items shown in the re...

3694

扫码关注云+社区

领取腾讯云代金券