-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Пажалуста тока не бейте, просто бывший друг скинул свою обф "защитой" и я снял..
Java:
import org.objectweb.asm.*;
import org.objectweb.asm.commons.RemappingClassAdapter;
import org.objectweb.asm.commons.SimpleRemapper;
import org.objectweb.asm.commons.Remapper;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class Obfuscator {
private static final Random random = new Random();
private static final Map<String, String> nameMappings = new HashMap<>();
public static void main(String[] args) throws IOException {
String inputClass = "YourClass.class";
String outputClass = "ObfuscatedClass.class";
try (FileInputStream fis = new FileInputStream(inputClass);
FileOutputStream fos = new FileOutputStream(outputClass)) {
ClassReader reader = new ClassReader(fis);
ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS);
ClassVisitor visitor = new ObfuscatingClassVisitor(writer);
reader.accept(visitor, ClassReader.SKIP_DEBUG);
fos.write(writer.toByteArray());
}
}
static class ObfuscatingClassVisitor extends ClassVisitor {
public ObfuscatingClassVisitor(ClassVisitor cv) {
super(Opcodes.ASM9, cv);
}
[USER=1367676]@override[/USER]
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
String newName = obfuscateName(name);
nameMappings.put(name, newName);
super.visit(version, access, newName, signature, superName, interfaces);
}
[USER=1367676]@override[/USER]
public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) {
String newName = obfuscateName(name);
nameMappings.put(name, newName);
return super.visitMethod(access, newName, descriptor, signature, exceptions);
}
[USER=1367676]@override[/USER]
public FieldVisitor visitField(int access, String name, String descriptor, String signature, Object value) {
String newName = obfuscateName(name);
nameMappings.put(name, newName);
return super.visitField(access, newName, descriptor, signature, value);
}
private String obfuscateName(String name) {
return nameMappings.computeIfAbsent(name, k -> "obf_" + random.nextInt(10000));
}
}
}