工具下载

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

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

 
 

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

 
 
 
 

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

 
 

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

 
 

反编译

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

 
 

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

 
 

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

 
 

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

 
 
运行结束,在MyTest目录会生成文件test-dex2jar.jar,就是我们需要的java代码压缩文件
 
 
右击用jd-gui打开(或者先打开jd-gui再把test-dex2jar.jar拖到jd-gui自动导入,就可以看到java代码啦
 
 
 

回编译

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

 
 
 

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

 
 
成功之后,test目录下会生成build和dist目录
 
 
build目录下存放的是打包后的dex文件和资源文件(和apk解压后一样一样的)
 
image.png

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

 
 

重新签名

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

 
 
 

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

 
 

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

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

后话

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

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

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

 
 
同样可以得到classes-dex2jar.jar
 
 
反编译,再回编译,同样可以得到classes.dex,就在这个路径下
 
 
 
             收工.png


Android反编译apk并重新打包签名(Mac环境)的更多相关文章

  1. Android反编译odex然后重新打包

    #Android反编译odex然后重新打包 最近不知道怎么回事,突然把我那刷了氧OS的root了,然后就开始好奇起来氢OS所带有的那些本地化的东西,比如通话录音就是典型的一个之一.其中也做了很多的尝试 ...

  2. [Android]反编译apk + eclipse中调试smali

    从来没有想过反编译apk是来的如此方便,并且还可以修改后重新编译运行,这比在win下修改pe容易多了,感谢apktool和smali工具的作者提供这么好的工具. 跟踪apk一般的做法是在反编译的sma ...

  3. Android 反编译apk 详解

    测试环境: win 7 使用工具: CSDN上下载地址: apktool (资源文件获取)  下载          dex2jar(源码文件获取) 下载        jd-gui  (源码查看)  ...

  4. Android反编译和二次打包

    参考:APK反编译 一.工具介绍: 1.解压工具 2.JDK 3.apktool: aapt.exe,apktool.bat,apktool.jar;三个在同一目录结合使用,用来反编译apk,反编译生 ...

  5. Android 反编译apk

    工具介绍:    apktool 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看 下载地址:https://bitbucket.org/iBotPeaches/apktool/downl ...

  6. Android 反编译Apk提取XML文件

    Apktool https://ibotpeaches.github.io/Apktool/install/ 下载地址:Apktool https://bitbucket.org/iBotPeache ...

  7. 【转】利用apktool反编译apk,并且重新签名打包

    网站:https://ibotpeaches.github.io/Apktool,下载安装好apktool. 我的安装在 C:\Users\Administrator\Downloads\apktoo ...

  8. Android反编译APK

    http://blog.csdn.net/vipzjyno1/article/details/21039349/ 关于被加壳工具添加我的apk如何脱壳 http://www.blogfshare.co ...

  9. Android反编译(三)之重签名

    Android反编译(三) 之重签名 [目录] 1.原理 2.工具与准备工作 3.操作步骤 4.装X技巧 5.问题 1.原理 1).APK签名的要点 a.所有的应用程序都必须有数字证书 ,Androi ...

随机推荐

  1. [Python]数据挖掘(1)、梯度下降求解逻辑回归——考核成绩分类

    ps:本博客内容根据唐宇迪的的机器学习经典算法  学习视频复制总结而来 http://www.abcplus.com.cn/course/83/tasks 逻辑回归 问题描述:我们将建立一个逻辑回归模 ...

  2. 基于OpenCV做“三维重建”(4)--相机姿态还原和实现三维重建

    v当我们构建成功了viz,就可以使用3维效果给我们提供的便利,进一步进行一些3维的操作. 在这个动画中,注意图片后面的那个黑线,对应的是相机的位置. /*----------------------- ...

  3. CEF 自定义用户协议(scheme)实现以二进制流的方式显示图片、视频、音频

    转载:https://www.cnblogs.com/sinceret/p/10417941.html 转载:https://stackoverflow.com/questions/48811756/ ...

  4. Domain logic approachs

    1.transaction script(事务脚本) 概述: 很多企业应用可以看成一系列的事务,每一个事务可以通过使用一个Transaction Script来处理. 用法: 使用Transactio ...

  5. js基础语句

    // for 循环语句 // if else 条件判断语句 // switch 条件循环语句 // while // do while // 这里的 i 是循环变量 一般初始值为0,因为下标从0开始 ...

  6. MySQL中select、insert、update批量操作语句

    项目中经常的需要使用批量操作语句对数据进行操作,使用批量语句的时候需要注意MySQL数据库的条件限制,这里主要是数据的大小限制,这里对批量插入.批量查找及批量更新的基础操作进行下简单的汇总. 1.批量 ...

  7. C++第二章复习与总结(思维导图分享)

    在完成了第二章的学习后,为了便于日后的复习整理,我制作了一张思维导图,有需要的可以自取. 基本数据类型 基础类型在cppreference网站上有非常完备的介绍,我一句话两句话也说不清,具体网址我会给 ...

  8. WebAPI前置知识:HTTP与RestfulAPI

    对HTTP协议的基本了解是能理解并使用RestFul风格API的基础,在了解了这些基础之后,使用各种RestFul的开发框架才能得心应手.我一开始使用WebApi的时候就因为对这些知识缺乏了解,觉得用 ...

  9. Generator

    基本概念 Generator函数是ES6提供的一种异步编程解决办法,语法行为与传统函数完全不同. Generator函数有多种理解角度.语法上,首先可以把它理解成,Generator函数是一个状态机, ...

  10. python多环境下虚拟环境的搭建和使用

    由于开发环境要求,或者实际需要.经常会出现python2.7和python3.x共存下的开发环境问题.虚拟环境的搭建可以很好的隔离Projects的开发环境. 1.首先解决python2.7和pyth ...