首先apk不能被代码混淆(或未经编译优化),如果混淆了,反编译出来的代号还是看不懂,
当然,在你没反编译出来之前,你也不知道有没有混淆。
网上各种反编译工具,眼花缭乱,本文是个人对这些工作做的一个简单的梳理。
最靠谱也是最原始的方法就是用下面的三个工具:apktool + dex2jar + jd-gui
其他的工具大部分都是衍生自这三个工具,或者说对这三个工具的包装。
apktool
https://code.google.com/p/android-apktool/ 官方功能介绍
It is a tool for reverse engineering 3rd party, closed, binary Android apps. It can decode resources to nearly original form
and rebuild them after making some modifications; it makes possible to debug smali code step by step.
Also it makes working with app easier because of project-like files structure
and automation of some repetitive tasks like building apk, etc.
https://code.google.com/p/android-apktool/downloads/list //官方下载
反编译apk,输出资源文件和源码的smali文件:
用法:D:\apktool.bat F:\workspace\tmp\test.apk F:workspace\tmp\out
dex2jar
http://code.google.com/p/dex2jar/ //官方功能介绍
http://code.google.com/p/dex2jar/downloads/list //官方下载

dex2jar contains following compment

  1. dex-readeris designed to read theDalvik Executable (.dex/.odex) format. It has a light weight API similar withASM.An example here
  2. dex-translatoris designed to do the convert job. It reads the dex instruction to dex-ir format, after some optimize, convert to ASM format.
  3. dex-irused by dex-translator, is designed to represent the dex instruction
  4. dex-toolstools to work with .class files. here are examples:
    • Modify a apk
    • DeObfuscate a jar
  5. d2j-smali[To be published]disassemble dex to smali files and assemble dex from smali files. different implementation to smali/baksmali, same syntax, but we support escape in type desc "Lcom/dex2jar\t\u1234;"
  6. dex-writer[To be published]write dex same way as dex-reader.
到官网下载最新的版本,直接反编译apk,apk文件名不能包含中文名称,新版本的aex2jar不用把apk换成zip解压了,直接反编译:
生产jar,然后用jd打开这个文件,在jd中可以查看代码,也可以导出为java文件
使用 dex2jar 来生成 .jar 文件. dex2jar会在someApk.apk所在目录下生成一个someApk_dex2jar.jar文件.
用法:
linux sh /home/dex2jar-version/dex2jar.sh /home/someApk.apk
windows C:\dex2jar-version\dex2jar.bat someApk.apk
注意:dex2jar只能生成jar文件,无法生成资源文件
Levin:apktool和dex2jar都能生成smali代码,两者有何异同?个人认为,两者都是将.dex文件即DalvikExecutable文件
反编译成smali代码,不同的是,apktool输出的是一个一个.smali代码文件,这种单个的.smali代码文件,
jd-gui打不开(我还没找到什么工具能打开),而dex2jar生成的为打包成*.jar格式的smali源码包,
这种jar格式的smali源码包,可以通过jd-gui转换为java代码。
jd-gui
http://jd.benow.ca///官方功能介绍、官方下载
Java Decompiler graphical UI
JD-GUI is a standalone graphical utility that displays Java source codes of “.class” files.
You can browse the reconstructed source code with the JD-GUI for instant access to methods and fields.

前文说过,其他的工具大部分都是衍生自这三个工具,或者说对这三个工具的包装,你可以看到其安装目录下有apktool等工具
下面对这些工具做个罗列,和本人的使用心得:
APKMultiTool:国外团队开发,Console交互界面,用来反编译apk,修改,并重新签名打包。只能反编译出资源文件,不能反编译出java代码
ApkDec: android开发社区www.juapk.com开发,图形界面,可以反编译出资源文件盒smali的jar包,
目前只有ApkDec-Release-0.1,win32版本,无法在64为机器上运行。找官方团队索要,无果。

Dodo APKTools:国产,只能反编译出一个一个的smali文件
Smali2Java:国产,这款反编译软件比较牛逼,能过将smali文件高保真还原成java文件。比jd-gui更上一层楼
http://www.hensence.com/cn/smali2java/ //官方功能介绍、官方下载
smali2java是一个将smali代码反编译成java代码的工具。
什么是smali?smali是将Android字节码用可阅读的字符串形式表现出来的一种语言,可以称之为Android字节码的反汇编语言。使用baksmali或apktool可以将Android应用程序包(apk或jar)反编译为smali代码。
Levin:jd-gui可以反编译smali代码,说明smali代码,类似于.class代码。
smali2java的反编译过程是:dex字节码-->smali代码-->java代码
smali2java工具基于apktool v1.5.0(baksmali v1.3.4)生成的smali文件,依赖于smali文件中的代码行数(.line关键字)和变量别名(.local关键字)等信息,可以最大程度还原原始的java代码。还原出的java代码将具有原始的变量命名,代码的顺序也与原始的java代码保持一致。因此,本工具也具有局限性,仅适用于带有行数和变量别名信息的smali文件(java编译器的编译选项可以在生成的字节码中剔除这些信息)。
总结:如果你即想反编译出资源,又想反编译出java源码,本人推荐如下最优方式(省时省力,效果好):
step1:使用apktool,反编译出所有的资源文件
step2:使用Smali2Java反编译出高保真的java代码

Android apk反编译工具介绍相关推荐

  1. android apk 反编译 工具下载,android APK反编译工具Apktool

    这是android APK反编译工具Apktool下载,集成 jd-gui.jad.dex2jar.apktool.使用该工具可以反编译apk文件,查看xml以及java源代码,默认使用jad反编译, ...

  2. android apk反编译工具下载,Android apk反编译工具下载与使用

    介绍 smali baksmali 2.1.3是一款非常好用的安卓apk反编译软件,它可以帮助我们去解读apk文件.下面就详细介绍一下它的使用方式.... 使用教程 1.首先点击立即下载,获取smal ...

  3. android apk 反编译工具,安卓apk反编译神器

    APK反编译神器安卓修改大师是一个解编APK文件的工具,使用它可以轻松地解编所有APK安装包,替换应用程序界面中的所有文本和图片,代码级别的修改可以增强中文.裂缝.功能等等. 软件说明 可以向所有界面 ...

  4. android apk 反编译工具及方法集锦

    本文主要集锦了网上多种反编译的工具和方法,希望给大家帮助, 一,反编译软件dex2jar和jdgui.exe 1. 测试的操作系统 Windows 7(安装好正常的java环境) 2. 下载反编译工具 ...

  5. android apk反编译工具汇总(2017年10月)

    首先感谢其他人的总结 Android逆向工程用到的工具 手把手教你搞懂Android反编译 主要的步骤 1.apktool d -f xxxx.apk 2../d2j-dex2jar.sh class ...

  6. 【转】Android APK反编译就这么简单 详解(附图)

     转自:http://blog.csdn.net/vipzjyno1/article/details/21039349/ [置顶] Android APK反编译就这么简单 详解(附图) 分类: and ...

  7. Android APK反编译

    转自:http://blog.csdn.net/ithomer/article/details/6727581 一.Apk反编译得到Java源代码 下载上述反编译工具包,打开apk2java目录下的d ...

  8. Android APK反编译具体解释(附图)

    这段时间在学Android应用开发,在想既然是用Java开发的应该非常好反编译从而得到源码吧,google了一下,确实非常easy,下面是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的 ...

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

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

最新文章

  1. 产业为主谋定共享运行-农业大健康·万祥军:特色化小镇时代
  2. 帆软报表(finereport)控件背景色更改
  3. linux 打开php服务器文件夹,Linux下如何查看文件和文件夹大小
  4. 终于有人把数据、信息、知识讲明白了
  5. 【杂记】我为什么要坚持写博客
  6. 随想录(产品需求的几个注意点)
  7. ubuntu修改服务器端,修改ubuntu 服务器配置
  8. 哈夫曼树【最优二叉树】【Huffman】
  9. 算法导论第三版 第1章习题答案
  10. AspUpload 组件上传 安装方法及其Demo(全)
  11. 个子矮s弯如何看点打方向图解_s弯如何看点打方向图解?s弯方向盘打法口诀
  12. 史上最超级KB的10个故事~你撑到第几个才发抖
  13. JavaWeb会话和会话技术之Cookie
  14. 爱博精电亮相四川省节能环保品牌推广全川行——乐山站
  15. LDPC译码器的FPGA实现
  16. 凯恩斯与艺术品投资的更大笨蛋理论
  17. MD5加密及密码验证
  18. NRF52832开发:射频驱动
  19. 【思维导图】零基础如何把握Python学习方向
  20. ABP 中反序列化大小写不敏感

热门文章

  1. 力荐50个最实用的免费机器学习数据集
  2. python内置数据结构方法的时间复杂度
  3. Linux负载均衡软件LVS(概念篇)
  4. 独轮车(广搜_队列)
  5. 王校长一分钟能吃多少热狗?| 小游戏
  6. Vue2.0史上最全入坑教程(中)—— 脚手架代码详解
  7. WebCruiser Web Security Scanner
  8. 《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》一一第0章 初识数字图像处理与机器视觉...
  9. Linux内核调试方法总结【转】
  10. mysql数据库中命令行下常用命令的操作(增、删、改、查)和数据类型