minor fix
This commit is contained in:
parent
14fb841a53
commit
9373508fda
|
|
@ -19,7 +19,10 @@ import org.lsposed.lspatch.share.Constants;
|
|||
import org.lsposed.lspd.nativebridge.SigBypass;
|
||||
import org.lsposed.lspd.yahfa.hooker.YahfaHooker;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -33,7 +36,7 @@ import de.robv.android.xposed.XposedInit;
|
|||
* Created by Windysha
|
||||
*/
|
||||
@SuppressLint("UnsafeDynamicallyLoadedCode")
|
||||
public class LSPApplication extends Application {
|
||||
public class LSPApplication {
|
||||
private static final String ORIGINAL_APPLICATION_NAME_ASSET_PATH = "original_application_name.ini";
|
||||
private static final String ORIGINAL_SIGNATURE_ASSET_PATH = "original_signature_info.ini";
|
||||
private static final String TAG = LSPApplication.class.getSimpleName();
|
||||
|
|
@ -207,7 +210,7 @@ public class LSPApplication extends Application {
|
|||
});
|
||||
}
|
||||
|
||||
private static void doHook() throws IllegalAccessException, ClassNotFoundException {
|
||||
private static void doHook() throws IllegalAccessException, ClassNotFoundException, IOException {
|
||||
hookContextImplSetOuterContext();
|
||||
hookInstallContentProviders();
|
||||
hookActivityAttach();
|
||||
|
|
@ -216,7 +219,20 @@ public class LSPApplication extends Application {
|
|||
byPassSignature();
|
||||
}
|
||||
if (fetchSigbypassLv() >= Constants.SIGBYPASS_LV_PM_OPENAT) {
|
||||
SigBypass.enableOpenatHook();
|
||||
File apk = new File(context.getCacheDir(), "lspatchapk.so");
|
||||
if (!apk.exists()) {
|
||||
try (InputStream inputStream = context.getAssets().open("origin_apk.bin");
|
||||
FileOutputStream buffer = new FileOutputStream(apk)) {
|
||||
|
||||
int nRead;
|
||||
byte[] data = new byte[16384];
|
||||
|
||||
while ((nRead = inputStream.read(data, 0, data.length)) != -1) {
|
||||
buffer.write(data, 0, nRead);
|
||||
}
|
||||
}
|
||||
}
|
||||
SigBypass.enableOpenatHook(context.getApplicationInfo().packageName);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -227,8 +243,7 @@ public class LSPApplication extends Application {
|
|||
return cacheSigbypassLv;
|
||||
}
|
||||
for (int i = Constants.SIGBYPASS_LV_DISABLE; i < Constants.SIGBYPASS_LV_MAX; i++) {
|
||||
try {
|
||||
context.getAssets().open(Constants.CONFIG_NAME_SIGBYPASSLV + i);
|
||||
try (InputStream inputStream = context.getAssets().open(Constants.CONFIG_NAME_SIGBYPASSLV + i)) {
|
||||
cacheSigbypassLv = i;
|
||||
return i;
|
||||
}
|
||||
|
|
@ -299,7 +314,6 @@ public class LSPApplication extends Application {
|
|||
return activityThread;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void attachBaseContext(Context base) {
|
||||
|
||||
// 将applicationInfo中保存的applcation class name还原为真实的application class name
|
||||
|
|
@ -307,8 +321,6 @@ public class LSPApplication extends Application {
|
|||
modifyApplicationInfoClassName();
|
||||
}
|
||||
|
||||
super.attachBaseContext(base);
|
||||
|
||||
if (isApplicationProxied()) {
|
||||
attachOrignalBaseContext(base);
|
||||
setLoadedApkField(base);
|
||||
|
|
@ -339,11 +351,9 @@ public class LSPApplication extends Application {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
// setLoadedApkField(sOriginalApplication);
|
||||
// XposedHelpers.setObjectField(sOriginalApplication, "mLoadedApk", XposedHelpers.getObjectField(this, "mLoadedApk"));
|
||||
super.onCreate();
|
||||
|
||||
if (isApplicationProxied()) {
|
||||
// replaceApplication();
|
||||
|
|
|
|||
|
|
@ -26,9 +26,8 @@ public class LSPApplicationStub extends Application {
|
|||
Log.e(TAG, "create context err");
|
||||
}
|
||||
else {
|
||||
try {
|
||||
InputStream inputStream = context.getAssets().open("lsploader.dex");
|
||||
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||
try (InputStream inputStream = context.getAssets().open("lsploader.dex");
|
||||
ByteArrayOutputStream buffer = new ByteArrayOutputStream()) {
|
||||
|
||||
int nRead;
|
||||
byte[] data = new byte[16384];
|
||||
|
|
@ -37,9 +36,6 @@ public class LSPApplicationStub extends Application {
|
|||
buffer.write(data, 0, nRead);
|
||||
}
|
||||
|
||||
buffer.flush();
|
||||
buffer.close();
|
||||
|
||||
// loader can load it's own so from app native library dir
|
||||
String libraryDir = context.getApplicationInfo().nativeLibraryDir;
|
||||
|
||||
|
|
@ -57,6 +53,20 @@ public class LSPApplicationStub extends Application {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
|
||||
if (realLSPApplication != null) {
|
||||
try {
|
||||
realLSPApplication.getClass().getDeclaredMethod("onCreate").invoke(realLSPApplication);
|
||||
}
|
||||
catch (Exception e) {
|
||||
throw new IllegalStateException("wtf", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void attachBaseContext(Context base) {
|
||||
super.attachBaseContext(base);
|
||||
|
|
|
|||
2
mmp
2
mmp
|
|
@ -1 +1 @@
|
|||
Subproject commit efe7306fed1bcf5bde7ff8d45f2316ddc81e4e4b
|
||||
Subproject commit 41668cd0ad080e18b527ad70db4b8828059e3257
|
||||
|
|
@ -19,6 +19,7 @@ import org.lsposed.patch.util.ManifestParser;
|
|||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.Charset;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.regex.Pattern;
|
||||
|
|
@ -184,7 +185,8 @@ public class LSPatch extends BaseCommand {
|
|||
}
|
||||
|
||||
// save lspatch config to asset..
|
||||
fuckIfFail(new File(unzipApkFilePath, "assets/" + Constants.CONFIG_NAME_SIGBYPASSLV + sigbypassLevel).createNewFile());
|
||||
org.apache.commons.io.FileUtils.write(new File(unzipApkFilePath, "assets" + File.separator + Constants.CONFIG_NAME_SIGBYPASSLV + sigbypassLevel), "lspatch",
|
||||
Charset.defaultCharset());
|
||||
|
||||
// compress all files into an apk and then sign it.
|
||||
new BuildAndSignApkTask(true, unzipApkFilePath, outputPath).run();
|
||||
|
|
|
|||
Loading…
Reference in New Issue