mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-12-23 09:01:08 +03:00
Avanguard выброшен
This commit is contained in:
parent
1e35e89d1c
commit
3cd15a6168
8 changed files with 10 additions and 220 deletions
|
@ -254,7 +254,7 @@ private void stdBuild() throws IOException {
|
|||
throw new IOException(String.format("Missing init script file ('%s')", Launcher.INIT_SCRIPT_FILE));
|
||||
// Write launcher guard dir
|
||||
IOHelper.walk(runtimeDir, new RuntimeDirVisitor(output, runtime), false);
|
||||
IOHelper.walk(guardDir, new GuardDirVisitor(output, runtime), false);
|
||||
//IOHelper.walk(guardDir, new GuardDirVisitor(output, runtime), false);
|
||||
}
|
||||
// Create launcher config file
|
||||
byte[] launcherConfigBytes;
|
||||
|
|
|
@ -1,104 +0,0 @@
|
|||
package ru.gravit.launcher;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import cpw.mods.fml.SafeExitJVMLegacy;
|
||||
import net.minecraftforge.fml.SafeExitJVM;
|
||||
import ru.gravit.launcher.hasher.DirWatcher;
|
||||
import ru.gravit.launcher.hasher.HashedDir;
|
||||
import ru.gravit.utils.NativeJVMHalt;
|
||||
import ru.gravit.utils.helper.*;
|
||||
import ru.zaxar163.GuardBind;
|
||||
|
||||
public class AvanguardStarter {
|
||||
static class SecurityThread implements Runnable {
|
||||
static long macID = GuardBind.avnGetMacId();
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
while (!Thread.interrupted()) {
|
||||
try {
|
||||
if (macID != GuardBind.avnGetMacId()) {
|
||||
LogHelper.error("MacID changed");
|
||||
safeHalt(8);
|
||||
}
|
||||
if (!GuardBind.avnIsStarted()) {
|
||||
LogHelper.error("Avanguard stopped! Process stopped");
|
||||
safeHalt(5);
|
||||
}
|
||||
} catch (NullPointerException e) {
|
||||
LogHelper.error("Avanguard unloaded! Process stopped");
|
||||
safeHalt(6);
|
||||
}
|
||||
try {
|
||||
Thread.sleep(2000);
|
||||
} catch (InterruptedException e) {
|
||||
GuardBind.avnGetMacId();
|
||||
if (!GuardBind.avnIsStarted()) {
|
||||
LogHelper.error("Thread stopped! Process stopped");
|
||||
safeHalt(7);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void safeHalt(int exitcode) {
|
||||
try {
|
||||
SafeExitJVMLegacy.exit(exitcode);
|
||||
} catch (Throwable ignored) {
|
||||
|
||||
}
|
||||
try {
|
||||
SafeExitJVM.exit(exitcode);
|
||||
} catch (Throwable ignored) {
|
||||
|
||||
}
|
||||
NativeJVMHalt halt = new NativeJVMHalt(exitcode);
|
||||
halt.halt();
|
||||
}
|
||||
|
||||
public static final String NAME = Launcher.getConfig().projectname;
|
||||
public static Path wrapper = null, avanguard = null;
|
||||
|
||||
public static void main(boolean init) {
|
||||
if (init)
|
||||
GuardBind.init();
|
||||
GuardBind.avnRegisterThreatNotifier((int threatType) -> {
|
||||
System.err.println("Threat " + GuardBind.ThreatType.getThreat(threatType).name());
|
||||
LogHelper.error("Cheating == crash!");
|
||||
try {
|
||||
SafeExitJVM.exit(threatType + 7000);
|
||||
} catch (Throwable e) {
|
||||
SafeExitJVMLegacy.exit(threatType + 7000);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
// нужно делать до пуска таймера!
|
||||
GuardBind.avnStartDefence();
|
||||
CommonHelper.newThread("Security Thread", true, new SecurityThread()).start();
|
||||
}
|
||||
|
||||
public static void load() {
|
||||
GuardBind.startAbs(avanguard.toString());
|
||||
}
|
||||
|
||||
public static void start(Path path1) throws IOException {
|
||||
Path path = path1.resolve("guard");
|
||||
if (!IOHelper.exists(path))
|
||||
Files.createDirectories(path);
|
||||
Path avanguard = path.resolve(JVMHelper.JVM_BITS == 64 ? "Avanguard64.dll" : "Avanguard32.dll");
|
||||
Path wrapper = path.resolve(JVMHelper.JVM_BITS == 64 ? NAME + "64.exe" : NAME + "32.exe");
|
||||
String avanguardResource = JVMHelper.JVM_BITS == 64 ? "Avanguard64.dll" : "Avanguard32.dll";
|
||||
String wrapperResource = JVMHelper.JVM_BITS == 64 ? "wrapper64.exe" : "wrapper32.exe";
|
||||
UnpackHelper.unpack(Launcher.getResourceURL(avanguardResource, "guard"), avanguard);
|
||||
UnpackHelper.unpack(Launcher.getResourceURL(wrapperResource, "guard"), wrapper);
|
||||
AvanguardStarter.wrapper = wrapper;
|
||||
AvanguardStarter.avanguard = avanguard;
|
||||
HashedDir guard = new HashedDir(path, null, true, false);
|
||||
DirWatcher dirWatcher = new DirWatcher(path, guard, null, false);
|
||||
CommonHelper.newThread("Guard Directory Watcher", true, dirWatcher).start();
|
||||
}
|
||||
}
|
|
@ -217,11 +217,6 @@ public void start(String... args) throws Throwable {
|
|||
loadScript(Launcher.INIT_SCRIPT_FILE);
|
||||
LogHelper.info("Invoking start() function");
|
||||
Invocable invoker = (Invocable) engine;
|
||||
if (Launcher.isUsingAvanguard()) {
|
||||
AvanguardStarter.start(DirBridge.dir);
|
||||
AvanguardStarter.load();
|
||||
AvanguardStarter.main(false);
|
||||
}
|
||||
Launcher.modulesManager.postInitModules();
|
||||
invoker.invokeFunction("start", (Object) args);
|
||||
}
|
||||
|
|
|
@ -334,8 +334,8 @@ public static Process launch(
|
|||
List<String> args = new LinkedList<>();
|
||||
boolean wrapper = isUsingWrapper();
|
||||
Path javaBin;
|
||||
if (wrapper) javaBin = AvanguardStarter.wrapper;
|
||||
else if (isDownloadJava) {
|
||||
/*if (wrapper) javaBin = AvanguardStarter.wrapper;
|
||||
else*/ if (isDownloadJava) {
|
||||
//Linux и Mac не должны скачивать свою JVM
|
||||
if (JVMHelper.OS_TYPE == OS.MUSTDIE)
|
||||
javaBin = IOHelper.resolveJavaBin(JavaBinPath);
|
||||
|
@ -405,11 +405,6 @@ public static void main(String... args) throws Throwable {
|
|||
engine.loadScript(Launcher.API_SCRIPT_FILE);
|
||||
engine.loadScript(Launcher.CONFIG_SCRIPT_FILE);
|
||||
Launcher.modulesManager.preInitModules();
|
||||
if (Launcher.isUsingAvanguard()) {
|
||||
AvanguardStarter.start(DirBridge.dir);
|
||||
AvanguardStarter.load();
|
||||
AvanguardStarter.main(false);
|
||||
}
|
||||
checkJVMBitsAndVersion();
|
||||
JVMHelper.verifySystemProperties(ClientLauncher.class, true);
|
||||
EnvHelper.checkDangerousParams();
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
import ru.gravit.launcher.serialize.HInput;
|
||||
import ru.gravit.launcher.serialize.HOutput;
|
||||
import ru.gravit.launcher.serialize.SerializeLimits;
|
||||
import ru.zaxar163.GuardBind;
|
||||
|
||||
public final class AuthRequest extends Request<Result> {
|
||||
public static final class Result {
|
||||
|
@ -72,9 +71,9 @@ protected Result requestDo(HInput input, HOutput output) throws IOException {
|
|||
if (Launcher.profile != null)
|
||||
output.writeString(Launcher.profile.getTitle(), SerializeLimits.MAX_CLIENT);
|
||||
output.writeInt(auth_id);
|
||||
output.writeLong(Launcher.isUsingAvanguard() ? GuardBind.avnGetHddId() : 0);
|
||||
output.writeLong(Launcher.isUsingAvanguard() ? GuardBind.avnGetCpuid() : 0);
|
||||
output.writeLong(Launcher.isUsingAvanguard() ? GuardBind.avnGetSmbiosId() : 0);
|
||||
output.writeLong(0);
|
||||
output.writeLong(0);
|
||||
output.writeLong(0);
|
||||
output.writeByteArray(encryptedPassword, SecurityHelper.CRYPTO_MAX_LENGTH);
|
||||
output.flush();
|
||||
|
||||
|
|
|
@ -1,95 +0,0 @@
|
|||
package ru.zaxar163;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
import ru.gravit.launcher.LauncherAPI;
|
||||
import ru.gravit.utils.helper.JVMHelper;
|
||||
import ru.gravit.utils.helper.LogHelper;
|
||||
|
||||
@LauncherAPI
|
||||
public final class GuardBind {
|
||||
public interface ThreatNotifier {
|
||||
boolean call(int threatType);
|
||||
}
|
||||
|
||||
public enum ThreatType {
|
||||
UNKNOWN_THREAT(0),
|
||||
REMOTE_THREAD(1),
|
||||
WINDOWS_HOOKS_INJECTION(2),
|
||||
UNKNOWN_TRACE_LOAD_LIBRARY(3),
|
||||
CONTEXT_MANIPULATION(4),
|
||||
CRITICAL_MODULE_CHANGED(5),
|
||||
UNKNOWN_INTERCEPTION(6),
|
||||
UNKNOWN_MEMORY_REGION(7),
|
||||
UNKNOWN_APC_DESTINATION(8);
|
||||
|
||||
public static ThreatType getThreat(int threatType) {
|
||||
return ThreatType.values()[threatType];
|
||||
}
|
||||
|
||||
private final int id;
|
||||
|
||||
ThreatType(int value) {
|
||||
id = value;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
@LauncherAPI
|
||||
public static native void avnEliminateThreat(int threatType);
|
||||
|
||||
@LauncherAPI
|
||||
public static native long avnGetCpuid();
|
||||
|
||||
@LauncherAPI
|
||||
public static native long avnGetHash(byte[] data);
|
||||
|
||||
@LauncherAPI
|
||||
public static native long avnGetHddId();
|
||||
|
||||
@LauncherAPI
|
||||
public static native long avnGetMacId();
|
||||
|
||||
@LauncherAPI
|
||||
public static native long avnGetSmbiosId();
|
||||
|
||||
@LauncherAPI
|
||||
public static native boolean avnIsStarted();
|
||||
|
||||
@LauncherAPI
|
||||
public static native boolean avnIsStaticLoaded();
|
||||
|
||||
@LauncherAPI
|
||||
public static native void avnRegisterThreatNotifier(ThreatNotifier notifier);
|
||||
|
||||
@LauncherAPI
|
||||
public static native boolean avnStartDefence();
|
||||
|
||||
@LauncherAPI
|
||||
public static native void avnStopDefence();
|
||||
|
||||
public static void init() {
|
||||
LogHelper.debug("Anti-Cheat loading");
|
||||
if (JVMHelper.OS_TYPE == JVMHelper.OS.MUSTDIE)
|
||||
if (JVMHelper.JVM_BITS == 32)
|
||||
System.loadLibrary("Avanguard32");
|
||||
else if (JVMHelper.JVM_BITS == 64)
|
||||
System.loadLibrary("Avanguard64");
|
||||
LogHelper.debug("Anti-Cheat loaded");
|
||||
}
|
||||
|
||||
public static void start(Path path) {
|
||||
LogHelper.debug("Anti-Cheat loading");
|
||||
System.load(path.normalize().toAbsolutePath().toFile().getAbsolutePath());
|
||||
LogHelper.debug("Anti-Cheat loaded");
|
||||
}
|
||||
|
||||
public static void startAbs(String path) {
|
||||
LogHelper.debug("Anti-Cheat loading");
|
||||
System.load(path);
|
||||
LogHelper.debug("Anti-Cheat loaded");
|
||||
}
|
||||
}
|
|
@ -57,10 +57,10 @@ public final class Launcher {
|
|||
|
||||
private static final Pattern UUID_PATTERN = Pattern.compile("-", Pattern.LITERAL);
|
||||
public static int MAJOR = 4;
|
||||
public static int MINOR = 0;
|
||||
public static int PATCH = 8;
|
||||
public static int MINOR = 1;
|
||||
public static int PATCH = 0;
|
||||
public static int BUILD = 0;
|
||||
public static Version.Type RELEASE = Version.Type.STABLE;
|
||||
public static Version.Type RELEASE = Version.Type.DEV;
|
||||
|
||||
@LauncherAPI
|
||||
public static LauncherConfig getConfig() {
|
||||
|
|
2
modules
2
modules
|
@ -1 +1 @@
|
|||
Subproject commit f4ff154d105248c5bcb3a4cb217b38eed01b3a27
|
||||
Subproject commit dd97153ee53813078391aa07d1700f890e979e3f
|
Loading…
Reference in a new issue