Android反编译工具介绍与简单实用方法
Android反编译的目的无非就是为了看到APK的xml、资源和代码:
得到代码的方式:直接解压APK文件 --> 得到classes.dex文件 --> 使用 dex2jar classes.dex classes.jar生成jar文件 --> [可选的解压jar文件] -->使用XJad或者JDCompiler查看源代码
得到XML的方式:
方式1:直接解压APK文件 --> 通过axmlprinter工具查看XML文件(这种方式查看的XML文件的id都是数字--即R文件中id对应的值)
方式2:使用APKTool工具解压APK文件可以直接查看XML文件
Android反编译常常使用如下的一些工具:
1、反编译命令:
apktool d D:\\Developer\androidDecode\Test0201.apk D:\\Developer\androidDecode\test0201
D:\\Developer\androidDecode\Test0201.apk:要反编译的APK文件
D:\\Developer\androidDecode\test0201:反编译文件的保存目录,必须为空目录
2、从反编译的文件编译成APK apktool b D:\\Developer\androidDecode\test0201 D:\\Developer\androidDecode\test020101.apk
D:\\Developer\androidDecode\test0201:保存编译后文件的目录
D:\\Developer\androidDecode\test020101.apk:生成的新的APK文件的保存的绝对路径
3、签名APK文件:
singedAPK.bat文件
java -jar "%~dp0signapk.jar" "%~dp0testkey.x509.pem" "%~dp0testkey.pk8" %1 signed.apk
执行singedAPK.bat命令
singedAPK D:\\Developer\androidDecode\test020101.apk 生成一个singed.apk文件和test020101.apk在同一个目录
4、使用baksmali.jar把一个dex文件转换为一个smali文件
java -jar D:\\Developer\ApkTool\baksmali.jar -o D:\\Developer\androidDecode\baksmaliout D:\\Developer\androidDecode\Hello.dex
D:\\Developer\ApkTool\baksmali.jar:baksmali.jar文件所存在的全路径
D:\\Developer\androidDecode\baksmaliout:生成的smali文件的保存目录
D:\\Developer\androidDecode\Hello.dex:要转成smali文件的路径
5、使用ddx.jar把一个dex文件转换为ddx文件
java -jar D:\\Developer\ApkTool\ddx.jar -d D:\\Developer\androidDecode\ddxout D:\\Developer\androidDecode\Hello.dex
D:\\Developer\ApkTool\ddx.jar:ddx.jar文件的绝对路径
D:\\Developer\androidDecode\ddxout:要保存ddx文件的路径
D:\\Developer\androidDecode\Hello.dex:要转换的dex路径
6、Android自带dexdump工具:dex文件转为smali文件 dexdump -d xxxx.dex > xxxx.smali
7、dex2jar.jar:dex2jar XXX.dex YYY.jar
说明:
apktool项目地址:https://code.google.com/p/android-apktool/
baksmali项目地址:https://code.google.com/p/smali/
dex2jar项目地址:https://code.google.com/p/dex2jar/downloads/list
java Decompiler(JD)项目地址:http://jd.benow.ca/
XJAD百度网盘下载地址:http://pan.baidu.com/share/link?shareid=406366626&uk=3558809438&fid=881236853
axmlprinter项目地址:https://code.google.com/p/android4me/downloads/detail?name=AXMLPrinter2.jar&can=2&q=
Android反编译工具介绍与简单实用方法的更多相关文章
- Android 反编译工具简介
Android 反编译工具: 所需工具:1 apktool : 用于获取资源文件 2 dex2Jar : 用于将classes.dex转化成jar文件 2 jd-gui: 将jar文件转化成java文 ...
- 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库
工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...
- Android反编译工具的使用-Android Killer
今天百度搜索“Android反编译”搜索出来的结果大多数都是比较传统的教程.刚接触反编译的时候,我也是从这些教程慢慢学起的.在后来的学习过程中,我接触到比较方便操作的Android反编译.在这,我将使 ...
- ApkDec android反编译工具
转自:http://www.newasp.net/soft/70498.html 下载 ApkDec是一款免费的绿色APK反编译工具 forandroid ,由android开发者社区开发. ApkD ...
- mac上Android反编译工具apktool、dex2jar入门
MAC上Apktool的安装 官网链接 image.png 使用步骤如图1-6 第一:下载一个shell脚本,保存的名字就是”apktool”,不要带.sh后缀.可以复制到sublimetext, ...
- android反编译工具总结
序:总结反编译主要的目的在于学习.利用反编译进行相关的汉化或修改,都是不道德的! 大家都知道,将apk文件解压后有两部分文件需要处理,一种是xml文件,另一种一个dex文件(.dex),我们可以从.d ...
- android反编译工具 ApkDec-Release-0.1
(1 )使用帮助 1. 选择 all 全部编译内容包括jar .xml .及其他资源文件 2. 选择 jar 只反编译并打成jar 包 3. 反编译后你可以使用jd-gui.ex ...
- Android反编译工具的用法
Android的APK文件时可以反编译的,通过反编译我们就能查看到大体的代码,帮助学习.反编译仅仅提供的是学习的方式,禁止使用该技术进行非法活动. 其实就是两个命令: 1:运行(WIN+R)-> ...
- Android 反编译工具
想必玩安卓的童鞋大多都知道,安卓的APK安装包是可以反编译出源代码的,如果开发人员发布时没有对其混淆等加密处理,反编译出来的代码几乎与真实的源代码一模一样. 想要反编译apk,需要用到apktool. ...
随机推荐
- [转载]番茄时间管理法(Pomodoro Technique):一个番茄是如何让你工作更有效率的
如果你经常读一些关于提高工作效率或时间管理类的博客,一定听说过番茄时间管理法(Pomodoro Technique).这是一种极好的帮助你集中注意力.获得更高工作效率的方法. 基本上,它的实施方法是这 ...
- lvreduce -L 1000M /dev/vg0/lv0 表示最后缩减至多大,不是减少了多大
resize2fs在前 lvextend 在后 将/dev/vg0/lv0缩减到1000M umount /lv/ 取消挂载 [root@desktop4 ~]# e2fsck -f /dev/vg0 ...
- SpringBoot2 【关于:Table 'XXX.hibernate_sequence' doesn't exist】
将ID生成略组改成@GeneratedValue(strategy = GenerationType.IDENTITY).
- js关于函数和对象的概念
<script type="text/javascript"> function func1(fn){ if(typeof(fn)=="function&qu ...
- 微信小程序——修改data里面数组某一个值
比如我现在有个data数据如下: data: { playIndex: null, courseList: [{ videoId: '0', isPlaying: false, }, { videoI ...
- 引入css少引入了rel="stylesheet" 这行代码。导致整个页面空白、
忘记引入rel="stylesheet" 如下: <link href="css/swiper-3.3.1.min.css" /> 这样使得整个页 ...
- Java设计模式(21)访问模式(Visitor者模式)
Visitor定义:作用于某个对象群中各个对象的操作.它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作. 在Java中,Visitor模式实际上是分离了collection结构中的元 ...
- 解决华为手机图片选择无效及产生的open failed: EACCES (Permission denied)错误
在华为手机上调起图片选择时原来的效果如下 原来的代码是 Intent intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT ...
- 卡片式ViewPager,一屏展示多个pager item,设置高度不一致的tabBar
ViewPager的基本用法不必多说,这都很简单,我们可以在ViewPager中加载一个ImageView,也可以加载一个Fragment,这都是目前非常常见的用法.那么我今天说的是ViewPager ...
- 关于Unity中鼠标选取物体的解决方案
今天修改了之前写的飞机大战的代码,原来的不足之处是点击屏幕的任意一点都可以移动飞机,也就是没有检测鼠标到底有没有点到飞机上. 我先是用之前的3D拾取技术,发现没有反应,才意识到我这个plane飞机节点 ...