项目:VirtualAPK
文件:PluginManager.java
/**
* hookSystemServices,but need to compatible with Android O in future.
*/
private void hookSystemServices() {
try {
Singleton<IActivityManager> defaultSingleton = (Singleton<IActivityManager>) ReflectUtil.getField(ActivityManagerNative.class,null,"gDefault");
IActivityManager activityManagerProxy = ActivityManagerProxy.newInstance(this,defaultSingleton.get());
// Hook IActivityManager from ActivityManagerNative
ReflectUtil.setField(defaultSingleton.getClass().getSuperclass(),defaultSingleton,"mInstance",activityManagerProxy);
if (defaultSingleton.get() == activityManagerProxy) {
this.mActivityManager = activityManagerProxy;
}
} catch (Exception e) {
e.printstacktrace();
}
}
项目:VirtualAPK
文件:PluginManager.java
private void hookAMSForO() {
try {
Singleton<IActivityManager> defaultSingleton = (Singleton<IActivityManager>) ReflectUtil.getField(ActivityManager.class,"IActivityManagerSingleton");
IActivityManager activityManagerProxy = ActivityManagerProxy.newInstance(this,defaultSingleton.get());
ReflectUtil.setField(defaultSingleton.getClass().getSuperclass(),activityManagerProxy);
} catch (Exception e) {
e.printstacktrace();
}
}
项目:PowerToggles
文件:CmdFont.java
public static boolean run(float delta) {
try {
IActivityManager amn = ActivityManagerNative.getDefault();
Configuration config = amn.getConfiguration();
config.fontScale = (delta == 0) ? 1 : (config.fontScale + delta);
amn.updatePersistentConfiguration(config);
return true;
} catch (Throwable e) {
Debug.log(e);
return false;
}
}
项目:DeepInVirtualApp
文件:ActivityManagerPatch.java
@Override
public void inject() throws Throwable {
Field f_gDefault = ActivityManagerNative.class.getDeclaredField("gDefault");
if (!f_gDefault.isAccessible()) {
f_gDefault.setAccessible(true);
}
if (f_gDefault.getType() == IActivityManager.class) {
f_gDefault.set(null,getHookObject().getProxyObject());
} else if (f_gDefault.getType() == Singleton.class) {
Singleton gDefault = (Singleton) f_gDefault.get(null);
Field f_mInstance = Singleton.class.getDeclaredField("mInstance");
if (!f_mInstance.isAccessible()) {
f_mInstance.setAccessible(true);
}
f_mInstance.set(gDefault,getHookObject().getProxyObject());
} else {
// 不会经过这里
throw new UnsupportedOperationException("Singleton is not visible in AMN.");
}
HookBinder<IActivityManager> hookAMBinder = new HookBinder<IActivityManager>() {
@Override
protected IBinder queryBaseBinder() {
return ServiceManager.getService(Context.ACTIVITY_SERVICE);
}
@Override
protected IActivityManager createInterface(IBinder baseBinder) {
return getHookObject().getProxyObject();
}
};
hookAMBinder.injectService(Context.ACTIVITY_SERVICE);
}
项目:atlas
文件:AtlasHacks.java
public static void allMethods() throws HackAssertionException {
ActivityThread_currentActivityThread = ActivityThread.method("currentActivityThread");
AssetManager_addAssetPath = AssetManager.method("addAssetPath",String.class);
if(Build.VERSION.SDK_INT>=24) {
AssetManager_addAssetPathAsSharedLibrary = AssetManager.method("addAssetPathAsSharedLibrary",String.class);
}
Application_attach = Application.method("attach",Context.class);
PackageParser$Component_getComponentName = PackageParser$Component.method("getComponentName");
ClassLoader_findLibrary = ClassLoader.method("findLibrary",String.class);
ContextImpl_setouterContext = ContextImpl.method("setouterContext",Context.class);
if (LexFile != null && LexFile.getmClass() !=null ) {
LexFile_loadLex = LexFile.method("loadLex",String.class,int.class);
LexFile_loadClass = LexFile.method("loadClass",java.lang.classLoader.class);
LexFile_close = LexFile.method("close");
DexClassLoader_findClass = DexClassLoader.method("findClass",String.class);
}
try {
if (Build.VERSION.SDK_INT>20){
AssetManager_getResourceIdentifier = AssetManager.method("getResourceIdentifier",String.class);
AssetManager_ensureStringBlocks = AssetManager.method("ensureStringBlocks");
}
} catch (Throwable e) {
}
ActivityThread_installContentProviders = ActivityThread.method("installContentProviders",Context.class,List.class);
if(Build.VERSION.SDK_INT>25 || (Build.VERSION.SDK_INT==25 && Build.VERSION.PREVIEW_SDK_INT>0)) {
ActivityThread_installProvider = ActivityThread.method("installProvider",android.app.ContentProviderHolder.class,ProviderInfo.class,boolean.class,boolean.class);
}else if(Build.VERSION.SDK_INT==14){
ActivityThread_installProvider = ActivityThread.method("installProvider",boolean.class);
}else if(Build.VERSION.SDK_INT==15){
ActivityThread_installProvider = ActivityThread.method("installProvider",boolean.class);
}else{
ActivityThread_installProvider = ActivityThread.method("installProvider",IActivityManager.ContentProviderHolder.class,boolean.class);
}
Service_attach = Service.method("attach",ActivityThread.getmClass(),IBinder.class,Application.getmClass(),Object.class);
AssetManager_addAssetPathNative = AssetManager.method("addAssetPathNative",String.class);
if(AssetManager_addAssetPathNative==null || AssetManager_addAssetPathNative.getmethod()==null) {
AssetManager_addAssetPathNative24 = AssetManager.method("addAssetPathNative",boolean.class);
}
if((AssetManager_addAssetPathNative==null || AssetManager_addAssetPathNative.getmethod()==null) &&
(AssetManager_addAssetPathNative24==null || AssetManager_addAssetPathNative24.getmethod()==null)){
AssetManager_addAssetPathNativeSamSung = AssetManager.method("addAssetPathNative",int.class);
}
AssetManager_getStringBlockCount=AssetManager.method("getStringBlockCount");
AssetManager_getNativeStringBlock = AssetManager.method("getNativeStringBlock",int.class);
}
项目:VirtualAPK
文件:ActivityManagerProxy.java
public static IActivityManager newInstance(PluginManager pluginManager,IActivityManager activityManager) {
return (IActivityManager) Proxy.newProxyInstance(activityManager.getClass().getClassLoader(),new Class[] { IActivityManager.class },new ActivityManagerProxy(pluginManager,activityManager));
}
项目:VirtualAPK
文件:ActivityManagerProxy.java
public ActivityManagerProxy(PluginManager pluginManager,IActivityManager activityManager) {
this.mPluginManager = pluginManager;
this.mActivityManager = activityManager;
}
项目:VirtualAPK
文件:PluginManager.java
public IActivityManager getActivityManager() {
return this.mActivityManager;
}
项目:Brevent
文件:HideApiOverrideM.java
项目:DeepInVirtualApp
文件:ActivityManagerPatch.java
public static IActivityManager getAMN() {
return ActivityManagerNative.getDefault();
}
项目:DeepInVirtualApp
文件:ActivityManagerPatch.java
@Override
protected HookObject<IActivityManager> initHookObject() {
return new HookObject<IActivityManager>(getAMN());
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。