ApkTool反编译和重新打包
有时会需要反编译APK,各人有各人的原因,你都懂的……
准备工作:
下载APKTool,通过下面这个连接进行下载,https://code.google.com/p/android-apktool/downloads/list
windows下只需要下载这两个文件包即可:apktool1.5.2.tar.bz2和apktool-install-windows-r05-ibot.tar.bz2
分别解压到到一个方便操作的目录下,然后就可以通过控制台进行操作了,当然前提是你配置已经有了JAVA环境,这个网上一搜一大堆,就不赘述了。
反编译:
把要反编译的APK文件放到跟APKTool四个文件的同一个目录下;
打开控制台,跳到该目录(例如是C:\Windows),执行:
cd C:\Windows
然后执行:
apktool d apkname.apk foldername
)
执行完上面语句后,如果没有出现错误提示,则成功反编译了,找到foldername目录,打开smali目录即为反编译出来的字节。
但我在执行上面语句后,却出现了错误提示:
- brut.androlib.err.UndefinedResObject: resource spec:
- 0x010300dd
根据提示描述是找不到资源文件,应该是要反编译的APK文件用到了系统的一些资源。
解决办法:
从手机中导出framework-res.apk文件,该文件是/system/framework下面,把这个文件拷到跟apkTool同一个目录下,执行以下语句把资源文件加进来:
apktool if freagmework-res.apk
执行完以后就可以把framework-res.apk导进来。此时再执行apktool d即可以正常反编译了。
由于反编译出来的是字节码,所以想修改软件逻辑就需要知道一点字节码的知识,可以看这里:寄存器、类型、函数和成员、操作符号。
在这里列举几个常用的逻辑符号的对应smali语法:
符号 smali语法 == if-eq != if-ne equals if-eqz !equals if-nez 修改完代码逻辑后,就要重新打包成APK文件了:
apktool b foldername
其中foldername即放反编译结果的目录,执行成功后会在该目录的dist目录下有一个重新打包后的apk文件。
当然我在重新打包时出现了错误提示:
- Exception in thread "main" brut.androlib.AndrolibException: brut.directory.PathN
- otExist: apktool.yml
从字面上理解就是找不到apktool.yml这个文件,如果在执行apktool
d后能正常反编译,在目录中是会存在apktool.yml文件的,我之所以出现这个错误,是因为在反编译时出现了上面提到的“资源找不到”错误后,我看
到反编译出了字节码,就没有理会它导致的。好啦,到此就成功打包了一个新的apk文件了,但还不要高兴得太早,该文件是一个没有签名的apk,有了解过android的应该都知道,没有签名是无法安装的。那就要重新为该文件签一下名了。把你的签名文件和apk拷到同一个目录下,然后执行以后语句即可:
jarsigner -verbose -keystore
wendy.keystore -signedjar wendy_signed.apk wendy.apk wendy.keystore这里输入wendy.keystore即你的签名文件名称,文件wendy.apk,最终生成wendy_signed.apk为Android签名后的APK执行文件。
大功告成!!!
参考文章:
http://blog.creke.net/786.html
http://blog.csdn.net/caszhao/article/details/6030425
http://danqingdani.blog.163.com/blog/static/1860941952012103041246686/
- brut.androlib.err.UndefinedResObject: resource spec:
- 0x010300dd
ApkTool反编译和重新打包的更多相关文章
- apktool的下载,安装,反编译和重新打包
一.环境要求 安装java 1.8 以上 命令行运行 java -version 返回版本大于1.8 如果没有,请安装java 1.8 二.下载与安装 下载apktool_x.x.x.jar到本地 官 ...
- 【转】利用apktool反编译apk,并且重新签名打包
网站:https://ibotpeaches.github.io/Apktool,下载安装好apktool. 我的安装在 C:\Users\Administrator\Downloads\apktoo ...
- apktool反编译工具
几个报错的解决办法 apktool反编译时经常会出现下面的信息 Input file was not found or was not readable. Destination directory ...
- ApkTool反编译apk,去除广告或者汉化后重新打包apk,并签名
http://my.oschina.net/mopidick/blog/135581 以ubuntu的环境为例子,window的大同小异 首先下载apktool工具:https://code.goog ...
- Android反编译和再打包神器:Apktool
首先推荐一下这东东,官网:https://ibotpeaches.github.io/Apktool/ 安装.使用之类的看官方文档吧,写这个博客主要是mark一下这东西. 这玩意只能供打包党来用,要想 ...
- Apktool反编译apk资源文件
Android开发过程中,如何查看已经打包的APK内部xml呢,google下找到了apktool这个工具, apktool项目现在已经迁移到了github:apktool 目前最新版本2.2.2,如 ...
- apktool反编译工具使用详解
文章转自: http://zhangyan1158.blog.51cto.com/2487362/683234 一.APKTOOL使用环境配置 1.安装JAVA并设置环境变量. 下载安装都很简单,关键 ...
- 反编译sencha toucha打包的apk文件,修改应用名称支持中文以及去除应用标题栏
一.去除安卓应用标题栏 sencha touch打包android安装包,去掉标题栏titlebar的简单方法 (有更复杂更好的方法,参看"二.利用反编译修改apk的应用名称为中文" ...
- apktool反编译apk文件
1.首先下载apktool文件,可以从我的网盘下载:http://pan.baidu.com/s/1nvPdbVb 2.将你的apk文件和apktool文件放到一个文件夹下,这里就放到D:\study ...
随机推荐
- Linxu Yum方式安装Mysql
1.下载yum源 进入http://dev.mysql.com/downloads/repo/,下载RedHat Enterprise Linux 6 / Oracle Linux 6版.文件名称:m ...
- Android——开机启动功能(Service和BroadcastReceiver)
BroadcastReceiver(广播接收器):发出广播让服务器去接收 BootReceiver.java package com.example.chenshuai.test321; import ...
- [转]TF-IDF与余弦相似性的应用(一):自动提取关键词
这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题. 有一篇很长的文章,我要用计算机提取它的关键词(Automatic Keyphrase extraction),完全不加以人工干预,请问怎样才 ...
- Knockout开发中文API系列2–创建数据模型和监控属性
Observables,这个词的翻译来自汤姆大叔,对于部分翻译不是很准确的,欢迎大家留言,以得到更好的翻译. Knockout是建立在以下3个核心功能之上的: 1. 属性监控与依赖跟踪 2. ...
- Tomcat的JVM和连接数设置
Tomcat的JVM和连接数设置 Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:set JAVA_OPTS=-Xms256m - ...
- python 基础笔记
1,去掉了C语言中的大括号,用空格来对齐语句块.(空格一般用2个或4个,但没有限制) 2,要在py文件代码中使用中文,需要在第一行加入下面的代码: # -*- coding: utf-8 -*- 或者 ...
- python转义符的使用
写了几行代码不能用.========有个需要的注意的就是在pycharm中看见蓝色字体要注意了一定是关键字什么,这个以后要注意. import os # g = os.walk("D:\aa ...
- 给初学者的20个CSS实用建议
英文原文:20-useful-css-tips-for-beginners,编译:杨礼鑫 过去就连一个镜像站点,我们都依靠大量的开发人员和程序员进行维护.得益于CSS和它的灵活性使得样式能够从代码中被 ...
- 【转】如果有人让你推荐Python技术书,请让他看这个列表
入门级 <Head First Python>+ 入门级 + 微信49票 + 豆瓣评分 9.5 推荐语: 66:浅显易懂,编排的顺序特别,有大量插图.对话,不感觉枯燥 古心:通熟易懂,配有 ...
- 关于Unity中关节的使用(二)
导入 1.创建工程 2.导入joint_scene.unitypackage 3.运行发现机械爪子摇来摇去,因为line节点下面的子节点之间相互碰撞带动的关系 4.为了消除这种乱摇,我们在右上角添加一 ...