1、所需要的工具

1)apktool,功能:反编译出apk所需要的资源文件和布局设置文件等,

下载地址:https://code.google.com/p/android-apktool/downloads/list

需要下载apktool1.5.2.tar.bz2 和apktool-install-Linux-r05-ibot.tar.bz2 这两个文件,并把解压后的文件放在同一个文件夹中。

2)dex2jar,功能:反编译出jar文件,即apk的源程序文件的字节码,

下载地址:http://code.google.com/p/dex2jar/downloads/list

3)jdgui,功能:查看dex2jar反编译出的jar文件,使用该工具可以看到字节码对应的Java源代码,这个我在官网上没有找到,然后自己在网上下载的,但试验过能用。点击打开后,如下图所示:

2、反编译过程
1)反编译出资源文件
使用apktool工具,进入apktool所在的目录下,使用如下的命令:
    ./apktool d ./xxx.apk(apk所在的路径)

d表示decode,在当前目录下就会生成一个名为xxx的目录,里面就是反编译出来的各种资源文件,其中res表示资源文件,smali表示源代码,不过是字节码,不能直接查看。

以本人的实验为例子,如下图所示:

此时会在当前目录下生成一个目录app-debug。

2)源代码的反编译
a)因为apk文件其实是使用zip进行打包压缩生成的文件,所以先把xxx.apk文件改名为xxx.zip文件,并对其进行解压。
b)进入解压后的目录,其中有一个classes.dex文件,这个文件就是java文件编译再通过dx工具打包而成的,源代码就包含在这个文件中。
c)把前一步生成的文件classes.dex复制到dex2jar工具的根目录中,并使用如下命令对其进行反编译:
    ./dex2jar.sh d classes.dex
就会在当前目录下生成一个classes_dex2jar.jar文件

d)点击打开jdgui工具,这是一个图形化的工具,然后打开上上述的classes_dex2jar.jar文件就可以看到apk对应的源代码。

对于本人的实验如下:

源代码与反编译出来的代码比较如下(白色为反编译内容,黑色为原内容):

linux下反编译android apk的更多相关文章

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

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

  2. mac下反编译android apk

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

  3. Mac 下反编译Android APK

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

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

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

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

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

  6. 反编译android APK

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

  7. Mac上反编译Android apk安装包

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

  8. 只需三步--轻松反编译Android Apk文件

    安卓程序是通过java语言进行编写的,可以很容易进行反编译.很多apk文件被反编译后再二次打包,就成了自己的产品,很是流氓.下面我们来看看如何进行apk的反编译,以及常用的防反编译手段. 一.反编译A ...

  9. 反编译Android的apk包得到源码(使用工具:dex2jar和jd-gui)

    1. 先从 http://download.csdn.net/detail/dingyuming1991/9618125 下载反编译工具dex2jar和jd-gui(当然也可以google搜索下载): ...

随机推荐

  1. [JOISC2014]スタンプラリー

    [JOISC2014]スタンプラリー 题目大意: 有\(n(n\le3000)\)个车站,另有一个起点站和终点站,所有车站排成一条链,相邻两个车站之间的距离为\(t\).每个车站都有一个上行站台.一个 ...

  2. [CF543A]/[CF544C]Writing Code

    [CF543A]/[CF544C]Writing Code 题目大意: 有\(n\)种物品,每种物品分别要\(c_i\)的代价,每个物品有\(1\)的体积,每个物品可以选多个,代价不能超过\(b\), ...

  3. IDEA2018.2.2 版本配置注释模板

    Ctrl+Alt+S进入设置界面(我没改过按键映射,你也可以从File-OtherSetting进入设置),找到Editor->File and Code Templates,先在Include ...

  4. pygame-KidsCanCode系列jumpy-part2-加速度与摩擦力

    上一节,我们整理了一个游戏开发的新框架(即:Game类),本节将运用这个框架,实现基本的加速度及摩托力效果. 先定义游戏的精灵(下面代码命名为sprites.py) from part_02.sett ...

  5. [原创]RedisDesktopManager工具使用介绍

    [原创]RedisDesktopManager工具使用介绍 1 RedisDesktopManager简介 一款能够跨平台使用的开源性redis可视化工具.redis desktop manager主 ...

  6. 说说GIL

    上一篇:线程深入篇引入 Code:https://github.com/lotapp/BaseCode/tree/master/python/5.concurrent/Thread/3.GIL 说说G ...

  7. scipy.stats

    scipy.stats Scipy的stats模块包含了多种概率分布的随机变量,随机变量分为连续的和离散的两种.所有的连续随机变量都是rv_continuous的派生类的对象,而所有的离散随机变量都是 ...

  8. C# Winform使用Windows Media Player播放多媒体整理

    一.简单使用示例步骤 1.添加Windows Media Player 组件当前是系统的 Com组件 工具箱>右键“选择项”>选择Com组件 2.控件拖拽到桌面,使用 private vo ...

  9. 调用 LoadLibraryEx 失败,在 ISAPI 筛选器 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\\aspnet_filter.dll" 上

    开始 -> 运行 -> inetmgr -> 应用程序池 -> 找到 我的网站对象的 程序池 -> 右键 -> 高级设置 -> 启用32位应用程序 由 fal ...

  10. FPGA基础之逻辑单元(LE or LC)的基本结构

    原帖地址: https://blog.csdn.net/a8039974/article/details/51706906/ 逻辑单元在FPGA器件内部,是完成用户逻辑的最小单元.逻辑单元在ALTER ...