初入职场的新的软件攻城狮,每天任务除了基础的技能学习,包括C++、Java、Andorid、算法等,就是跟着工作导师布置的任务,学习一些实用的小技能。工作导师作为资深程序猿,闷骚是一大属性,除了自己要能主动勾搭,还有就是要学会提高自觉性了。这天工作导师冷不丁发来一个链接,主要内容就是本次需要详细记录的Android运行时资源替换:http://blog.csdn.net/azhengye/article/details/49050631。
本次实践流程基于Linux Ubuntu系统,因为需要在Android源码环境下编译,所以和Windows系统没啥关系,不过后文提到的反编译的内容在Windows环境下操作过程大同小异。技术原理与应用在此就不做讨论,提供的参考文章也会有提到。
反编译相关apk文件
为了玩反编译玩得开心,我在网上下载了:计算器简约版.apk、微信.apk两个安装包,都于10月12日为最新版本,将计算器简约版作为本次运行时资源替换实践操作的对象。因为直接对apk文件包进行解压是无法得到它的原始资源文件的,解压目录中存在的资源文件在打包时都被编译过,所以我们直接打开看到的都不是明文,这里就需要我们进行资源文件的反编译,相关代码反编译的内容将会在最后给出一些参考文章。
对apk文件包的资源文件进行反编译,我用到了一个工具apktool,下载地址:https://ibotpeaches.github.io/Apktool/install/
下载界面截图如下:
根据提示内容,我们需要右键点击wrapper script将链接另存为apktool ;点击 find newest here 下载jar包并将其重命名为apktool.jar ;然后我把 apktool 和 apktool.jar 放到新建的 apktool 文件夹下,这里放到自己的工作目录即可,最后执行 chmod 命令为其赋予权限,我赋予了权限755,或许存在考虑不周的情况。
准备工作完毕,下面开始反编译资源文件,打开终端,cd进入到 apktool 文件夹目录下,执行命令:apktoo