需要工具:

  1.apktool apk打包工具

  下载地址:http://android-apktool.googlecode.com/files/apktool1.5.2.tar.bz2

  安装:直接解压即可,是一个apktool.jar文件,通过

  1. $java -jar apktool.jar
  $java -jar apktool.jar

  来运行,依赖于java运行环境

  2.dex2jar dex转化jar工具

  下载地址:http://dex2jar.googlecode.com/files/dex2jar-0.0.9.15.zip

  安装:直接解压即可,是一个文件夹,里面包含了很多文件,通过

  1. $./dex2jar.sh
$./dex2jar.sh

  来运行

  3.如果你没有unzip,安装此解压工具, zip解压缩工具,用于解压jar包(jar包是zip压缩的,所以可以用其它工具代替)

  下载地址:ubuntu $sudo apt-get install unzip

  安装: $sudo apt-get install unzip

  1. $upzip [src_path] -d [dst_path]
        $upzip [src_path] -d [dst_path]

  来运行

  4.jad .class文件反编译工具

  下载地址:http://www.varaneckas.com/jad

http://varaneckas.com/jad/jad158e.linux.static.zip

  安装:直接解压即可,是一个可执行文件,通过  

./jad

  来运行。需要说明的是,这个需要下载static版本的,如果不行的话,在去第一个链接里找另一个下载。


  接下来,工具准备完毕了,最好设定一下环境变量,我们就可以反编译apk了

  一、抽取apk资源

执行: $java -jar apktool.jar d [source.apk]

  二、反编译源码

  (1)解压apk

  1. $unzip [source.apk] -d [step_1]
  $unzip [source.apk] -d [step_1]

  step_1指的是你所需要解压到的目录

  (2)进入step_1 目录,找到classes.dex文件,将dex文件转化成jar文件

  1. $dex2jar.sh classes.dex
$dex2jar.sh classes.dex

  (3)获得一个classes_dex2jar.jar文件,我们现在要再度解压这个文件

  1. $upzip classes_dex2jar.jar -d [step_3]
        $upzip classes_dex2jar.jar -d [step_3]

  step_3指的是你解压到的目录

  (4)我们获得一个step_3目录,我们接下来要反编译该目录下所有.class文件  

  1. $./jad -o -r -s  java -d  src step_3/**/*.class
        $./jad -o -r -s  java -d  src step_3/**/*.class

对于上面的参数,可以直接执行./jad查看,或者Readme.txt查看

  (5)我们再度获得一个src目录,该目录下就是反编译好的源码文件了。

也可以使用JD-GUI工具直接查看classes_dex2jar.jar的class文件。

如果以上命令不执行的话,查看目录是否正确。

linux下的APK反编译软件及过程介绍 .的更多相关文章

  1. linux在下面APK反编译软件和过程的描述

    需要的工具: 1.apktool apk打包工具 下载地址:http://android-apktool.googlecode.com/files/apktool1.5.2.tar.bz2 安装:直接 ...

  2. Ubuntu下Android apk反编译

    需要用到的工具 1.apktool_2.0.3.jar https://bbuseruploads.s3.amazonaws.com/0becf6a1-1706-4f2e-9ae6-891e00a8d ...

  3. CENTOS 下安装APK反编译工具 APKTOOL

    转于:http://www.qiansw.com/centos-apk-apktool.html 我使用的是CentOS6.4 64位的系统.首先需要下载两个包.这里下载:https://code.g ...

  4. (转)Android-Mac电脑如何进行APK反编译-使用apktool、jd-gui

    最近群里有人问如何在mac下进行apk反编译,我也没试过,以前都是在windows下进行反编译的,windows下很简单,有许多比较好的集成工具,如apkide(改之理),不过我猜mac下应该和win ...

  5. android之apk反编译

    今天就来详细的讲一讲apk的反编译过程,之前自己一直没彻底搞清楚. 一.准备工作 反编译首先要准备三个工具.这三个工具都是可以百度下载的.就是下图所示的三个工具. 这三个工具是有各自作用的: (1)a ...

  6. apktool 在mac下的使用 -反编译安卓apk文件

    1.下载apktool 点击这里下载 ,里面有两个文件,一个是.jar,一个是自己写的脚本.sh 注:最新的apktool.jar 文件可以点击这里下载 .sh脚本是自写脚本可不用更新最新,下载的ja ...

  7. Mac下对Android apk反编译

    在Mac上进行反编译apk,需要三个工具,分别为(附下载地址): apktool,下载Mac版 作用:资源文件获取,能够提取出图片文件和布局文件进行使用查看 dex2jar,下载最新的即可,目前是2. ...

  8. apk反编译、smali修改、回编译笔记

    最近下了一个apk程序,但是一启动会弹出一个流氓广告.这个广告不是原厂商加的,而是有人在原有apk程序的基础上,加了一个壳,让apk先启动他加的广告,再启动原来的程序,很恶心.于是想去掉它. 试了几个 ...

  9. Android APK反编译详解(附图)

    转载自http://blog.csdn.net/sunboy_2050/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而 ...

随机推荐

  1. python的函数式编程

    map #对参数迭代器中的每个元素进行操作,返回一个新的迭代器 map(func, *iterables) --> map object Make an iterator that comput ...

  2. ssh 设置私钥实现两台linux主机无密码访问

    在服务器主机上(称为A主机) 创建公钥与私钥: ssh-keygen -t rsa 一路回车,如果想设置密码短语,在提示 passphrase 的时候设置密码短语 查看生成的公钥及私钥: ls ~/. ...

  3. 正确理解python的装饰器

    一直在用别人写的装饰器,从来没有对其原理进行深入的探究.今天趁有点闲着的时间,把装饰器的原理好好看了一遍,做一下整理. 一.装饰器的基本原理 装饰器就是一个可以接受调用也可以返回调用的调用.装饰器本身 ...

  4. iOS-时间戳(或date)转字符串

    1.时间戳转字符串 ///时间戳转化为字符转0000-00-00 00:00 + (NSString *)time_timestampToString:(NSInteger)timestamp{ NS ...

  5. php+redis 学习 二 悲观锁

    <?php header('content-type:text/html;chaeset=utf-8'); /** * redis实战 * * 实现悲观锁机制 * */ $timeout = 5 ...

  6. shell实现go环境的部署搭建

    ##############################Deploy go enviroment######################## echo "start deploy g ...

  7. git 版本控制的简单应用

    一.通过 honebrew 安装git , 教程参考:http://brew.sh/index_zh-cn.html 也可对比参考:http://book.51cto.com/art/201107/2 ...

  8. FFT模板(多项式乘法)

    FFT模板(多项式乘法) 标签: FFT 扯淡 一晚上都用来捣鼓这个东西了...... 这里贴一位神犇的博客,我认为讲的比较清楚了.(刚好适合我这种复数都没学的) http://blog.csdn.n ...

  9. 通过实例介绍Android App自动化测试框架--Unittest

    1.为什么需要使用框架实现自动化测试 作为测试工程师,可能在代码能力上相比开发工程师要弱一点,所以我们在写脚本的时候就会相对容易的碰到更多的问题,如果有一个成熟的框架供给我们使用的话,可以帮助我们避免 ...

  10. Java经典编程题50道之三十九

    写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度. public class Example39 {    public static void main(String[] a ...