微信降版本登录

本文详细记录了如何在Android手机上将微信版本降级以登录旧版本的过程,包括尝试替换版本号、使用pm uninstall -k命令、adb install -r命令以及替换安装目录等方法。最终通过替换安装目录成功实现旧版本登录,同时提供了一个自动化程序来简化此过程。
摘要由CSDN通过智能技术生成

 设备要求

  已root的Android手机。

  注:下面使用的两个微信安装包,com.tencent.mm.apk为旧版本6.5.16,weixin_new.apk为新版本6.7.3

背景

  最近在弄一些关于微信的东西,测试过程中,本来打算强行停止后重新启动微信,结果手残点到卸载了。当我重新安装后出现了尴尬的情况,登录的时候,提示微信版本过低,需要安装最新版才能登录。

  

 

  但是之前做的一些东西都是基于老版本的微信,所以不能安装新版本,必须想办法在老版本登录才行。

 

操作过程

尝试1、替换版本号

  最开始的想法是,既然要验证版本,那我就把旧版本的伪装一下,让它变成新版本的试试。

  但是,因为没有时间去仔细分析微信是怎么验证的,于是就抱着侥幸心理,写了个xposed模块替换版本号,

  一般情况下是通过以下代码获取版本号的:

PackageInfo packageInfo = getPackageManager().getPackageInfo("com.tencent.mm",0);
int versionCode = packageInfo.versionCode;
String versionName = packageInfo.versionName;

  所以去hook getPackageInfo方法,将其返回的PackageInfo中的versionCode和versionName替换成新版本的值就行,

  但是,由下图可知PackageManager是一个抽象接口,

  所以不能直接hook它的getPackageInfo方法,要先获取getPackageManager返回的对象的真实类型,先随便创建一个工程,通过以下代码获取真实的PackageManager类型,

Log.v("test", getPackageManager().getClass().toString());

 

查看日志,可知真实类型为android.app.ApplicationPackageManager,

  然后通过反编译最新版本的微信,获得versionCode和versionName,

  最后的hook代码如下:

if (loadPackageParam.packageName.equals("com.tencent.mm"))
{
    XposedHelpers.findAndHookMethod(
            "android.app.ApplicationPackageManager",
            loadPackageParam.classLoader,
            "getPackageInfo",
            String.class,
            int.class,
            new XC_MethodHook()
            {
                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable
                {
                    if (param.args[0].equals("com.tencent.mm"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值