bigsinger / AndroidIdChanger

Xposed Module for Changing Android Device Info
http://repo.xposed.info/module/com.bigsing.changer
540 stars 152 forks source link

Compatibility with VirtualXposed #54

Closed lars18th closed 5 years ago

lars18th commented 6 years ago

Hi,

I suggest to add support to run inside VirtualXposed: http://github.com/android-hacker/VirtualXposed

At time, with Oreo running in VirtualXposed, when this module is enabled, other Apps doesn't start (example DevCheck). However, with other similar modules, I don't found problems and the modules efectively work (for example, changing the IMEI).

So, I feel some part of the code is incompatible with VirtualXposed. I suggest to review the code, and fix the incompatibility. The reason? It's more easy and safe to execute Xposed with VirtualXposed than running it with root and system wide.

Regards.

bigsinger commented 6 years ago

hey , it's u, long time no see. ok i'll fix it later

bigsinger commented 6 years ago

hi, I test it. VirtualXposed is a wonderful app, but it is not stable, many apps can't start in VirtualXposed, AndroidIdChanger can run in it. @lars18th

lars18th commented 6 years ago

Hi!

VirtualXposed is a wonderful app, but it is not stable, many apps can't start in VirtualXposed, AndroidIdChanger can run in it.

I works very reliable... It's based in the same idea as "App Cloner", but running inside a Sandbox. And with the addition than all Xposed modules run only in this sandbox.

Regarding the comment of "many apps can't start in VirtualXposed" this is not true in my tests. In fact, all Apps can run on it. The problem is that: when some Xposed Module activated is not fully compatible, then any App that calls to functions hooked by this module doesn't work. If you have tried to install and activate "AndroidIDChanger" then you show that a lot of Apps doesn't start when the module is active (hooking all Apps, for example). So try to disable it, restart (restart the VirtualXposed), and then try again... the App then starts without any problem.

So this the behaviour to fix... I feel something inside the module is blocking the execution. Regards.

bigsinger commented 6 years ago

i disable any xposed module and reboot, can u show me how to remove the app that cloned by VirtualXposed, i'll remove AndroidIDChanger and try again.

lars18th commented 6 years ago

can u show me how to remove the app that cloned by VirtualXposed

Yes, a little confusing until you know how to do it:

Regards.

bigsinger commented 6 years ago

no no no, it pop a menu with out uninstall

lars18th commented 6 years ago

no no no, it pop a menu with out uninstall

Yes, it's updated. New version has this popup menu.

In any case, please try to make your Xposed Module compatible with VXP. :smile:

bigsinger commented 6 years ago

I test it , app work fine when my module actived, which app can not run, please tell me the app name

lars18th commented 6 years ago

I test it , app work fine when my module actived

And the hook works? Which version of VXP you use? And which version of your AIC? And for Android? Now I'm using 8.0... and some troubles exists with VXP and Android > 7.1.

Futhermore another problem: Your module continue to be a lot of verbosing in logs. Try to see the log in VXP-XposedInstaller, even when logging is off in your module.

Regards.

bigsinger commented 6 years ago

my Android is 7.0

lars18th commented 6 years ago

my Android is 7.0

That's a big difference! In my case, with 8.0 I see some troubles.

In any case: The hooks of AIC are working inside VXP in your phone?

And please, regarding the issue with the logs... Open the Xposed Installer in the VXP, and in the left menu select LOGS. In my device your module generates excesive verbose output, even when log is disabled on it. This is true in your device? If it's true, then can you fix it, please?

Regards.

lars18th commented 6 years ago

Hi @bigsinger ,

Please, test it with the last VirtualXposed 0.12.1 and one Oreo 8.x device (as no root is needed, I feel it will be easy for you to do it).

I do this test:

Please, can you check why it fails? Thank you!

bigsinger commented 6 years ago

yes, i can replay it

lars18th commented 6 years ago

yes, i can replay it

So, I hope you can fix it.

FYI, the XPrivacyLua Module has recently obtained VXP compatibility. Perhaps you like to review the changes: https://github.com/M66B/XPrivacyLua/commit/2f45dba9b2e7c530af845776bdb4b4ec8f05c821

bigsinger commented 6 years ago

but when i debugging it , i got error: 07-10 19:12:38.999 25320-25320/? E/Xposed: java.lang.ClassNotFoundException: Didn't find class "com.bigsing.changer.MainHook" on path: DexPathList[[zip file "/data/user/0/io.va.exposed/virtual/data/app/com.bigsing.changer/base.apk"],nativeLibraryDirectories=[/data/user/0/io.va.exposed/virtual/data/app/com.bigsing.changer/lib, /system/lib, /system/vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at me.weishu.exposed.ExposedBridge.loadModule(ExposedBridge.java:236) at com.lody.virtual.client.VClientImpl.bindApplicationNoCheck(VClientImpl.java:342) at com.lody.virtual.client.VClientImpl.bindApplication(VClientImpl.java:214) at com.lody.virtual.client.VClientImpl.bindApplicationForActivity(VClientImpl.java:209) at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleLaunchActivity(HCallbackStub.java:119) at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleMessage(HCallbackStub.java:72) at android.os.Handler.dispatchMessage(Handler.java:101) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6688) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783) 07-10 19:12:39.006 25320-25320/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.bigsing.changer, PID: 25320 java.lang.RuntimeException: Unable to create application [null application] : java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Application.onCreate()' on a null object reference at com.lody.virtual.client.VClientImpl.bindApplicationNoCheck(VClientImpl.java:391) at com.lody.virtual.client.VClientImpl.bindApplication(VClientImpl.java:214) at com.lody.virtual.client.VClientImpl.bindApplicationForActivity(VClientImpl.java:209) at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleLaunchActivity(HCallbackStub.java:119) at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleMessage(HCallbackStub.java:72) at android.os.Handler.dispatchMessage(Handler.java:101) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6688) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Application.onCreate()' on a null object reference at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119) at com.lody.virtual.client.hook.delegate.InstrumentationDelegate.callApplicationOnCreate(InstrumentationDelegate.java:225) at com.lody.virtual.client.hook.delegate.AppInstrumentation.callApplicationOnCreate(AppInstrumentation.java:176) at com.lody.virtual.client.VClientImpl.bindApplicationNoCheck(VClientImpl.java:367) at com.lody.virtual.client.VClientImpl.bindApplication(VClientImpl.java:214)? at com.lody.virtual.client.VClientImpl.bindApplicationForActivity(VClientImpl.java:209)? at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleLaunchActivity(HCallbackStub.java:119)? at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleMessage(HCallbackStub.java:72)? at android.os.Handler.dispatchMessage(Handler.java:101)? at android.os.Looper.loop(Looper.java:171)? at android.app.ActivityThread.main(ActivityThread.java:6688)? at java.lang.reflect.Method.invoke(Native Method)? at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246)? at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)? 07-10 19:12:40.327 1508-8655/? E/ActivityTrigger: activityResumeTrigger: not whiteListedio.va.exposed/com.lody.virtual.client.stub.StubActivity$C0/127 07-10 19:12:40.365 25388-25388/? E/VA++: processProfileingInfo: 0xf120b6a5 07-10 19:12:40.366 25388-25388/? E/VA++: compileMethod: 0xf11fb0ed 07-10 19:12:40.427 571-571/? E/SELinux: avc: denied { find } for service=persistent_data_block pid=25388 uid=10307 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:persistent_data_block_service:s0 tclass=service_manager

bigsinger commented 6 years ago
 Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to android.os.Bundle
    at com.lody.virtual.client.hook.providers.ProviderHook.invoke(ProviderHook.java:160)
    at java.lang.reflect.Proxy.invoke(Proxy.java:913)
    at $Proxy49.call(Unknown Source)
    at android.provider.Settings$NameValueCache.getStringForUser(Settings.java:1915)
    at android.provider.Settings$Global.getStringForUser(Settings.java:10141)
    at android.provider.Settings$Global.getString(Settings.java:10130)
    at android.provider.Settings$Global.getInt(Settings.java:10309)
    at com.android.internal.policy.PhoneWindow.<init>(PhoneWindow.java:327)
    at android.app.Activity.attach(Activity.java:6988)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2785)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2927)?
    at android.app.ActivityThread.-wrap11(Unknown Source:0)?
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616)?
    at android.os.Handler.dispatchMessage(Handler.java:105)?
    at android.os.Looper.loop(Looper.java:171)?
    at android.app.ActivityThread.main(ActivityThread.java:6688)?
    at java.lang.reflect.Method.invoke(Native Method)?
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246)?
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)?

07-10 19:26:34.277 1508-4074/? E/ActivityTrigger: activityResumeTrigger: not whiteListedio.va.exposed/com.lody.virtual.client.stub.StubActivity$C0/127 07-10 19:26:34.360 32515-32515/? E/VA++: processProfileingInfo: 0xf120b6a5 07-10 19:26:34.361 32515-32515/? E/VA++: compileMethod: 0xf11fb0ed 07-10 19:26:34.418 571-571/? E/SELinux: avc: denied { find } for service=persistent_data_block pid=32515 uid=10307 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:persistent_data_block_service:s0 tclass=service_manager 07-10 19:26:34.597 32515-32515/? E/Xposed: CHANGER: error hooking WifiMac 07-10 19:26:34.634 32515-32515/? E/ArtMethod: backup method error: java.lang.ClassNotFoundException: java.lang.reflect.ArtMethod at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:453) at java.lang.Class.forName(Class.java:378) at me.weishu.epic.art.method.ArtMethod.backup(Unknown Source:19) at me.weishu.epic.art.Epic.a(Unknown Source:83) at me.weishu.epic.art.Epic.hookMethod(Unknown Source:4) at de.robv.android.xposed.DexposedBridge.hookMethod(Unknown Source:63) at me.weishu.exposed.ExposedBridge.hookMethod(ExposedBridge.java:342) at java.lang.reflect.Method.invoke(Native Method) at de.robv.android.xposed.XposedHelpers.callStaticMethod(XposedHelpers.java:1308) at de.robv.android.xposed.XposedBridge.hookMethod(XposedBridge.java:206) at de.robv.android.xposed.XposedHelpers.findAndHookMethod(XposedHelpers.java:187) at de.robv.android.xposed.XposedHelpers.findAndHookMethod(XposedHelpers.java:260) at com.bigsing.changer.b.b.a(SourceFile:802) at com.bigsing.changer.MainHook.handleLoadPackage(SourceFile:79) at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:34) at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:61) at de.robv.android.xposed.callbacks.XCallback.callAll(XCallback.java:106) at me.weishu.exposed.ExposedBridge.loadModule(ExposedBridge.java:264) at com.lody.virtual.client.VClientImpl.bindApplicationNoCheck(VClientImpl.java:342) at com.lody.virtual.client.VClientImpl.bindApplication(VClientImpl.java:214) at com.lody.virtual.client.VClientImpl.bindApplicationForActivity(VClientImpl.java:209) at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleLaunchActivity(HCallbackStub.java:119) at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleMessage(HCallbackStub.java:72) at android.os.Handler.dispatchMessage(Handler.java:101) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:6688) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783) Caused by: java.lang.ClassNotFoundException: Didn't find class "java.lang.reflect.ArtMethod" on path: DexPathList[[zip file "/data/app/io.va.exposed-rX1qLTJOL3vcttfEXCAQJg==/base.apk"],nativeLibraryDirectories=[/data/app/io.va.exposed-rX1qLTJOL3vcttfEXCAQJg==/lib/arm, /system/fake-libs, /data/app/io.va.exposed-rX1qLTJOL3vcttfEXCAQJg==/base.apk!/lib/armeabi-v7a, /system/lib, /system/vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at java.lang.Class.classForName(Native Method)? at java.lang.Class.forName(Class.java:453)? at java.lang.Class.forName(Class.java:378)? at me.weishu.epic.art.method.ArtMethod.backup(Unknown Source:19)? at me.weishu.epic.art.Epic.a(Unknown Source:83)? at me.weishu.epic.art.Epic.hookMethod(Unknown Source:4)? at de.robv.android.xposed.DexposedBridge.hookMethod(Unknown Source:63)? at me.weishu.exposed.ExposedBridge.hookMethod(ExposedBridge.java:342)? at java.lang.reflect.Method.invoke(Native Method)? at de.robv.android.xposed.XposedHelpers.callStaticMethod(XposedHelpers.java:1308)? at de.robv.android.xposed.XposedBridge.hookMethod(XposedBridge.java:206)? at de.robv.android.xposed.XposedHelpers.findAndHookMethod(XposedHelpers.java:187)? at de.robv.android.xposed.XposedHelpers.findAndHookMethod(XposedHelpers.java:260)? at com.bigsing.changer.b.b.a(SourceFile:802)? at com.bigsing.changer.MainHook.handleLoadPackage(SourceFile:79)? at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:34)? at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:61)? at de.robv.android.xposed.callbacks.XCallback.callAll(XCallback.java:106)? at me.weishu.exposed.ExposedBridge.loadModule(ExposedBridge.java:264)? at com.lody.virtual.client.VClientImpl.bindApplicationNoCheck(VClientImpl.java:342)? at com.lody.virtual.client.VClientImpl.bindApplication(VClientImpl.java:214)? at com.lody.virtual.client.VClientImpl.bindApplicationForActivity(VClientImpl.java:209)? at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleLaunchActivity(HCallbackStub.java:119)? at com.lody.virtual.client.hook.proxies.am.HCallbackStub.handleMessage(HCallbackStub.java:72)? at android.os.Handler.dispatchMessage(Handler.java:101)? at android.os.Looper.loop(Looper.java:171)? at android.app.ActivityThread.main(ActivityThread.java:6688)? at java.lang.reflect.Method.invoke(Native Method)? at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246)? at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)?

lars18th commented 6 years ago

Sorry @bigsinger ,

I don't know where is the problem! Perhaps you like to ask the original author of VXP: https://github.com/android-hacker/VirtualXposed/issues He speak Chinese..