fix parcel use

This commit is contained in:
327135569 2021-04-17 19:43:01 +08:00
parent 0c9577a13a
commit e467cd27c4
1 changed files with 4 additions and 7 deletions

View File

@ -10,7 +10,6 @@ import android.content.pm.Signature;
import android.os.Build; import android.os.Build;
import android.os.IBinder; import android.os.IBinder;
import android.os.Parcel; import android.os.Parcel;
import android.util.Log;
import com.wind.xposed.entry.util.FileUtils; import com.wind.xposed.entry.util.FileUtils;
import com.wind.xposed.entry.util.XLog; import com.wind.xposed.entry.util.XLog;
@ -123,8 +122,8 @@ public class LSPApplication extends Application {
} }
private static void byPassSignature() throws ClassNotFoundException, IllegalAccessException { private static void byPassSignature() throws ClassNotFoundException, IllegalAccessException {
Field[] fields1 = Class.forName("android.content.pm.IPackageManager$Stub").getDeclaredFields(); Field[] pmStubFields = Class.forName("android.content.pm.IPackageManager$Stub").getDeclaredFields();
for (Field field : fields1) { for (Field field : pmStubFields) {
if (!Modifier.isStatic(field.getModifiers()) || field.getType() != int.class) { if (!Modifier.isStatic(field.getModifiers()) || field.getType() != int.class) {
continue; continue;
} }
@ -140,8 +139,7 @@ public class LSPApplication extends Application {
} }
if (TRANSACTION_getPackageInfo_ID == -1) { if (TRANSACTION_getPackageInfo_ID == -1) {
Log.e(TAG, "what's wrong with you (rom) ?"); throw new IllegalStateException("getPackageInfo transaction id null");
return;
} }
XposedHelpers.findAndHookMethod("android.os.BinderProxy", getAppClassLoader(), "transact", int.class, Parcel.class, Parcel.class, int.class, new XC_MethodHook() { XposedHelpers.findAndHookMethod("android.os.BinderProxy", getAppClassLoader(), "transact", int.class, Parcel.class, Parcel.class, int.class, new XC_MethodHook() {
@ -187,8 +185,7 @@ public class LSPApplication extends Application {
} }
out.setDataPosition(0); out.setDataPosition(0);
// no idea why report err if just keep size out.setDataSize(0);
out.setDataCapacity(out.dataSize() * 2);
out.writeNoException(); out.writeNoException();
out.writeInt(1); out.writeInt(1);
packageInfo.writeToParcel(out, PARCELABLE_WRITE_RETURN_VALUE); packageInfo.writeToParcel(out, PARCELABLE_WRITE_RETURN_VALUE);