前言
前两天哥们和我说,他的BYD车上安装的7.0版本高德地图共存版每天都会提醒一次升级,自己比较喜欢7.0养老版,不想升级,但是每天都要点击一下,就觉得比较麻烦,问我有没有方法去除一下弹窗。他给我提供了一个共存版的apk,然后我就参考了Android反编译:手把手教你制作高德地图车机共存版,在这个基础上屏蔽了升级功能。
准备工作
屏蔽功能入口
在找到入口后,发现入口界面做了一些校验后跳转到了MainMapActivity,因为弹窗是在MainMapActivity弹出的,所以就在这个类里寻找升级的逻辑。
找到MainMapActivity.class文件后发现它继承了 pd.class,pd.class继承了rd.class 。因为是未作任何操作的情况下自动显示升级弹窗,主要就排查类中 onCreate,onStart,onResume方法,最后在rd.class的onResume方法中一行行排查找到了一段代码调用了bg.class
在bg.class中b()调用了AndroidUpdate的init方法,init方法是个native方法,对比下来这段代码应该是就是要找的升级模块,找到smali代码中的bg.smali让t()返回false,这样升级功能的init就初始化失败了,
在smali代码内找到t()方法后删除逻辑直接返回false
重新打包后发现弹窗不再出现,相应的检查升级功能也调用失败。