修改android首次安装时间

时间:2018-03-24 05:37:15

标签: java android root xposed

有' S: packageManager.getPackageInfo(packageName, 0).firstInstallTime;

我们如何修改它?也许用root / xposed或编程

1 个答案:

答案 0 :(得分:0)

Xposed Framework是完美的工具!

Xposed Framework可以" Hook"任何函数调用在该函数之前/之后执行您选择的任何代码 - 或者完全替换该函数(注意 - 它只能挂钩函数,而不是字段)。

因此,在您的情况下,您希望挂钩packageManager.getPackageInfo(packageName, 0)并更改上述函数返回的对象中的firstInstallTime字段。

但是,packageManager是一个抽象类,getPackageInfo()是一个抽象函数 - 并且xposed不能挂钩抽象函数。你需要做的是挂钩类实际实现该函数的类。

该类为ApplicationPackageManager - 只需挂钩其getPackageInfo函数,无论何时调用此函数,您都可以根据自己的喜好修改返回对象中的字段firstInstallTime。您可以使用xposed的afterHookedMethod()函数来执行此操作。

ApplicationPackageManager:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/app/ApplicationPackageManager.java#ApplicationPackageManager.getPackageInfo%28java.lang.String%2Cint%29

afterHookedMethod:http://api.xposed.info/reference/de/robv/android/xposed/XC_MethodHook.html#afterHookedMethod(de.robv.android.xposed.XC_MethodHook.MethodHookParam)