Xposed hook PackageInfo 信息

Xposed hook PackageInfo信息

本篇文章主要讲下 利用Xposed hook packageinfo 数据, 更改versionCode,versionName等数据.

代码如下:

package com.zh.xpose;

import android.content.pm.PackageInfo;
import android.os.Build;
import android.util.Log;

import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

/**

  • @Author: zh

  • @Time: 23-12-7.

  • @Email:

  • @Describe:
    */
    public class VersionHook {
    private static final String TAG = “VersionHook”;

    public static void hook(XC_LoadPackage.LoadPackageParam loadPackageParam) {
    if (loadPackageParam == null) return;
    if (“com.tencent.wework”.equals(loadPackageParam.packageName) || “com.zh.xpose”.equals(loadPackageParam.packageName)) {
    Log.d(TAG, “hook: wework version start”);
    XposedHelpers.findAndHookMethod(“android.app.ApplicationPackageManager”,loadPackageParam.classLoader, “getPackageInfo”, String.class, int.class, new ExampleHook());
    }
    }

    public static class ExampleHook extends XC_MethodHook {
    @Override
    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
    PackageInfo packageInfo = (PackageInfo) param.getResult();
    Log.d(TAG, "Package name2: " + packageInfo.packageName);
    Log.d(TAG, "Version name2: " + packageInfo.versionName);
    Log.d(TAG, "Version code2: " + packageInfo.versionCode);
    if (packageInfo.packageName.equals(“com.zh.xposed”)||“com.tencent.wework”.equals(packageInfo.packageName)){
    packageInfo.versionName=“1.0”;
    packageInfo.versionCode=1;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    packageInfo.setLongVersionCode(1l);
    }
    Log.d(TAG, "beforeHookedMethod: "+packageInfo.toString());
    }
    param.setResult(packageInfo);
    }
    }
    }

com.zh.xposed 是我的测试demo, 增加测试代码:

  try {
            PackageInfo packageInfo = getPackageManager().getPackageInfo("com.tencent.wework", 0);
            int versionCode = packageInfo.versionCode;
            long longVersionCode = packageInfo.getLongVersionCode();
            Log.e("VersionHook", "onCreate: " + versionCode+" longVersionCode:"+longVersionCode);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }

输出结果如下:

2023-10-06 14:20:11.743 30591-30591/? D/VersionHook: hook: wework version start
2023-10-06 14:20:11.894 30591-30591/? D/VersionHook: Package name2: com.tencent.wework
2023-10-06 14:20:11.894 30591-30591/? D/VersionHook: Version name2: 3.1.15
2023-10-06 14:20:11.894 30591-30591/? D/VersionHook: Version code2: 17569
2023-10-06 14:20:11.894 30591-30591/? D/VersionHook: afterHookedMethod: 1
2023-10-06 14:20:11.894 30591-30591/? E/VersionHook: onCreate: 1 longVersionCode:1

启动企业微信验证:

2023-10-06 14:21:07.579 31003-31003/com.tencent.wework D/VersionHook: Package name2: com.tencent.wework
2023-10-06 14:21:07.580 31003-31003/com.tencent.wework D/VersionHook: Version name2: 3.1.15
2023-10-06 14:21:07.580 31003-31003/com.tencent.wework D/VersionHook: Version code2: 17569
2023-10-06 14:21:07.580 31003-31003/com.tencent.wework D/VersionHook: afterHookedMethod: 1
2023-10-06 14:21:07.582 31003-31003/com.tencent.wework D/VersionHook: Package name2: com.tencent.wework
2023-10-06 14:21:07.582 31003-31003/com.tencent.wework D/VersionHook: Version name2: 3.1.15
2023-10-06 14:21:07.582 31003-31003/com.tencent.wework D/VersionHook: Version code2: 17569
2023-10-06 14:21:07.582 31003-31003/com.tencent.wework D/VersionHook: afterHookedMethod: 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值