对于反编译一直持有无所谓有或无的态度。经过昨天一下午的尝试,也有了点心得和体会:

先给大家看看编译的过程和我们反编译的过程概图吧:

例如以下是反编译工具的根文件夹结构:

三个目录也实际上是下面三个步骤的体现:

(不知道大家发现没,我把三个文件夹名字都改了一下,apktool即为处理apk的工具;dex2jar即就是将dex文件处理为jar包的工具。jar2gui即就是我们将jar包内的class转换为源代码的gui界面以供大家參考的工具)

setp 1: 在apktool里:

  打开dos框(cmd进入然后进入该文件夹下。这个应该都是妇孺皆知的事情了)运行  apktool d -s xxx.apk

这里会在该文件夹下生成一个以apk名为名字的文件夹,有classes.dex+res文件夹+AndroidManifest.xml 这三个东西,想必大家已经懂得了当中的内涵,没错。这就是我们的项目根文件夹。而dex即就是由jar打包而成的Android可运行文件。

/*

*命令里的apktool 事实上也就是在运行文件夹下的apktool.bat批处理文件,而后边的xxx.apk也就是我们所须要反编译的apk包的名称。

当然啦,常常使用dos命令的人都直到,文件名称或者路径都能够使用其绝对路径予以取代,因此假设我们把我们须要反编译的包放到当前根文件夹下,即能够直接试用其名称来运行命令

*/

setp 2: 在dex2jar里

将1中生成的classes.dex(即就是Android下的可运行文件,由一簇一簇的.class文件jar包生成)拷入dex2jar下

运行 dex2jar classes.dex  --->生成jar包。即就是classses_dex2jar.jar

setp 3:在jar2gui下执行jd-gui选中2中的jar,就可以查看源代码(这里是真源代码)。

既然上边提到“真源代码”这个概念。相相应的必定就会有伪源代码(纯属本人造词,如有雷同,你猜呢?哈哈,开玩笑的)

这里再上一图

上图左側即就是我们用setp 3达到的效果,而右側即就是我们通过jad工具反编译class文件出来的java源文件。通过对照非常明显让人得出一个极为蛋疼的结论。反编译出来的东东简直目不忍视啊·······。当然啦。左側的代码是能够直接拷贝出来的。可是假设你想要生成源代码来编译的话。还请三思~~~毕竟我们反编译出来一个是要使用res资源,还有一个是參考代码,假设想要破解原apk的话,相信还有办法反编译出更好的源代码(用工具进行代码复制,这样尽管本质上并没有对class进行反编译。但却得到了相对准确的源代码)

详细使用jad工具来反编译的话。我就不继续写了,详细教程写在工具包的README.text文本里了,欢迎大家下载:

Android反编译工具

jad工具

apk应用的反编译和源代码的生成的更多相关文章

  1. Android Apk的反编译与代码混淆

    一.反编译 1.获取工具: 既然是反编译,肯定要用到一些相关的工具,工具可以到这里下载,里面包含三个文件夹,用于反编译,查看反编译之后的代码: 其实这两工具都是google官方出的,也可在google ...

  2. Android如何防止apk程序被反编译

    作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来. Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-s ...

  3. JD-GUI反编译后代码逻辑分析

    一,用jd-gui.exe等工具查看源代码.如何你不会,可以参看此文章: http://blog.csdn.net/hp_2008/article/details/8207879 可以到以下连接下载可 ...

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

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

  5. [转]Android应用安装包apk文件的反编译与重编译、重签名

    背景介绍: 最近在做Robotium自动化测试,使用到solo.takeScreenshot()函数以在测试过程中截图,但此函数需要被测试APP具有<uses-permission androi ...

  6. Android - 使用JD-GUI反编译Android代码

    使用JD-GUI反编译Android代码 本文地址: http://blog.csdn.net/caroline_wendy Android程序出现Bug时,须要依据Bug寻找问题出错的地方; 须要使 ...

  7. Android的APK文件的反编译方法【转】

    实用的收藏一下. 来自:http://www.dewen.org/q/711/%E8%AF%B7%E6%95%99Android%E7%9A%84APK%E6%96%87%E4%BB%B6%E7%9A ...

  8. Android apk逆向:反编译,回编译,签名,打包。

    Android apk逆向:反编译,回编译,签名,打包流程. 第一步: apk 反编译. 1) 打开命令行窗口,输入java -version, 检测当前java版本,若版本较低, 则下载JAVA S ...

  9. 实现android apk反编译后代码混淆

    通常情况下我们需要对我们开发的android代码进行混淆,以免代码在反编译时暴露敏感信息及相关技术代码: 反编译测试工具:onekey-decompile-apk-1.0.1. 在高级版本的adt创建 ...

随机推荐

  1. java.util.concurrent-------TimeUnit

    java.util.concurrent并发库是JDK1.5新增的,其作者是Doug Lea ,此人是个BOSS级别的天才人物了.有了他提供的类库,使得我们对多线程并发.锁有了很大的帮助,减少了并发难 ...

  2. windows phone8手机玩玩

    背景介绍 北京移动在搞活动,预存话费赠手机活动,因此办理了一个,来玩新手机了. 上手一周了,白色的手机,对我来说配置凑合,主要是想学习wp8手机的开发,这样也有个样机玩玩.开发人员就是这么的喜欢玩. ...

  3. cocos2d-x游戏开发系列教程-中国象棋01-工程文件概述

    上一篇博文我们看到了象棋的效果图,这一张我们来看象棋代码的整体概述 让我们先对整个代码框架有个了解. 主目录: 主目录包含内容如上图: classes目录:业务代码 proj.win32:包括main ...

  4. 初探 FFT/DFT

    有用的学习链接&书籍 傅立叶变化-维基百科 离散傅立叶变化-维基百科·长整数与多项式乘法 维基百科看英文的更多内容&有趣的图 快速傅立叶变化-百度百科,注意其中的图! 组合数学(第4版 ...

  5. poj3819 Coverage (求直线与圆的交占直线的百分比 )

    题意:给你一条直线和若干个圆,求圆与直线相交的长度占整条直线的比例 解题思路:通过定比分点的方法求出圆与直线的交占圆的比例. 第一步:(确定投影的方向是x轴还是y轴) (1)当直线的line.s(x, ...

  6. Node.js and Forever “exited with code: 0”

    CentOs 6.5 using root acount, I have a working Node.js Express app: root@vps [/home/test/node]# npm ...

  7. 添加Main-Class到manifest中

    Maven默认打包生成的jar是不能够直接运行的,因为带有main方法的类信息不会添加到manifest中(打开jar文件中的META-INF/MANIFEST.MF文件,将无法看到Main-Clas ...

  8. jsp和serverlet的差别

    開始找工作面试的第一家公司,爱思创新 面试题: 1.jsp和serverlet的差别 简单来说: jsp:是包括java程序片的html文件servlet:是包括html的java文件 事实上说白了J ...

  9. UVA - 12119 The Bells are Ringing (枚举)

    Perhaps you all have heard the mythical story about Tower of Hanoi (The details of this story is not ...

  10. spring boot application properties配置详解

    # =================================================================== # COMMON SPRING BOOT PROPERTIE ...