apk应用的反编译和源代码的生成
对于反编译一直持有无所谓有或无的态度。经过昨天一下午的尝试,也有了点心得和体会:
先给大家看看编译的过程和我们反编译的过程概图吧:
例如以下是反编译工具的根文件夹结构:
三个目录也实际上是下面三个步骤的体现:
(不知道大家发现没,我把三个文件夹名字都改了一下,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文本里了,欢迎大家下载:
apk应用的反编译和源代码的生成的更多相关文章
- Android Apk的反编译与代码混淆
一.反编译 1.获取工具: 既然是反编译,肯定要用到一些相关的工具,工具可以到这里下载,里面包含三个文件夹,用于反编译,查看反编译之后的代码: 其实这两工具都是google官方出的,也可在google ...
- Android如何防止apk程序被反编译
作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来. Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-s ...
- JD-GUI反编译后代码逻辑分析
一,用jd-gui.exe等工具查看源代码.如何你不会,可以参看此文章: http://blog.csdn.net/hp_2008/article/details/8207879 可以到以下连接下载可 ...
- 反编译Android APK及防止APK程序被反编译
怎么逆向工程对Android Apk 进行反编译 google Android开发是开源的,开发过程中有些时候会遇到一些功能,自己不知道该怎么做,然而别的软件里面已经有了,这个时候可以采用反编译的方式 ...
- [转]Android应用安装包apk文件的反编译与重编译、重签名
背景介绍: 最近在做Robotium自动化测试,使用到solo.takeScreenshot()函数以在测试过程中截图,但此函数需要被测试APP具有<uses-permission androi ...
- Android - 使用JD-GUI反编译Android代码
使用JD-GUI反编译Android代码 本文地址: http://blog.csdn.net/caroline_wendy Android程序出现Bug时,须要依据Bug寻找问题出错的地方; 须要使 ...
- 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 ...
- Android apk逆向:反编译,回编译,签名,打包。
Android apk逆向:反编译,回编译,签名,打包流程. 第一步: apk 反编译. 1) 打开命令行窗口,输入java -version, 检测当前java版本,若版本较低, 则下载JAVA S ...
- 实现android apk反编译后代码混淆
通常情况下我们需要对我们开发的android代码进行混淆,以免代码在反编译时暴露敏感信息及相关技术代码: 反编译测试工具:onekey-decompile-apk-1.0.1. 在高级版本的adt创建 ...
随机推荐
- java.util.concurrent-------TimeUnit
java.util.concurrent并发库是JDK1.5新增的,其作者是Doug Lea ,此人是个BOSS级别的天才人物了.有了他提供的类库,使得我们对多线程并发.锁有了很大的帮助,减少了并发难 ...
- windows phone8手机玩玩
背景介绍 北京移动在搞活动,预存话费赠手机活动,因此办理了一个,来玩新手机了. 上手一周了,白色的手机,对我来说配置凑合,主要是想学习wp8手机的开发,这样也有个样机玩玩.开发人员就是这么的喜欢玩. ...
- cocos2d-x游戏开发系列教程-中国象棋01-工程文件概述
上一篇博文我们看到了象棋的效果图,这一张我们来看象棋代码的整体概述 让我们先对整个代码框架有个了解. 主目录: 主目录包含内容如上图: classes目录:业务代码 proj.win32:包括main ...
- 初探 FFT/DFT
有用的学习链接&书籍 傅立叶变化-维基百科 离散傅立叶变化-维基百科·长整数与多项式乘法 维基百科看英文的更多内容&有趣的图 快速傅立叶变化-百度百科,注意其中的图! 组合数学(第4版 ...
- poj3819 Coverage (求直线与圆的交占直线的百分比 )
题意:给你一条直线和若干个圆,求圆与直线相交的长度占整条直线的比例 解题思路:通过定比分点的方法求出圆与直线的交占圆的比例. 第一步:(确定投影的方向是x轴还是y轴) (1)当直线的line.s(x, ...
- 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 ...
- 添加Main-Class到manifest中
Maven默认打包生成的jar是不能够直接运行的,因为带有main方法的类信息不会添加到manifest中(打开jar文件中的META-INF/MANIFEST.MF文件,将无法看到Main-Clas ...
- jsp和serverlet的差别
開始找工作面试的第一家公司,爱思创新 面试题: 1.jsp和serverlet的差别 简单来说: jsp:是包括java程序片的html文件servlet:是包括html的java文件 事实上说白了J ...
- 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 ...
- spring boot application properties配置详解
# =================================================================== # COMMON SPRING BOOT PROPERTIE ...