apk文件反编译
apk文件的反编译,需要的工具apktool(反编译资源文件)和dex2jar-0.0.7.9-SNAPSHOT(反编译源码)
1、 下载相关软件
1)Apktool,下载地址:http://code.google.com/p/android-apktool/。
将其放入/home/ww/apktool/apktool目录
2)dex2jar-0.0.7.9-SNAPSHOT ,下载地址:
http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
dex2jar 是一个用来将 Android 的 Dalvik Executable (.dex) format 文件转成 Java 类文件的工具
3)JD-GUI下载地址:(它是绿色无须安装的)
Linux版JD-GUI:http://laichao.googlecode.com/files/jd-gui-0.3.2.linux.i686.tar.gz
2、 下载 apktool1.4.3.tar.bz2 、apktool-install-linux-r04-brut1.tar.bz2 两个包,并解压到统一个目录中,解压后得到aapt apktool apktool.jar 。解压安装完成后输入以下命令解压:
在命令行输入下面命令(只输入$以后的命令语句)
sudo ln -s /home/ww/apktool/apktool(自己的apktool文件所在的位置) /usr/bin/apktool (配置全局)
www.linuxidc.com@linuxidc:~$ apktool
注:
1.如果此时命令行打印出一些配置命令,则apktool已经配置成功。
2.如果此时命令行下面的抛出异常,则说明当前电脑的jdk的版本过低,配置成适合apktool的即可
3、反编译的目标apk文件
1).反编译资源文件
命令行进入要反编译的apk文件所在的文件夹
www.linuxidc.com@linuxidc:~$ apktool d xxx.apk(apk路径)ABC(文件夹名称,这是自命名,可以不写,如果不写,则默认当前apk的文件名)。
如果此处出现command not found,则在前面增加sh 。将11.apk文件放在了usr/bin/apktool目录下。
或者11.apk文件不放在usr/bin/apktool下,但执行apktool命令要在这个目录下

2).反编译源码(反编译class.dex)
命令行进入dex2jar-0.0.7.9-SNAPSHOT根文件夹
首先解压目标apk文件(直接unzip即可)得到class.dex。把class.dex拷贝到dex2jar-0.0.7.9-SNAPSHOT文件夹中
命令行执行
www.linuxidc.com@linuxidc:~$sh dex2jar.sh classes.dex
执行完毕之后,会在dex2jar-0.0.7.9-SNAPSHOT文件夹中生成一个classes.dex.dex2jar.jar的文件,这个文件就是反编译源码的压缩文件。
4、查看反编译之后的源码
由于反编译之后的源码是.class文件,所以要用专有的软件才能看。
解压classes.dex.dex2jar.jar文件(直接unzip即可,若无法解压,见
http://hi.baidu.com/dudangyimian/item/206ee9f873820fc20dd1c88d))。
用JD-GUI工具查看就可以了
之后,对图片和语言资源等文件修改后,可以再把它们编译打包成APK,签名后就是手机可以安装的本地化/修正版APK了
可以参考http://www.xinyingde.com/Article/608.Html帮助理解。
1 . 什么apk汉化啊,就到res/values里string.xml里修改字符串,或者拷贝一份values目录改为values-zh-rCN,再去里面修改string.xml里英文字符串改为中文,所谓的汉化就是这么简单。另外,有些图片里不是中文的得去改图片,那得用Photoshop了,图片也不能乱改,格式,图片大小(尺寸)得原来的。
2 . 修改smali文件,这个有些难度。比如有些apk安装了后要积分什么的,比如大于100才可以用的,其实这个值是用SharedPreference存放的,也就是存在xml里,,位置:/data/data/[包名]/shared_prefs的某个xml里,文件不多肯定是可以找到的。另外一种方法就是修改.smali文件也可以达到这目的,软件实现肯定是读取积分那个值给它修改一下就可以了,例如 const/16 v0 100 (其实就是 v0 = 100)这个语法有点像汇编,觉得还是比汇编简单,v0 v1 ...是寄存器,之前会跟变量关联的。具体的还是自己看看smali语法。
3 . 打包生成apk,执行:./apktool b xxx,会在xxx里面生成,一个dist目录,里面就是xxx.apk,但不能安装滴,提示(Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]),没有给这个apk签名,
4. 签名,执行:sh ./dex2jar/d2j-apk-sign.sh ./xxx/dist/xxx.apk 就是给刚才那个apk签名,生成的文件还是xxx.apk在apktool根目录下。这样就大功告成啦。
部分说明:老外写的《android-apktool》软件,可以帮助我们把APK反编译,生成程序的源代码和图片、XML配置、语言资源等文件。我们对图片和语言资源等文件修改后,可以再把它们编译打包成APK,签名后就是手机可以安装的本地化/修正版APK了。
apk文件反编译的更多相关文章
- Android测试(三)——APK文件反编译
APK文件反编译: 在进行反编译操作前,先简单介绍下smali文件: smali是一种文件格式,语法和Jasmine的语言类似,这些smali文件包含开发应用程序时编写的java类的代码. 工具:ja ...
- 【Android】apk文件反编译
工具: 压缩软件:用于解压apk包 dex2jar:*.dex反编译为Jar包 jd-gui:查看Jar文件 (PS:不知道博客园如何上传附件,只能把工具挂到百度网盘了:http://pan.baid ...
- [转]结合HierarchyViewer和APK文件反编译获得APP元素id值
背景: 最近在使用Robotium进行Android自动化测试.遇到了一个问题:我需要获得一个View的id(int型数值).此前我在http://maider.blog.sohu.com/25544 ...
- android apk 文件反编译
最近,自己坑逼的把一个android 项目修改版本的代码删除了.这个项目居然还没上传到源代码管理器.幸好还有apk文件,修改的代码也不多可以反编译一下. 1.下载 dex2jar 获取源码工具 地 ...
- Android开发:APK的反编译(获取代码和资源文件)
一.反编译工具: 1.APKTool: APKTool是由GOOGLE提供的APK编译工具,能够完成反编译及回编译apk的工作.同时,它也有着安装反编译系统apk所需要的framework-res框架 ...
- android apk 防止反编译技术第四篇-对抗JD-GUI
又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊.好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法.前三篇我们讲了加壳技术(http://my.oschina.net ...
- 转: android apk 防止反编译技术(1~5连载)
转: android apk 防止反编译技术 做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习. ...
- android apk 防止反编译技术第一篇-加壳技术
做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习.现在将最近学习成果做一下整理总结.学习的这些成 ...
- 获取Android自己写好了的apk以及反编译
今天,我们先说一下,获取Android自带的apk以及反编译它们来学习Android工程师是怎样写的,今天我们就以拿到Android自带的短信管理器的apk为例子 你可能有疑问,为什么要那么麻烦,从系 ...
随机推荐
- Mac下Lua环境搭建
lua源文件下载安装 到官网安装了lua包,我安装的是 lua-5.3.1 解压之后,命令行cd进入到src目录下,输入make macosx 完成后cd ..到上一层目录, 输入sudo make ...
- 给notepad++加nppFtp插件连接ubuntu编写文本
打开notepad++的菜单栏中的插件,如果没有“插件管理”,去https://github.com/ashkulz/NppFTP/releases/tag/v0.27.2,下载对应的版本,将其解压后 ...
- gitlab 搭建与迁移
#下载gitlabhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-10.1.3-ce.0.el6.x86_64.rpm ...
- 计蒜客 28437.Big brother said the calculation-线段树+二分-当前第k个位置的数 ( ACM训练联盟周赛 M)
M. Big brother said the calculation 通过线段树维护. 这个题和杭电的一道题几乎就是一样的题目.HDU5649.DZY Loves Sorting 题意就是一个n的排 ...
- android如何取消闹铃
取消闹钟: Intent intent = new Intent(context, TestReceiver.class); PendingIntent pi = PendingIntent.getB ...
- 数值计算方法 | C语言实现几个数值计算方法(实验报告版)
目录 写在前面 实验一 牛顿插值方法的实现 实验二 龙贝格求积算法的实现 实验三 高斯列主元消去法的实现 实验四 最小二乘方法的实现 写在前面 使用教材:<数值计算方法>黄云清等编著 科学 ...
- Android之9图的制作
.9.PNG确实是标准的PNG格式,只是在最外面一圈额外增加1px的边框,这个1px的边框就是用来定义图片中可扩展的和静态不变的区域.特别说明,left和top边框中交叉部分是可拉伸部分,未选中部分是 ...
- Flex this
为了便于对比和叙述,我们先上一段最简单的js+html代码:<input type="button" value="test" id="htmB ...
- java拦截器与过滤器打印请求url与参数
HttpServletRequest httpServletRequest = (HttpServletRequest) request; HttpServletResponse httpServle ...
- Architecting Android…The clean way?
Architecting Android-The clean way? 原文链接:http://fernandocejas.com/2014/09/03/architecting-android-th ...