MT管理器-简单实战-去更新提示(mt管理器基本教程)

createh52个月前 (02-01)技术教程11

去掉了烦人了启动页后,还有一个更新提示依旧很烦人。

我们查看 apk 信息时可以看到它当前的版本号是 1,而这边的更新提示显示最新版本号是 1100。当然一般应用的更新提示都不会告诉你版本号,而是告诉你版本名称和更新内容,我这边为了方便直接显示出来。

注意,应用判断是否更新时,基本都是通过版本号进行判断,而不是版本名称。

方法一:修改 AndroidManifest.xml

我们反编译 apk 中的 AndroidManifest.xml 文件查看应用的版本号和版本名称。

其中 versionCode 就是版本号,versionName 就是版本名称,我们把 versionCode 改成 9999(大于 1100) 然后编译保存,重新签名后安装测试,发现还是有更新提示,看来这个 APP 使用方法一无效。(只是对当前 APP 无效,其它 APP 还是可能有效的。)

方法二:搜索版本号

既然方法一无效,那么很大的可能是版本号写死在 dex 中,而不是运行时从 AndroidManifest.xml 里面获取,所以我们尝试去 dex 文件中搜索版本号。

所以我们用 Dex 编辑器++ 打开 apk 中的 classes.dex 文件,切换到搜索页,发起新搜索,内容输入 1,搜索类型选择整数,不要勾选十六进制,点击确认后,发现我们搜索到了 554 个结果,有点太多了。

搜索到这么多结果的主要原因是 1 这个数字出现的概率太大了,这么多结果我们不好一个一个去看,所以暂时先放弃方法二。

如果你在去除其它 APP 的更新提示时,使用该方法搜索到了很少的几个结果,只需要在代码中把对应的数字修改成大于最新版本的数字就行了。另外代码中的数字一般以十六进制显示,所以在代码中进行文本搜索时还需要手动转换一下版本号。

方法三:搜索关键字

尝试这个方法前先把 apk 备份一下,待会给方法四使用。

一般 APP 会从一个网址中读取最新版本信息,而网址是 http 开头,所以我们搜索 http,然后根据整个网址来判断它是否是我们要找的。

更新有关的英语单词有:version、update、ver,如果你找到的网址包含其中一个,那么很可能就是它了。

如果在你搜到的网址中都找不到这几个单词,那你可以尝试使用 Dex 编辑器++,搜索类型选择代码,分别搜索上面的三个单词。

这边我尝试使用搜索网址的方式,为了查找方便,我是用 Dex 编辑器(没有++)打开 classes.dex 文件,进入字符常量池,菜单中选择过滤,输入 http。

可以看到
http://binmt.cc/test/version.txt 就包含着关键字 version,我们把它随便改成一个无效的网址,例如 http://127.0.0.1 ,修改完成后然后保存 dex 文件。

老操作,退出 Dex 编辑器,更新完后重新签名安装,打开 APP 后更新提示果然不见了。

方法四:还是搜索关键字

我再补充一个方法,这边使用方法三中备份的 apk 进行修改,因为方法三已经成功去掉更新提示了。

我们重新看下更新提示:

对话框标题中的发现新版本应该是固定的,直接在 dex 中搜索发现新版本搜不到内容,那这个字符串应该在 arsc 文件中。

我们使用 Arsc 编辑器打开 resources.arsc 文件,搜一下字符串发现新版本

上图中第二个是在汉化应用时遗留下来的数据,不用管它,我们长按第一个,选择复制 ID,这边我们复制的 ID 是 7F0B0029。

然后我们用 Dex 编辑器++ 打开 apk 中的 classes.dex 文件,切换到搜索页,发起新搜索,内容输入 7F0B0029,搜索类型选择整数,勾选十六进制,点击确定。

我们进入 MainActivity$2$1,菜单中选择转成 Java。

可以看到 run() 方法用于显示一个对话框,猜得没错的话应该就是更新提示的对话框,我们返回到 smali 代码中,把 run() 方法中的代码删掉。

然后保存代码并编译 dex,退出 Dex 编辑器++,更新完后重新签名安装,打开 APP 同样不会出现更新提示。

总结

使用上面的方法定位到关键位置后,你可以用三个思路去掉更新提示,第一个是把版本号改大,方法一和二就是如此;第二个是让 APP 获取不到最新版本号,方法三用的就是这个思路;第三个是不让它显示更新对话框,把显示对话框的代码删掉,方法四用的就是这个思路。

相关文章

你的代码被反编译啊?如何防止java jar被反编译,大佬们快看过来

你的代码被反编译了嘛?我们将如何防止java jar被反编译,大佬们快看过来大家晚上好,这里是互联网技术学堂,今天来谈谈,如何防止java jar被反编译。如果你有兴趣,那就点赞、关注、分享吧。为什么...

达内java培训专家:7款开源Java反编译工具

反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程。达内java培训(java.tedu.cn)专家今天要来分享一些关于Java的反编译...

Java反编译工具 JD-GUI安装使用(jdgui反编译jar)

我们知道,将源代码转换成二进制执行代码的过程叫“编译”,那么反编译就是将二进制执行代码转换成源代码。在java开发里,源代码是.java文件,然后经过编译后生成计算机识别的.class文件,但是.cl...

Java反编译工具JD-GUI mac 版本安装

安装下载jd-gui包,为安全起见,下载地址选择官方release地址https://github.com/java-decompiler/jd-gui/releases下载带osx的安装包https...

如何反编译jar包,修改后再重新打包成jar包

一、下载反编译工具下载地址:http://java-decompiler.github.io/选择jd-gui-1.6.6.jar包,然后下载到电脑的目录中,直接运行就可以了二、运行jd-gui-1....

Fury:一个基于JIT动态编译的高性能多语言原生序列化框架

Fury是一个基于JIT动态编译的多语言原生序列化框架,支持Java/Python/Golang/C++等语言,提供全自动的对象多语言/跨语言序列化能力,以及相比于别的框架最高20~200倍的性能。引...