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 下载上面的三个工具的压缩包 ...
随机推荐
- 10.7 android输入系统_Dispatcher线程情景分析_Reader线程传递事件和dispatch前处理
android输入系统C++最上层文件是com_android_serve_input_InputManagerService.cpp global key:按下按键,启动某个APP可以自己指定,修改 ...
- 【BZOJ 3172】单词
[链接]h在这里写链接 [题意] 给你n个单词; 这n个单词组成了一篇文章; 问你每个单词在这篇文章中出现了多少次. 其中每个单词之间用一个逗号隔开->组成一篇文 ...
- swift项目第八天:自定义转场动画以及设置titleView的状态
如图效果: 一:Home控制器 /* 总结:1:设置登陆状态下的导航栏的左右按钮:1:在viewDidLoad里用三目运算根据从父类继承的islogin的登陆标识来判断用户是否登陆来显示不同的界面.未 ...
- 【Codeforces Round #439 (Div. 2) A】The Artful Expedient
[链接] 链接 [题意] [题解] 暴力 [错的次数] 在这里输入错的次数 [反思] 在这里输入反思 [代码] #include <bits/stdc++.h> using namespa ...
- 【t052】冰岛
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 假设你在一个n*n的冰面上,并且你想到达这个冰面的某处,可是由于冰面太滑了,所以当你向某个方向出发后, ...
- ZOJ 3204 Connect them 继续MST
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3367 题目大意: 让你求最小生成树,并且按照字典序输出哪些点连接.无解输出-1 ...
- 中小研发团队架构实践之分布式协调器.Net版ZooKeeper
原文:中小研发团队架构实践之分布式协调器.Net版ZooKeeper 一.ZooKeeper是什么 Apache ZooKeeper是由Apache Hadoop的子项目发展而来,于2010年11月 ...
- 【u108】取数游戏
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 一个N×M的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个 ...
- 机器学习01-kNN邻近算法
k-近邻算法 概述:k-近邻算法採用測量不同特征值之间的距离方法进行分类 长处:精度高.对于异常值不敏感.无数据输入假定 缺点:计算复杂度高,空间复杂度高,而且它没有办法各处基础数据的一些内部信息数据 ...
- php实现求最小的k个数(日常出错很容易是分号或者$符号忘记写了)
php实现求最小的k个数(日常出错很容易是分号或者$符号忘记写了) 一.总结 日常出错很容易是分号或者$符号忘记写了 二.php实现求最小的k个数 题目描述 输入n个整数,找出其中最小的K个数.例如输 ...