前言
本文,乃是反编译首战,在此,特意记录过程中遇到的点点滴滴问题,如有不足之处,欢迎指正~
在此,特意感谢鸡排兄以及薇薇姐~ 3q~
本文目标
由于首战,今天我们先来玩点简单的:
将Apk解包并修改资源文件(包含:更换Apk名称、替换Icon以及更换文字内容)
将修改好的Apk包进行回包,运行查看效果。
本文操作流程
摆(qián)好(tí)姿(liǎo)势(jiě)
反编译之前,我们首先准备好反编译工具,下面将进行简单介绍。
而本文,则重点使用ApkTool工具进行愉快的玩耍~
让我们一起开始愉快的玩耍吧~
一、ApkTool 下载地址
官方下载地址(资源下载较慢): https://bitbucket.org/iBotPeaches/apktool/downloads/
资源库下载(下载速度还是66的): http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/ApkTool.shtml
二、ApkTool 简述
官方简述:https://ibotpeaches.github.io/Apktool/
ApkTool官方翻译:
ApkTool,一种用于Android应用程序逆向工程的第三方工具。 它可以将资源解码为几乎原始的形式,并在进行一些修改后重建它们。 这也使得例如构建APK等一些重复的任务文件结构和自动化项目变得更容易。
二、ApkTool 骚姿势
ApkTool可以帮助我们干以下羞羞的事情:
拆卸资源近原始形式(包括resources.arsc,classes.dex,9.png.和XMLs);
将解码的资源重建回二进制APK / JAR;
组织和处理依赖框架资源的APK;
Smali调试(在2.1.0中移除了IdeaSmali);
帮助完成重复的任务(自动化)。
三、ApkTool 使用前提条件
当前开发环境所使用JDK是否为:Java 7 (JRE 1.7)及以上?
具有一定Android SDK,AAPT和Smali的基本知识。
四、ApkTool 安装说明
Windows 平台:
下载Windows 包装脚本(右键单击,保存链接为apktool.bat)
下载apktool-2(在这里找到最新)
将下载的jar重命名为 apktool.jar
将这两个文件(apktool.jar&apktool.bat)移到Windows目录(通常C://Windows)
如果提示无权访问C://Windows,则可以将这两个文件放在任何位置,然后将该目录添加到本地环境变量中的系统PATH变量中。
尝试通过apktool命令提示符运行
Linux 平台:
下载Linux 包装器脚本(右键单击,保存链接为apktool)
下载apktool-2(在这里找到最新)
将下载的jar重命名为 apktool.jar
将这两个文件(apktool.jar&apktool)移至/usr/local/bin(需要root)
确保两个文件都是可执行的(chmod +x)
尝试通过cli运行apktool
Mac OS X 平台:
下载Mac 包装器脚本(右键单击,保存链接为apktool)
下载apktool-2(在这里找到最新)
将下载的jar重命名为 apktool.jar
将这两个文件(apktool.jar&apktool)移至/usr/local/bin(需要root)
确保两个文件都是可执行的(chmod +x)
尝试通过cli运行apktool
注 - 包装脚本不是必需的,但很有用,所以我们不必java -jar apktool.jar一遍又一遍地输入。
四、ApkTool 下载后放置C://Windows目录下
拷贝过去如下所示:
四、ApkTool 起飞时检测
Step 1: 输入 java -version,查看当前环境下Java JDK版本
Step 2: 输入 apktool,查看当前环境下ApkTool信息
本文前期准备工作到此结束,下面,开搞~
开搞,上车
首先我们需要做个Demo,需求简单如下:
Demo中需要包含一个TextView以及一个ImageView,Apk图标以及名字使用默认即可。
运行后,桌面显示Logo以及Apk名称如下:
而我们的界面如下:
一、使用ApkTool解包
首先,将Build之后的测试包拷贝到桌面,然后将名字修改简单点,方便我们测试:
接着,打开cmd窗口,按照如下俩步进行操作:
键入 cd Desktop 进入桌面;
键入apktool d apk名称.apk进行解包:
结果如下:
操作完成后,你会发现在桌面为我们生成了一个和我们Apk名称一样的文件夹,如下:
暂时先不要去管这些都是什么,以后接触到慢慢了解~莫急莫急~
二、着手修改内容
在此,我们再次明确要修改的内容:
Apk 名称以及Activity中文字内容。
Apk Icon以及Activity图片内容;
首先,开始修改名称以及文字内容:
找到res目录下的string.xml文件,修改app_name以及我们定义的str_test值即可。
如下操作示例图:
之后开始修改我们的图片文件:
这里需要注意,需要将要修改的图片名称一样的统统替换,方可达到瞒天过海境界~
三、回包 - 瞒天过海第一式
通过在cmd窗口键入apktool b 解包生成文件夹名称进行回包,如下:
回包成功后,查看生成的Apk文件:
查看地址为:解包生成目录文件下的dist目录下。
这个时候需要注意,此时的包是一个未签名的包,想要安装在真机上以假乱真,还需要最后一步。
四、签名 - 以假乱真第一式
注意,LZ这里使用的是Android默认签名文件。测试包也是使用默认签名文件。
签名,可以直接使用命令行,不过LZ遇到无法打开的问题,So,无奈下找了一个批处理文件,代码如下(原作者地址找不到了,如有发现,LZ更新下地址):
set/p keystore_path=请输入.keystore的文件路径:set/p alias_path=请输入keystore的alias:set/p unsign_path=请输入待签名的apk文件路径:set/p sign_path=请输入签名后生成的apk文件路径: jarsigner -verbose -keystore %keystore_path% -signedjar %sign_path% %unsign_path% %alias_path% pause
桌面创建名为:apk-sign.bat,将代码拷贝进去,最后结果如下:
双击打开后,依次填入信息:
完成后如下提示:
警告直接忽略即可。
五、验证是否真的以假乱真
首先查看是否生成已签名包:
运行查看一波,是否真正瞒天过海,达到以假乱真?
Step 1:先来看下Logo以及名称是否发生改变?
Step 2:先来看下资源是否发生改变?
完美,达到我们要求~
回包小意外
撸码,难免出点小意外,啧啧~
1. 签名提示:android必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥条目
如下图:
这是因为签名命令行最后一个参数不正确导致,最后一个参数为:证书别名~!!!
这是因为签名命令行最后一个参数不正确导致,最后一个参数为:证书别名~!!!
这是因为签名命令行最后一个参数不正确导致,最后一个参数为:证书别名~!!!
重要的事情说三遍,再错打死你~
有其他的错误引发,去安卓巴士打死逆鳞~
2. cmd窗口中文显示乱码
当我们华丽键入签名的命令行时,发现出现一些乱码,如下:
原因是由于UTF-8格式编码导致,LZ电脑就是这个问题,别的就不知道啦~
随后快速在cmd窗口中键入chcp 936命令,也就是设置为GBK编码格式,如下:
搞定~ 如有的小伙伴还不行,可在下放参考资料中寻找结果~
3. 怎么查看证书信息
这里关于怎么查看证书相应信息,可点击查看LZ之前写的一篇文章:
Android Studio获取SHA1值:http://www.apkbus.com/blog-904057-63611.html
这里附上结果图:
4. 提示系统找不到指定文件
解决办法简单粗暴:将签名文件拷贝提示地址下即可。
5. 怎么找默认证书
简单粗暴,见下图:
6. 提示:jarsigner:无法打开jar文件:New.apk
兄弟,你是用命令行么?换脚本文件吧,暂时这是最有效的方式。
7. 批处理文件打开乱码
暴力解决:
新建txt文件,将批处理代码拷贝进去,选择另存为,设置名称,记得将编码设置为:ANSI(支持中文)即可。
如下图:
共同学习,写下你的评论
评论加载中...
作者其他优质文章