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为例子 你可能有疑问,为什么要那么麻烦,从系 ... 
随机推荐
- python--jinja2
			from jinja2 import Template # 创建一个Template模板去渲染它 s = "my name is {{mashiro}}" t = Template ... 
- cl编译C文件的环境变量修改
			添 加环境 变量INCLUDEC:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt;C:\Program Files (x8 ... 
- uvalive4108(线段树)
			uvalive4108 题意 按顺序给出 n 个矩形,每给出一个矩形,统计它在多长的部分是最高的,并把这个长度称为该矩形的覆盖度,求最后总的覆盖度(每次得到的矩形的覆盖度之和) 分析 线段树.用两个数 ... 
- Jmeter正则表达式提取器--将上一个请求的结果作为下一个请求的参数
			正则表达式提取器是一个后置处理器,作用是在请求完成后,从响应数据中截取一部分字符串保存到变量中,以便下一个请求使用 1.首先在线程组下添加两个HTTP请求, 2.添加好两个HTTP请求后,在每个HTT ... 
- 01背包【p1060】开心的金明
			Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要 ... 
- 洛谷——P2067 Cytus-Holyknight
			P2067 Cytus-Holyknight 题目背景 本人最初作 以此纪念伟大的ios.安卓.PSV平台音乐游戏<cytus> 后续将不断更新. -------------Chapter ... 
- 面向对象-QuickHit项目
			package com.ketang.game; /** * 游戏级别类 * @author * */ public class Level { private int levelNo; //各级别编 ... 
- Chrome插件开发教程收集
			教程: http://open.chrome.360.cn/extension_dev/overview.html http://www.cnblogs.com/liuxianan/p/chrome- ... 
- tomcat重启应用和tomcat重启是两回事。热部署就是重启应用
			tomcat重启应用和tomcat重启是两回事.热部署就是重启应用 tomcat重启应用和tomcat重启是两回事.热部署就是重启应用 tomcat可以设置检测到新的class后重启该应用(不是重启t ... 
- 41个linux命令大全(鸟哥的私房菜)
			转http://www.xmws.cn/show-87-419-1.html 41个linux命令大全 发布作者:微思网络 发布时间:2017-01-10 浏览量:709次 学过linux的人 ... 
