什么是反编译

我们知道,Android的程序打包后会生成一个APK文件,这个文件可以直接安装到任何Android手机上,因此,反编译就是对这个APK进行反编译。Android的反编译分成两个部分:

一个是对 代码 反编译,也就是java文件的反编译。

一个是对 资源 反编译,也就是res文件的反编译。

反编译结构图

反编译并查看java代码的工具:

dex2jar: 把dex文件转成jar文件下载地址: https://sourceforge.net/projects/dex2jar/

jd-gui: 这个工具用于将jar文件转换成java代码

1 解压dex2jar。使用Dr.Unarchiver解压dex2jar-2.0.zip。

2 安装JD-GUI。官网http://jd.benow.ca/上下载的dmg安装包,无法安装。需要使用Mac上的软件包管理工具Homebrew来安装。

brew cask install jd-gui

反编译安装包、重新打包的工具

APKTool: 本文重要工具,APK逆向工具,使用简单下载地址: http://ibotpeaches.github.io/Apktool/install/

1 将下载的apktool、apktool_2.2.2.jar分别重命名为apktool、apktool.jar,拷贝到/usr/local/bin中

2 增加可执行权限

chmod +x apktool apktool.jar

反编译并查看java代码

1 解压后的文件夹中有很多文件。在Mac上我们需要用到dex2jar的是这三个东西(windows上对应用bat文件):

d2j-dex2jar.sh

d2j_invoke.sh

lib

2 AndroidStudio 打包好的 APK文件 的后缀,需改为 .zip ,然后使用Dr.Unarchiver解压 。从解压的文件中找到 classes.dex 文件,并将其放入 dex2jar 同一目录下,如下:

3 cmd中进入到dex2jar-2.0文件夹, 先修改权限,再反编译

chmod +x d2j-dex2jar.sh
chmod +x d2j_invoke.sh
./d2j-dex2jar.sh classes.dex

4 使用Finder->应用程序->JD-GUI.app,打开生成的classes-dex2jar.jar文件。

反编译安装包

1 使用apktool命令反编译,d是decode解码的意思,-o是输出文件目录。/usr/local/bin中会生成demo文件夹。

apktool d /Users/administrator/Desktop/demo.apk -o /Users/administrator/Desktop/demo

如果提示demo文件夹已存在,则使用-f参数强制覆盖。

apktool d /Users/administrator/Desktop/demo.apk -f -o /Users/administrator/Desktop/demo

2 打开桌面上的demo文件夹。

smaili文件夹存放java类文件。Android系统有自己的虚拟机Dalvik(一个冰岛渔村名字),反编译后生成的java类文件的扩展名是.smali,而不是.class。

修改安装包

修改apktool反编译后的文件夹中的内容。res文件夹中直接替换,java代码需参考smali语法修改.smali文件。

重新打包

cmd中进入桌面,执行命令。b是build的意思。

apktool b demo -o myDemo.apk


Mac上反编译Android apk安装包的更多相关文章

  1. MAC上反编译android apk---apktool, dex2jar, jd-jui安装使用(含手动签名)

    前文 介绍了在Windows平台利用强大的APK-Multi-Tool进行反编译apk,修改smali源码后再回编译成apk的流程,最近受人之托,破解个apk,所幸的是所用到的这三个软件都是跨平台的, ...

  2. Mac 下反编译Android APK

    准备工作:安装ApkTool.dex2jar.JD-GUI 安装ApkTool 1.下载ApkTool.大家可以从 https://ibotpeaches.github.io/Apktool/inst ...

  3. mac下反编译android apk

    所需要的工具 http://pan.baidu.com/disk/home#path=%252Fandroid%252Fdecompile%252Fapktool-all apktool用于将资源文件 ...

  4. 反编译Android APK及防止APK程序被反编译

    怎么逆向工程对Android Apk 进行反编译 google Android开发是开源的,开发过程中有些时候会遇到一些功能,自己不知道该怎么做,然而别的软件里面已经有了,这个时候可以采用反编译的方式 ...

  5. 实例具体解释:反编译Android APK,改动字节码后再回编译成APK

    本文具体介绍了怎样反编译一个未被混淆过的Android APK,改动smali字节码后,再回编译成APK并更新签名,使之可正常安装.破译后的apk不管输入什么样的username和password都能 ...

  6. Android APK安装包瘦身[转]

    很显然,APK安装包越小越好.下面从代码,资源文件,使用策略几个方面简要介绍下: 代码 保持良好的编程习惯,不要重复或者不用的代码,谨慎添加libs,移除使用不到的libs. 使用proguard混淆 ...

  7. linux下反编译android apk

    1.所需要的工具 1)apktool,功能:反编译出apk所需要的资源文件和布局设置文件等, 下载地址:https://code.google.com/p/android-apktool/downlo ...

  8. 『原』在Linux下反编译Android .apk文件 使用apktool dex2jar JD-eclipse

    一.使用apktool 将 apk反编译生成程序的源代码和图片.XML配置.语言资源等文件 具体步骤: (1)下载反编译工具包:apktool 官方的打不开 http://apktool.shouji ...

  9. 反编译android APK

    我们经常会在如下的情况使用反编译 1.看到别人应用中的酷炫功能,想知道是如何实现的 2.别人应用的素材排版好漂亮,想套用模仿   百度一下就已经有一大堆反编译的教程了,我还是坚持学习记录一下.   A ...

随机推荐

  1. VC中编译报错:error C2011: 'fd_set' : 'struct' type redefinition

    这是头文件包含顺序的问题,原因与解决办法见下面代码的注释. /* 包含下面这两个头文件时,必须把winsock2.h放在前面 否则编译报错,N多的重定义错误:例如 error C2011: 'fd_s ...

  2. 详述 IntelliJ IDEA 插件的安装及使用方法

    首先,进入插件安装界面: Mac:IntelliJ IDEA -> Preferences -> Plugins; Windows:File -> Settings -> Pl ...

  3. 最详细安装Esxi

    https://www.vmware.com/cn/products/vsphere-hypervisor.html Exsi 是一款虚拟化系统,与VMware,VirtualBox不同,它不需要安装 ...

  4. WebAssembly相关

    git搜索:https://github.com/search?q=WebAssembly 相关demo:https://github.com/jpmorganchase/perspective we ...

  5. TCP/IP协议分层详解

    TCP/IP 和 ISO/OSI ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO) ...

  6. webpack+avalon+mmState打包方案

    终于到讲授如何整合avalon社区这个最强大的组件,基于状态机的路由系统了! 基于状态机的路由系统,据我所知,目前世界上只有三款,angular社区的ui-router, 网易出品的stateman, ...

  7. LeetCode OJ 215. Kth Largest Element in an Array

    Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...

  8. [C语言]使用数组

    ----------------------------------------------------------------------------- // main.c 例 // Created ...

  9. svn的上传冲突问题

    上传报错实际是 1 . 之前上传的代码与现代码不一样 2. 上传的代码中有错误 需要先拉下来,对比删除不要的,再上传 eclipse加入svn :  1.import  ---从svn检出项目---创 ...

  10. (转)Python新手写出漂亮的爬虫代码1——从html获取信息

    https://blog.csdn.net/weixin_36604953/article/details/78156605 Python新手写出漂亮的爬虫代码1初到大数据学习圈子的同学可能对爬虫都有 ...