-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Кароче думаю вы видели MEGA DAUN OBFFFF_KRENDEL AUTIST PROTECTION так вот кхм кхм автор данной проты тупой аутист вы спросите почему? а я отвечу if (name.startsWith("im/")) это уже доказывает что они тупой аутист так вот не суть сегодня слив его мего селфкод проты
selfcode:
package ru.krendel;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.SecureRandom;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
import java.util.jar.JarOutputStream;
import java.util.logging.Logger;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.ClassWriter;
public class KrendelGuard {
private static final Logger LOGGER = Logger.getLogger(KrendelGuard.class.getName());
private static final String WATERMARK = "KrendelGuard_";
private static final SecureRandom RANDOM = new SecureRandom();
private static final byte[] KEY = "SolutionDeobfuscate1488".getBytes();
private static final String[] SENSITIVE_PATHS = new String[] { "C:\\KrendelGuard\\WiksiClient\\client_1_16_5", "C:\\KrendelGuard\\WiksiClient\\client_1_16_5\\custom_java\\conf\\security\\config.policy" };
private static final String FOLDER_NAMES = "Š…„…‹œ ‘Ž‘…’ •“‰ … ŽŠ“€‰’… …ƒŽ Ž’“";
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("JAR-");
String inputJarPath = reader.readLine();
File inputJar = new File(inputJarPath);
System.out.print("JAR-");
String outputJarPath = reader.readLine();
File outputJar = new File(outputJarPath);
Map<String, byte[]> resources = (Map)new HashMap<>();
createDirectoriesAndFiles(resources);
JarInputStream jis = new JarInputStream(new FileInputStream(inputJar));
try {
JarEntry entry;
while ((entry = jis.getNextJarEntry()) != null) {
String name = entry.getName();
if (name.endsWith(".class")) {
byte[] arrayOfByte = jis.readAllBytes();
if (name.startsWith("Š…„…‹œ Ž’…Š’ Ž‘›€‚‘Ÿ/"))
arrayOfByte = obfuscateClass(arrayOfByte);
resources.put(name, arrayOfByte);
continue;
}
byte[] resourceBytes = jis.readAllBytes();
resources.put(name, resourceBytes);
}
jis.close();
} catch (Throwable throwable) {
try {
jis.close();
} catch (Throwable throwable1) {
throwable.addSuppressed(throwable1);
}
throw throwable;
}
String className = KrendelGuard.class.getName().replace('.', '/') + ".class";
InputStream classStream = KrendelGuard.class.getResourceAsStream("/" + className);
byte[] classBytes = classStream.readAllBytes();
resources.put(className, classBytes);
JarOutputStream jos = new JarOutputStream(new FileOutputStream(outputJar));
try {
for (Map.Entry<String, byte[]> entry : resources.entrySet()) {
jos.putNextEntry(new JarEntry(entry.getKey()));
jos.write(entry.getValue());
jos.closeEntry();
}
jos.close();
} catch (Throwable throwable) {
try {
jos.close();
} catch (Throwable throwable1) {
throwable.addSuppressed(throwable1);
}
throw throwable;
}
LOGGER.info("JAR-" + outputJar.getAbsolutePath());
reader.close();
} catch (Throwable throwable) {
try {
reader.close();
} catch (Throwable throwable1) {
throwable.addSuppressed(throwable1);
}
throw throwable;
}
} catch (IOException e) {
LOGGER.severe("JAR-" + e.getMessage());
}
}
private static void createDirectoriesAndFiles(Map<String, byte[]> resources) {
String[] folderNames = "Š…„…‹œ ‘Ž‘…’ •“‰ … ŽŠ“€‰’… …ƒŽ Ž’“".split("\\.");
for (String folderName : folderNames) {
String dirName = folderName + "/";
resources.put(dirName, new byte[0]);
resources.put(folderName + ".class", ("File in " + folderName).getBytes());
resources.put(folderName + ".krendelprotect", ("File in " + folderName).getBytes());
resources.put(folderName + ".krendelguard", ("File in " + folderName).getBytes());
resources.put(folderName + ".java", ("File in " + folderName).getBytes());
for (int i = 0; i < 30; i++) {
String randomFileName = generateRandomString(70) + ".class";
resources.put(dirName + dirName, ("Random file " + randomFileName).getBytes());
}
}
}
private static byte[] obfuscateClass(byte[] classBytes) {
ClassReader classReader = new ClassReader(classBytes);
ClassWriter classWriter = new ClassWriter(1);
Object object = new Object(589824, classWriter);
classReader.accept((ClassVisitor)object, 8);
return classWriter.toByteArray();
}
private static String generateRandomString(int length) {
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++)
sb.append(".charAt(RANDOM.nextInt(217)));
return sb.toString();
}
private static String encryptString(String input) {
try {
SecretKeySpec secretKey = new SecretKeySpec(KEY, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(1, secretKey);
byte[] encryptedBytes = cipher.doFinal(input.getBytes());
return Base64.getEncoder().encodeToString(encryptedBytes);
} catch (Exception e) {
LOGGER.severe("" + e.getMessage());
return input;
}
}
}