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