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 下载上面的三个工具的压缩包 ...
随机推荐
- Ansible 部署
环境: vim /etc/hosts 192.168.199.61 Ansible 192.168.199.60 Nginx1192.168.199.62 Nginx2192.168.199.63 H ...
- [RxJS] BehaviorSubject: representing a value over time
When an Observer subscribe to a BehaviorSubject. It receivces the last emitted value and then all th ...
- 结合Wireshark捕获分组深入理解TCP/IP协议之以太网帧
摘要: 本文摘抄并整理了以太网相关理论知识,包括CSMA/CD协议机制及工作.LAN互连,详细分析了Ethernet II帧格式,最后给出Ethernet II帧实例. 一.以太网[1] 1. ...
- Android自定义组件系列【8】——遮罩文字动画
遮罩文字的动画我们在Flash中非常常见,作为Android的应用开发者你是否也想将这种动画做到你的应用中去呢?这一篇文章我们来看看如何自定义一个ImageView来实现让一张文字图片实现文字的遮罩闪 ...
- Html中CSS之去除li前面的小黑点,和ul、LI部分属性方法
对于很多人用div来做网站时,总会用到,但在显示效果时前面总是会有一个小黑点,这个令很多人头痛,但又找不到要源,其它我们可以用以下方法来清除.1.在CSS中写入代码.找到相关性的CSS,在..li和. ...
- 博客搬家啦! -----> http://ronghaopger.github.io/
新地方: http://ronghaopger.github.io/ 以后这里就不更新了,感谢博客园!
- DWG 对象与ArcGIS 要素的强制对应关系
转自原文DWG 对象与ArcGIS 要素的强制对应关系 DWG 对象与ArcGIS 要素的强制对应关系如下: Feature type DWG object types Point Point, ...
- Java8学习之旅2---基于Lambda的JDBC编程
Java8的Lambda表达式确实是一个很好的特性.可是在哪些场合下使用.事实上还是须要细致考虑的.我们当然不能为了使用而使用,而是须要找到切实实用的场合.在JDBC编程中,比如查询语句,首先须要进行 ...
- 【hdu 3951】Coin Game
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- 小强的HTML5移动开发之路(37)——jqMobi快速入门
在<小强的HTML5移动开发之路(33)-- jqMobi基础>中我们了解了什么是jqMobi,并从官方下载了jqMobi开发包,下载后解压目录如下: 拷贝上面的/css目录./plugi ...