SQLiteDatabaseHook.java 源代码
package com.x8zs.morgoo.droidplugin.hook.xhook;
import android.content.Context;
import android.os.Environment;
import android.text.TextUtils;
import com.x8zs.morgoo.droidplugin.core.PluginDirHelper;
import com.x8zs.morgoo.droidplugin.hook.BaseHookHandle;
import com.x8zs.morgoo.droidplugin.hook.Hook;
import java.io.File;
public class SQLiteDatabaseHook extends Hook {
private static final String TAG = "SQLiteDatabaseHook";
private final String mDataDir;
private final String mHostDataDir;
private final String mHostPkg;
public SQLiteDatabaseHook(Context context) {
super(context);
this.mDataDir = new File(Environment.getDataDirectory(), "data/").getPath();
this.mHostDataDir = PluginDirHelper.getContextDataDir(context);
this.mHostPkg = context.getPackageName();
}
private String tryReplacePath(String str) {
if (str != null && str.length() > this.mDataDir.length() && !TextUtils.equals(str, this.mDataDir) && str.startsWith(this.mDataDir) && !str.startsWith(this.mHostDataDir) && !TextUtils.equals(str, this.mHostDataDir)) {
String substring = str.substring(this.mDataDir.length() + 1);
int indexOf = substring.indexOf("/");
if (indexOf > 0) {
substring = substring.substring(0, indexOf);
}
if (!TextUtils.equals(substring, this.mHostPkg)) {
return str.replace(substring, String.format("%s/Plugin/%s/data/%s", this.mHostPkg, substring, substring));
}
return null;
}
return null;
}
@Override
protected BaseHookHandle createHookHandle() {
return null;
}
@Override
public void onInstall(ClassLoader classLoader) {
}
protected void replace(Object[] objArr, int i6) {
String tryReplacePath;
if (objArr != null && objArr.length > i6) {
Object obj = objArr[i6];
if ((obj instanceof String) && (tryReplacePath = tryReplacePath((String) obj)) != null) {
objArr[i6] = tryReplacePath;
}
}
}
}