Skip to content

Commit 2e2f19c

Browse files
author
维术
committed
Merge branch 'master' of github.com:android-hacker/VAExposed
2 parents 67fb869 + cd1c56f commit 2e2f19c

File tree

4 files changed

+15
-3
lines changed

4 files changed

+15
-3
lines changed

VirtualApp/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
.DS_Store
88
/build
99
/captures
10+
!*.apk

VirtualApp/VAExposed_0.1.5.apk

3.42 MB
Binary file not shown.

VirtualApp/lib/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,5 @@ android {
3535

3636
dependencies {
3737
compile fileTree(include: ['*.jar'], dir: 'libs')
38+
compile 'me.weishu.exposed:exposed-core:0.1.4'
3839
}

VirtualApp/lib/src/main/java/com/lody/virtual/client/hook/proxies/am/HCallbackStub.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.content.ComponentName;
44
import android.content.Intent;
55
import android.content.pm.ActivityInfo;
6-
import android.content.pm.ApplicationInfo;
76
import android.content.pm.ServiceInfo;
87
import android.os.Handler;
98
import android.os.IBinder;
@@ -19,6 +18,9 @@
1918
import com.lody.virtual.remote.InstalledAppInfo;
2019
import com.lody.virtual.remote.StubActivityRecord;
2120

21+
import java.util.List;
22+
23+
import me.weishu.exposed.ExposedBridge;
2224
import mirror.android.app.ActivityManagerNative;
2325
import mirror.android.app.ActivityThread;
2426
import mirror.android.app.IActivityManager;
@@ -107,6 +109,8 @@ private boolean handleLaunchActivity(Message msg) {
107109
ComponentName caller = saveInstance.caller;
108110
IBinder token = ActivityThread.ActivityClientRecord.token.get(r);
109111
ActivityInfo info = saveInstance.info;
112+
ClassLoader appClassLoader = VClientImpl.get().getClassLoader(info.applicationInfo);
113+
110114
if (VClientImpl.get().getToken() == null) {
111115
InstalledAppInfo installedAppInfo = VirtualCore.get().getInstalledAppInfo(info.packageName, 0);
112116
if(installedAppInfo == null){
@@ -117,6 +121,12 @@ private boolean handleLaunchActivity(Message msg) {
117121
return false;
118122
}
119123
if (!VClientImpl.get().isBound()) {
124+
ExposedBridge.initOnce(VirtualCore.get().getContext(), info.applicationInfo, appClassLoader);
125+
List<InstalledAppInfo> installedApps = VirtualCore.get().getInstalledApps(0);
126+
for (InstalledAppInfo installedApp : installedApps) {
127+
ExposedBridge.loadModule(installedApp.apkPath, installedApp.getOdexFile().getParent(),
128+
installedApp.libPath, info.applicationInfo, appClassLoader);
129+
}
120130
VClientImpl.get().bindApplication(info.packageName, info.processName);
121131
getH().sendMessageAtFrontOfQueue(Message.obtain(msg));
122132
return false;
@@ -127,8 +137,8 @@ private boolean handleLaunchActivity(Message msg) {
127137
false
128138
);
129139
VActivityManager.get().onActivityCreate(ComponentUtils.toComponentName(info), caller, token, info, intent, ComponentUtils.getTaskAffinity(info), taskId, info.launchMode, info.flags);
130-
ClassLoader appClassLoader = VClientImpl.get().getClassLoader(info.applicationInfo);
131-
intent.setExtrasClassLoader(appClassLoader);
140+
141+
intent.setExtrasClassLoader(ExposedBridge.getAppClassLoaderWithXposed(appClassLoader));
132142
ActivityThread.ActivityClientRecord.intent.set(r, intent);
133143
ActivityThread.ActivityClientRecord.activityInfo.set(r, info);
134144
return true;

0 commit comments

Comments
 (0)