Android反编译(二)之反编译XML资源文件
Android反编译(二)
之反编译XML资源文件
[目录]
1、工具
1).反编译工具
apktool http://code.google.com/p/android-apktool/downloads/list
命令:
apktool d [目标.apk] [目标文件夹] ---------反编译(decode)apktool b [文件夹] [编译之后的名称.apk]---------编译(buid)apktool if framework-res.apk --------加载资源(install framework)
2、反编译步骤
CMD>apktool d Thinkdirve.apk APK_SRC(意思是将Thinkdirve.apk解包到当前APK_SRC目录下,APK_SRC文件夹不用创建,会自动生成)
3、重新编译APK
CMD>apktool b ThinkDrive_src ThinkDrive_src.apk
(注:重新编译后的APK需要重签名)
4、实例
步骤1:将ThinkDrive.apk拷贝至apktool文件夹
步骤2:CMD进入apktool文件夹,运行反编译命令
结果:
>【例:重新编译ThinkDrive.apk】
步骤1:将修改后资源文件后(APK_SRC)的文件夹重命名ThinkDrive_src
步骤2:CMD进入apktool文件夹, 运行编译命令
结果:
5、装X技巧
写个批处理,双击运行,自动反编译当前目录下的所有apk,高端大气上档次,低调奢华有内涵啊~~~~
@echo off
set PATH=%CD%;%PATH%;
java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
[反编译.bat]
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
REM 作者:Findyou
REM 时间:2013.11.22
REM SET C_PATH=%CD%
FOR %%I IN (*.apk) DO (
ECHO [反编译 %%I]
ECHO --------------------------------
REM 检查文件夹,如果已存在则先删除
SET SRT=%%I
IF EXIST "!SRT:~0,-4!_src" (
ECHO [检查存在目标文件夹]
ECHO [删除!SRT:~0,-4!_src]
RD /S /Q !SRT:~0,-4!_src
)
ECHO [反编译开始...]
ECHO -------------------------------
ECHO apktool d !SRT! !SRT:~0,-4!_src
ECHO -------------------------------
REM apktool d %C_PATH%\!SRT! %C_PATH%\!SRT:~0,-4!_src
CALL apktool.bat d !SRT! !SRT:~0,-4!_src
ECHO -------------------------------
ECHO [反编译完成]
ECHO.
)
PAUSE
@ECHO ON
6、学习总结
3)、什么时候需要反编译?
程序主要分2种: a).系统应用软件;b).第三方apk应用。我们在美化或者汉化或者去广告之类的时候,主要做的动作有2种:
a).替换图片:如果只是替换图片,我们不需要反编译,替换相应的图片(注意名称和格式和分辨率一致),就可以了,这个时候只需要使用rar来做就好了。
b).修改xml文件:除去图片文件,apk应用里我们能折腾的就是xml文件了。如上面所说的,如果用rar打开xml文件,是乱码,所以这个时候我们就需要反编译了。
5)、什么时候需要签名?
a).如果是系统apk应用。如果仅仅是替换图片,不需要反编译,也不需要重新签名,直接用rar替换就可以.如果进行了反编译,修改完xml文件之后,我们需要把他重新编译回去。编译好的应用不能直接放入手机内用,因为系统只认识他给的签名,而我们自己签名是不被认可的。处理方法:我们把之前从系统拿出来的原版apk起名为a.apk,把自己修改完毕,并且编译的好的应用起名为b.apk。用rar打开a.apk和b.apk,然后把b.apk里的resources.arsc文件直接拖到a.apk的压缩包里,然后把更换的图片以及修改过的XML文件也替换进去。 这个时候,我们做的相当于仅仅替换了一些资源,我们还是用a.apk的签名。替换完之后,就可以直接使用了。如果有的时候修改过smali文件夹,就需要把class.dex文件也copy过去。b).如果是第三方apk应用第三方的apk应用,不管你修改了图片还是反编译了,都需要重新签名。方法是把META-INF里面的除了COM文件夹都删掉,就是删掉MF,SF,RSA这三个后缀名的文件然后使用工具签名。安装的时候要把原有的应用删掉再安装。
6)、签名工具
签名生成:keytool
重新签名:jarsigner
优化APK:zipalign
重签名,下篇有时间再写博分享。
转载请注明出处:Findyou
Android反编译(二)之反编译XML资源文件的更多相关文章
- (转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别
原帖地址:http://blog.csdn.net/zfrong/article/details/7332545 Android xml资源文件中@.@android:type.@*.?.@+引用写法 ...
- res文件夹及xml资源文件详解
目录 一.values文件:存放字符串(strings).颜色(colors).尺寸(dimens).数组(arrays).样式(styles类似于CSS文件).类型等资源 二.drawable:存放 ...
- Android将Activity 打 jar包 (解决资源文件不能打包的问题)
转载地址:http://blog.csdn.net/xiaanming/article/details/9257853 最近有一个需要,我们公司做了一个apk客户端,然后其他的公司可以根据自己的需要来 ...
- Android 开发手记二 C可执行程序编译实例(转帖)
http://www.cnblogs.com/gaozehua/archive/2011/09/02/2164077.html
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别
一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...
- 【转】Android xml资源文件中@、@android:type、@*、?、@+含义和区别
一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...
- idea中maven项目xml资源文件无法读取
解决方法:编辑pom.xml文件 添加如下标签 <build> <resources> <resource> <directory>src/main/j ...
- 使用PULL方式解析XML资源文件下面的xml文件
public class MainActivity extends Activity { private Button btn = null; private List<Map<Strin ...
- kettle 导入xml 资源文件
Repository | ExploreRight click the root node of the repositorySelect Import objects from an XML fil ...
随机推荐
- 位运算(&)实现分享弹窗上的图标动态显示/隐藏
一 需求 要求自定义弹窗,上面动态显示多种分享平台,根据后台api接口传递过来的type控制显示哪些平台icon 1 定义平台变量,用2的几次方来定value 2 若要显示那 ...
- javascript 设计模式-----策略模式
在<javascript设计模式>中,作者并没有向我们介绍策略模式,然而它却是一种在开发中十分常见的设计模式.最常见的就是当我们遇到一个复杂的表单验证的时候,常常需要编写一大段的if和el ...
- 在GitHub注册账户的过程
(1)第一步:首先起一个属于自己用户的名字(username),用户名字只能包含字母数字的字符或者单个连字符,不能只用单个连字符开始或者结束(only contain alphanumeric cha ...
- 【读书笔记】Programming Entity Framework CodeFirst -- 初步认识
以下是书<Programming Entity Framework Code First>的学习整理,主要是一个整体梳理. 一.模型属性映射约定 1.通过 System.Component ...
- 浅谈Excel开发:八 Excel 项目的安装部署
前面几篇文章讲解了Excel开发的几个比较主要的也是比较重要的方面,比如菜单系统,Excel对象模型,自定义函数,RTD函数,异步自定义函数,用户自定义任务面板等,在实际开发中我们还会遇到各种“千奇百 ...
- 使用FiddlerCore来测试WebAPI
大家在调试Web相关的API时,经常会用Fiddler来查看相关的请求,以及返回结果.当然你也可以尝试修改或者重复你的请求信息.本文主要介绍如何使用代码来实现fiddler的功能. Fiddler C ...
- Winform文件下载之WebClient
最近升级了公司内部使用的一个下载小工具,主要提升了下面几点: 1. 在一些分公司的局域网中,连接不上外网 2. 服务器上的文件更新后,下载到的还是更新前的文件 3. 没有下载进度提示 4. 不能终止下 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密
前不久,微信的企业号使用了强制的消息加密方式,随后公众号也加入了可选的消息加密选项.目前企业号和公众号的加密方式是一致的(格式会有少许差别). 加密设置 进入公众号后台的“开发者中心”,我们可以看到U ...
- 浮动ip
浮动ip 其实就是动态ip, 静态IP是固定不变的,不管你用不用这个IP上网,这个IP都是属于你的动态IP则是在使用的时候由DHCP服务器临时分配给你的,不用则不分配在网络中如果设置了一部分静态IP地 ...
- H5 调用摄像头
WebRTC(Web Real-Time Communication,网页实时通信),是一个支持网页浏览器进行实时语音对话或视频对话的API. 1.getUserMedia 要播放摄像头的影像,首先需 ...