Android的APK文件的反编译方法【转】
实用的收藏一下。
反编译 apk文件 操作方法
- 需要下载工具
- xjad.exe
- dex2jar.bat
- AXMLPrinter2.jar
第一步:反编译Java代码:
- 先把 XXX.apk 文件改为 XXX.zip
- 用winrar打开会看到一个文件 classes.dex
- C:\ProgramFiles\dex2jar-0.0.7.4>dex2jar.bat c:\test\classes.dex
- 之后就会看见一个文件生成 classes.dex.dex2jar.jar
- 用jad把这个 jar文件反编译就可以看到里面的源码
第二步:修正java代码 这步骤靠的是真功夫。
第三部:反编译 xml文件
- 反编译 apk包中的 XML文件
- 需要jar包:AXMLPrinter2.jar
- java -jar AXMLPrinter2.jar 51_v1.1\AndroidManifest.xml AndroidManifest_read.xml
- 写一个批处理文件
- ::@echo off
- rem 正在搜索...
- for/f "delims="%%i in('dir /b /a-d /s "*.xml"')do java -jar AXMLPrinter2.jar %%i >%%i_temp
- rem 搜索完毕
- pause
再用rename *.xml_temp *.xml 把文件名改为xml即可
第四步: 按照解析出来的R.java 的对应关系 把相关组件的ID 对应起来 这一步靠的是耐心。
--------------------------
通过dex2jar工具进行反编译
首先要下载两个东西:
1.dex2jar:http://code.google.com/p/dex2jar/downloads/list
2.JdGUI:http://java.decompiler.free.fr/?q=jdgui (反编译Jar包,查看Jar包的源代码的GUI工具)
1.下载一个.apk程序安装包,将其文件名.apk改为.zip后进行解压。
2.把其中的class.dex拷贝到dex2jar.bat所在目录。运行dex2jar.bat class.dex,将会在其文件夹下生成classes.dex.dex2jar.jar。
3.运行JD-GUI工具(它是绿色无须安装的),打开上面的jar文件,即可看到源代码。
--------------------------
1、dexdump方法
dexdump是emulator自带提供的查看dex文件的工具,可使用类似这样的命令将dex文件dump到txt文件中:
- D:\ProgramFiles\android-sdk-windows-1.6_r1\platforms\android-1.6\tools>dexdump.exe -d classes.dex > spk.dump.txt
得到的文件内容,描述了类的信息,但是可读性太差。
2、dex2jar + XJad 方法
实现参考@范铭川提供的方法,好处在于,通过XJad反编译后,大家可直接看到java源文件,缺点在于只能反编译出开发时的java文件,而开发时使用的lib包不能反编译出来。
3、AXMLPrinter2.jar + baksmali.jar + smali.jar 方法
AXMLPrinter2是还原AndroidManifest.xml和main.xml的工具,直接打开这两个xml文件是乱码,而通过还原之后,可以很明白的看到里面的内容。
baksmali.jar是反解析dex的工具,smali.jar则是再还原成dex的工具。
- java -jar AXMLPrinter2.jar D:\play\AndroidManifest.xml >AndroidManifest.txt
- java -jar AXMLPrinter2.jar D:\play\res\layout\main.xml > main.txt
- java -jar baksmali-1.2.5.jar-o classout/ d:\play\classes.dex
Android的APK文件的反编译方法【转】的更多相关文章
- [转]Android应用安装包apk文件的反编译与重编译、重签名
背景介绍: 最近在做Robotium自动化测试,使用到solo.takeScreenshot()函数以在测试过程中截图,但此函数需要被测试APP具有<uses-permission androi ...
- 将HTML5封装成android应用APK文件的几种方法
越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...
- 将HTML5封装成android应用APK文件的几种方法(转载)
越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...
- 将HTML5封装成android应用APK文件的几种方法(转)
作为下一代的网页语言,HTML5拥有很多让人期待已久的新特性.HTML5的优势之一在于能够实现跨平台游戏编码移植,现在已经有很多公司在移动 设备上使用HTML5技术.随着HTML5跨平台支持的不断增强 ...
- html5 如何打包成apk,将H5封装成android应用APK文件的几种方法
直接使用编程软件提供的方法: 1.需要下载安装MyEclipse2014,Android SDK,eclipse(需配置Android开发环境) Java和Android环境安装与配置. 2.打开My ...
- Android 将HTML5封装成android应用APK文件的几种方法
越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...
- Android odex,oat文件的反编译,回编译
现在,许多Android手机的ROM包在生成过程中都启用优化,把jar文件抽空,生成odex/oat和vdex文件,以在运行时省掉编译时间.如果想对这些jar进行修改,就要修改它们所对应的odex或者 ...
- Android安全攻防战,反编译与混淆技术完全解析(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/49738023 之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值 ...
- 简单的Android之apk包反编译方法
网上相关的文章一大堆了,我只是总结下自己的反编译方法和工具 工具下载地址: http://download.csdn.net/detail/zsjangel/7104663 下载上面的三个工具的压缩包 ...
随机推荐
- 【例题 6-8 UVA - 548】Tree
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 后序遍历的最后一个是根节点. ->然后在中序遍历中找到这个节点. 分为左右两段. 然后递归上述操作就好. 题目描述好坑啊. 原 ...
- matplotlib 可视化 —— style sheets
Customizing plots with style sheets Matplotlib Style Gallery 1. 常见 style ggplot: bmh:Bayesian Method ...
- 14、USB摄像头(V4L2接口)的图片采集
参考网站http://www.cnblogs.com/surpassal/archive/2012/12/19/zed_webcam_lab1.html 一.一些知识 1.V4L和V4L2. V4L是 ...
- 对延时敏感的应用是否应该使用Docker?
在High Scalability上看到一篇文章 How Does The Use of Docker Effect Latency? .文章回答了一个问题 I keep hearing about ...
- Maven项目中mvn clean后找不到測试类问题
在Maven项目中进行单元測试,但mvn clean后又一次mvn install项目,再次进行单元測试.会有下面的错误. <span style="font-family:KaiTi ...
- js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可)
js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可) 一.总结 ajax读取json和读取普通文本,和获 ...
- [Docker] Run Short-Lived Docker Containers
Learn the benefits of running one-off, short-lived Docker containers. Short-Lived containers are use ...
- Lucene学习总结之七:Lucene搜索过程解析 2014-06-25 14:23 863人阅读 评论(1) 收藏
一.Lucene搜索过程总论 搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程. 其可用如下图示: 总共包括以下几个过程: ...
- 走进windows编程的世界-----对话框、文本框、button
1 对话框的分类 2 对话框的基本使用方式 3 对话框资源 4 有模式对话框的使用 int DialogBox( HINSTANCE hInstance, LPCTSTR lpTemplate, ...
- Java编程思想第四版 *第五章 个人练习
练习3:(1)创建一个带默认构造器(即无參构造器)的类.在构造器中打印一条消息.为这个类创建一个对象.P116 public class Test{ public Test(){ System.out ...