这一篇博客只是单纯的讲讲Apktool的使用,当然我们接到的业务远不止如此。后面基本是先集成一个可用的bashscript用来基于一个模板APP快速生成一些包,然后就是写一个初版的构建平台能够在后台上传图标选择APP功能构建一个APP。
当然在玩这些高端玩法之前我们先要知道这个Apktool怎么用。那就先手动玩一波利用Apktool反编译吧。
破解过别人的游戏,改过别人的软件,也是因为这段经历我才想做出属于自己的游戏和软件从而踏上成为一名开发者的道路,然后也作为开发者对抗过各种修改和反编译破解…(手动打断故事,再讲下去这篇博客就成划水文了
好了,我们先了解一下我们今天的主角Apktool吧。
来自官网的描述:Atoolforreverseengineering3rdparty,closed,binaryAndroidapps.Itcandecoderesourcestonearlyoriginalformandrebuildthemaftermakingsomemodifications.Italsomakesworkingwithanappeasierbecauseoftheprojectlikefilestructureandautomationofsomerepetitivetaskslikebuildingapk,etc.
ItisNOTintendedforpiracyandothernon-legaluses.Itcouldbeusedforlocalizing,addingsomefeaturesorsupportforcustomplatforms,analyzingapplicationsandmuchmore.
大致的意思就是Apktool是用来逆向工程第三方、封装好的、已经编译为二进制Android应用程序的工具。它可以将资源解码为几乎原始的形式,并在进行一些修改后重建它们。由于文件结构之类的项目和一些重复性任务(如构建apk等)的自动化,它还使使用应用程序变得更容易。
不能用于盗版和其他非合法用途。它可用于本地化、添加一些功能或支持自定义平台、分析应用程序等等。
Apktool是用Java写的一个开源的APK逆向工具,简单易用,方便二次开发。
简单了解Apktool之后接下来我将一步步和大家把一个APK的名称和图标替换掉,让它变成"属于"我的APP
接着就是安装Apktool了,我这里是直接用mac并且装好brew所以就直接使用brewinstall了
brewinstallapktool
下载两个文件之后,给他们一个可执行权限
如果安装成功将会输出apktool的版本号了。我这里准备了一个demo_v001.apk
我们先看看demo_v001.apk装在手机上现在是什么样的吧
接下来我们用apktool先将demo_v001.apk逆向解包
我们本次改名称和icon其实都是在res文件夹,就先不动smali代码了。
首先改名称,我们在AndroidManifest.xml文件中看到主要读取的是@string/app_name,这个@string是从res/values/strings.xml文件夹中读取的
我直接改成天真的APP,没错就是这么简单我们就把APP的名字改成自己的了。
接下来我们把图标也换成我们自己的,我准备了下面这个图标给它换上去
我们在AndroidManifest.xml文件中能看到icon用的是@mipmap/ic_launcher
我这里换好之后
现在我们名称和图标都换好了,开始使用apktool重新封装回去。demo_v001就是你逆向出来那个文件夹
apktoolbdemo_v001
下面就是我重新编译回去之后的输出,当我们编译成功之后我们会看到demo_v001目录里面会多出一个build目录和一个dist目录,dist目录就是我们重新编译好的APK输出目录打开之后我们就能看到我们重新编译好的demo_v001.apk文件了
/Users/test/android/sdk/build-tools/30.0.3/apksignersign--ks/data/keys/app/test.keystore--ks-key-aliasby_bin--ks-passpass:"this_is_password"./demo_v001.apk
这里的/Users/test/android/sdk/build-tools/30.0.3/apksigner是Androidsdk中apksigner工具的位置具体可以看看上面的博客,/data/keys/app/test.keystore是你的签名文件,by_bin是签名文件的别名,this_is_password是签名文件密码,./demo_v001.apk是当前目录下这个apk文件
然后安装我们这个签好名的APK文件到手机就能发现APP名称和图标都变成我们的了。而且APP是能够正常启动和使用的。
后面如果我不鸽的话会继续输出使用bash脚本实现利用脚本更换图标,icon,启动图,APP主题颜色,一些关键词然后输出一个APK。
再实现一个web端选择配置就可以基于我们的APP工厂模版构建一个属于自己的APP。