Android反编译的目的无非就是为了看到APK的xml、资源和代码:

  得到代码的方式:直接解压APK文件 --> 得到classes.dex文件 --> 使用 dex2jar classes.dex classes.jar生成jar文件 --> [可选的解压jar文件] -->使用XJad或者JDCompiler查看源代码

得到XML的方式:

    方式1:直接解压APK文件 --> 通过axmlprinter工具查看XML文件(这种方式查看的XML文件的id都是数字--即R文件中id对应的值)

方式2:使用APKTool工具解压APK文件可以直接查看XML文件

Android反编译常常使用如下的一些工具:

1、反编译命令:

  apktool d D:\\Developer\androidDecode\Test0201.apk D:\\Developer\androidDecode\test0201

    D:\\Developer\androidDecode\Test0201.apk:要反编译的APK文件

    D:\\Developer\androidDecode\test0201:反编译文件的保存目录,必须为空目录

2、从反编译的文件编译成APK  apktool b D:\\Developer\androidDecode\test0201 D:\\Developer\androidDecode\test020101.apk

  D:\\Developer\androidDecode\test0201:保存编译后文件的目录

  D:\\Developer\androidDecode\test020101.apk:生成的新的APK文件的保存的绝对路径

3、签名APK文件:

  singedAPK.bat文件

    java -jar "%~dp0signapk.jar" "%~dp0testkey.x509.pem" "%~dp0testkey.pk8" %1 signed.apk

  执行singedAPK.bat命令

    singedAPK D:\\Developer\androidDecode\test020101.apk  生成一个singed.apk文件和test020101.apk在同一个目录

4、使用baksmali.jar把一个dex文件转换为一个smali文件

    java -jar D:\\Developer\ApkTool\baksmali.jar -o D:\\Developer\androidDecode\baksmaliout D:\\Developer\androidDecode\Hello.dex

      D:\\Developer\ApkTool\baksmali.jar:baksmali.jar文件所存在的全路径

      D:\\Developer\androidDecode\baksmaliout:生成的smali文件的保存目录

      D:\\Developer\androidDecode\Hello.dex:要转成smali文件的路径

5、使用ddx.jar把一个dex文件转换为ddx文件

    java -jar D:\\Developer\ApkTool\ddx.jar -d D:\\Developer\androidDecode\ddxout D:\\Developer\androidDecode\Hello.dex

      D:\\Developer\ApkTool\ddx.jar:ddx.jar文件的绝对路径

      D:\\Developer\androidDecode\ddxout:要保存ddx文件的路径

      D:\\Developer\androidDecode\Hello.dex:要转换的dex路径

6、Android自带dexdump工具:dex文件转为smali文件  dexdump -d xxxx.dex > xxxx.smali

7、dex2jar.jar:dex2jar XXX.dex YYY.jar

说明:

  apktool项目地址:https://code.google.com/p/android-apktool/

  baksmali项目地址:https://code.google.com/p/smali/

dex2jar项目地址:https://code.google.com/p/dex2jar/downloads/list

java Decompiler(JD)项目地址:http://jd.benow.ca/

  XJAD百度网盘下载地址:http://pan.baidu.com/share/link?shareid=406366626&uk=3558809438&fid=881236853

  axmlprinter项目地址:https://code.google.com/p/android4me/downloads/detail?name=AXMLPrinter2.jar&can=2&q=

Android反编译工具介绍与简单实用方法的更多相关文章

  1. Android 反编译工具简介

    Android 反编译工具: 所需工具:1 apktool : 用于获取资源文件 2 dex2Jar : 用于将classes.dex转化成jar文件 2 jd-gui: 将jar文件转化成java文 ...

  2. 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库

    工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...

  3. Android反编译工具的使用-Android Killer

    今天百度搜索“Android反编译”搜索出来的结果大多数都是比较传统的教程.刚接触反编译的时候,我也是从这些教程慢慢学起的.在后来的学习过程中,我接触到比较方便操作的Android反编译.在这,我将使 ...

  4. ApkDec android反编译工具

    转自:http://www.newasp.net/soft/70498.html 下载 ApkDec是一款免费的绿色APK反编译工具 forandroid ,由android开发者社区开发. ApkD ...

  5. mac上Android反编译工具apktool、dex2jar入门

    MAC上Apktool的安装 官网链接   image.png 使用步骤如图1-6 第一:下载一个shell脚本,保存的名字就是”apktool”,不要带.sh后缀.可以复制到sublimetext, ...

  6. android反编译工具总结

    序:总结反编译主要的目的在于学习.利用反编译进行相关的汉化或修改,都是不道德的! 大家都知道,将apk文件解压后有两部分文件需要处理,一种是xml文件,另一种一个dex文件(.dex),我们可以从.d ...

  7. android反编译工具 ApkDec-Release-0.1

    (1 )使用帮助    1. 选择 all  全部编译内容包括jar .xml .及其他资源文件    2. 选择 jar  只反编译并打成jar 包    3. 反编译后你可以使用jd-gui.ex ...

  8. Android反编译工具的用法

    Android的APK文件时可以反编译的,通过反编译我们就能查看到大体的代码,帮助学习.反编译仅仅提供的是学习的方式,禁止使用该技术进行非法活动. 其实就是两个命令: 1:运行(WIN+R)-> ...

  9. Android 反编译工具

    想必玩安卓的童鞋大多都知道,安卓的APK安装包是可以反编译出源代码的,如果开发人员发布时没有对其混淆等加密处理,反编译出来的代码几乎与真实的源代码一模一样. 想要反编译apk,需要用到apktool. ...

随机推荐

  1. PCL特征点与配准(1)

    关于输入一个具体的物体的点云,从场景中找出与该物体点云相匹配的,这种方法可以用来抓取指定的物体等等,具体的代码的解释如下,需要用到的一些基础的知识,在之前的博客中都有提及,其中用到的一些方法可以翻阅前 ...

  2. window10删除导航栏中的onedrive

    前面介绍了如何删除导航栏中的“快速访问”,对于一个根本用不着的“oneDrive”肯定也得搞掉. 0.处理前: 1.卸载onedrive是不能清除导航栏里面的onedrive的,进入注册表regedi ...

  3. SpringMVC深度探险(一) —— SpringMVC前传

    在我们熟知的建立在三层结构(表示层.业务逻辑层.持久层)基础之上的J2EE应用程序开发之中,表示层的解决方案最多.因为在表示层自身的知识触角很多,需要解决的问题也不少,这也就难免造成与之对应的解决方案 ...

  4. 100 行代码实现的 JavaScript MVC 样式框架

    介绍 使用过 JavaScript框架(如 AngularJS, Backbone 或者Ember)的人都很熟悉在UI(用户界面,前端)中mvc的工作机理.这些框架实现了MVC,使得在一个单页面中实现 ...

  5. bom头解释方法和去掉方法

    什么是bom头? 在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也 ...

  6. CentOS执行ping命令报错 name or service not know

    在虚拟机上安装的CentOS,但是当执行ping命令的时候,提示name or service not known 解决方法如下: 1. 添加DNS服务器 vi /etc/resolv.conf 1 ...

  7. Android WiFi 扫描流程分析(wpa_supplicant)

    void wpa_supplicant_req_scan(struct wpa_supplicant *wpa_s, int sec, int usec) { int res; if (wpa_s-& ...

  8. e839. 使JTabbedPane中的卡片可滚动

    By default, all the tabs in a tabbed pane are displayed. When the tabs are wider than the width of t ...

  9. e835. 使JTabbedPane中的卡片生效和失效

    By default, all new tabs are enabled, which means the user can select them. A tab can be disabled to ...

  10. c#中的对象生命周期

    无论是指类型的变量或是类类型的变量,其存储单元都是在栈中分配的,唯一不同的是类类型的变量实际上存储的是该类对象的指针,相当于vc6中的CType*,只是在.net平台的语言中将指针的概念屏蔽掉了.我们 ...