突发奇想,想尝试更改自己常用APP的图标,或软件内部的背景等(只作为自己使用,不拿来商用)。起初只了解可以更改APP底层Java源程序来达到自己的目的,但是具体怎么操作却浑然不知,然后我便查询了几种方法。

所有的方法都不尽相同。第一步都是通过apktool工具将.apk文件反编译为文件夹,修改过源程序后再回编译为.apk文件。(注意这样生成的.apk文件是未签名的安装包,手机是无法下载未签名的软件的)第二步就是通过一些手段为你所修改的APP签名。接着就可以重新下载你修改过的APP了。

这里分步骤为大家介绍几种方法。

方法一

一.反编译

1. 先在电脑上下载Android逆向助手(包括apktool与逆向助手):

(百度网盘:https://pan.baidu/s/15jtoFDg9LWV80HREeyx5HA 提取码: k527 ),将你想更改的.apk文件将apk文件复制到逆向助手的apktool目录里。

2.在cmd命令行中,cd到Android逆向助手的apktool目录下。

并且输入命令apktool d -f xxx.apk(安装包名称)键入回车后,开始反编译该安装包,如果出现下图情况,则已经反编译成功,此时apktool目录下会出现一个与你.apk文件名相同的一个文件夹。

若反编译时出现其他情况,或显示反编译已经完成,但是打开反编译出来的文件夹发现文件夹为空,这是因为Android逆向助手很久没更新,Android逆向助手lib中的apktool版本过老不支持这个apk的Android平台,这个时候我们可以通过手动更新lib下的Apktool来解决。
这里我提供一个GitHub链接,apktool更新地址:https://ibotpeaches.github.io/Apktool/

可能Edge浏览器会阻止下载该文件,但实测无害,可以关掉防火墙或者用谷歌浏览器下载。

拿到最新版的apktool之后,我们把apktool.jar放到Android逆向助手的\lib\apktool下,这时候我们就可以进行反编译了。

3.打开.apk名字命名的文件夹,里面可以直接看到res目录下的资源文件和Android的清单文件,但是看不到Java文件。

这时需要我们双击打开Android逆向助手.exe,选中“提取dex”操作,然后将lib\apktool目录下的apk拖动到源文件中;点击“操作”,得到dex文件。

选中“dex转jar”操作,然后将得到的dex文件拖动(很重要,必须拖动)到源文件中;点击“操作”,得到jar文件,jd工具会自动打开jar文件,这样就看到java源码了。(如果应用进行了混淆,看到的源码类和方法都是abc等)

但前提是你必须先装好Java,和配置Android Stdio的环境。才能查看Java的源代码。至于如何配置Java的环境,下一步骤会讲到。

二.修改源代码

方法一:下载并安装Java与Android Stdio或Eclipse,在AS或Eclipse中进行修改。

( AS下载链接:https://pan.baidu/s/1RJHlwHcQC83w93S7vNw-vA 提取码:3456)里面自带1.8版本Java。建议在AS中修改,但具体操作需要大家去查资料了,我所使用的是Eclipse。为什么要使用AS呢?因为之后所要进行apk签名也需要在这个集成器里。

具体安装过程可以参考https://mp.weixin.qq/s/Xz9Bd5_z4qRAF1Y9VjuAXg。

每一步都要认真搞正确。

经过艰难的安装后,你可能会问了,为什么非要利用这个来修改Java文件呢,因为之前拿jd查看的.jar文件只能用来查看,不能用来修改。

1.首先使用反编jd打开jar包,用这个工具打开你的jar包之后,选择你要修改的class文件打开它。

 

2.保存。保存的时候这个工具就自动将class文件转成java文件了,选择你要保存的位置将Java文件进行保存。

3.打开编程工具(我是Eclipse),创建一个java项目(我创建了一个maven项目,因为为了方便下载其他依赖包),将那个java文件丢进去,注意:你建的java项目里面要加一个和反编译的java文件里的包名同名的包,如下图红框所示,否则会报错不用多说;你要把你要修改的jar包引入你的项目,如图绿框所示,因为你要修改的java文件可能要依赖其他的类;如果你要修改的java文件还需要依赖其他的配置或者jar包,那么你还需要将需要的jar包引进来。总而言之在保证你要修改的java文件不报错的情况下再进行轻微源码修改。

4.修改完之后进行编译,如下图。

 

注意:这么打包可能不通过,没关系,我们只为编译这个java文件,到你项目本地文件看一下就知道有没有编译成功如下图,前提是你的java类不报错。

5.打开这个class文件看一下是不是你修改过的。

6.开始重打jar包,将原jar包减压,打开里面放class文件的地方,将要改的class文件删掉,把改成功的class文件替换上去,如下图。

减压后出现两个文件夹。

打开org找class文件,别管META-INF。

 

找到之后将之替换,之后重新打包,注意:解压出什么东西,打包的时候再打包进去,选择压缩文件格式为zip,并将生成的压缩包文件的后缀名设置为jar。


好了,到此就算完成源码修改了。

这样修改完成后只需要签名就可以下载安装了。

 方法二:还记得反编译生成的同名文件夹吗?可以直接修改里面的文件。

如果你只想改一些基础的,像APP里面的图标、背景之类的,且英语功底不错的,可以直接修改这个文件夹的内容,这样也是最简单的修改方法,切记要修改一定把所以与之相关的内容都修改,不然有可能前功尽弃! 

修改完成后,需要用apktool对此文件夹进行回编译,还是以cmd命令执行,命令语句为apktool b xxx(文件夹名称)。

之后会再次看到一个.apk的文件,这样修改完成后也只需要签名就可以直接下载了。

方法三:通过手机软件APK编辑器,也可以直接修改APP的简单元素,十分简单粗暴。可以在手机浏览器中找寻、下载。

这样修改后的安装包需要手动卸载之前的APP,然后在不知道哪里给你下载来,我的是直接跳转到夸克网盘里保存的。同理,这里得到的安装包也是未签名的。

三.apk签名

方法一:用Android Stdio生成.jks文件,从而完成签名。

1.选择Build -> Generate Signed APK

                      

 

 接着出现

                      

 因为我们是没有密钥的(身份证)所以我们要去生成一个密钥,所以这里我们选择 Create new… 
(注意:这里有两个“密钥的密码” 因为一个是密钥的密码,一个是key的密码,但是通常我们在设置的时候会选择设置同一个,这样方便我们记忆,所以这里都认为是密钥的密码。)

之后出现

                               

 点击ok之后,则选择好了文件,并生成了jks文件了。

                           

                           

 之后,当AS的右上角出现,表示打包成功 点击直接打开生成的.apk文件的位置 

                            

 这样的apk就可以直接安装到手机了。

 方法二:利用手机软件TM管理器(一款非常强大的APP),可以在手机浏览器里下载。这是一款强大的文件管理工具和APK逆向修改神器。如果你喜欢它的双窗口操作风格,可以单纯地把它当成文件管理器使用。如果你对修改APK有深厚的兴趣,那么你可以用它做许许多多的事,例如汉化应用、替换资源、修改布局、修改逻辑代码、资源混淆、去除签名校验等,主要取决于你如何使用。

1.将之前未签名的.apk文件都先下载到手机上,因为无法安装,所以先搁置在一边。打开TM管理器。

这是该APP界面

 

 2.点击右上角搜索未签名的.apk文件。

 

 

                                                

 3.点击功能。

 

4.点击APK签名。选择V1+V2签名方案,点击确定。

 

5. 再次搜索这个名字的apk,会发现多了一个xxx_sign.apk。

 

 6.这个就是签名安装包,直接下载即可。

为了一个小小的想法,花费了一天的时间,中间有数不清的碰壁与失误,各种各样的文章看的我眼花缭乱,也多次怀疑以我现在的能力是否可以实现这个看似简单实则不易的想法。害,只能说科研之路漫漫其修远兮!

更多推荐

可以修改APP数据库(图标、名称、背景等)的简单方法