有' S:
packageManager.getPackageInfo(packageName, 0).firstInstallTime;
我们如何修改它?也许用root / xposed或编程
答案 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)