Гайд Пишем свой первый хак на майнкрафт проекты.

Начинающий
Статус
Оффлайн
Регистрация
13 Авг 2019
Сообщения
51
Реакции[?]
18
Поинты[?]
0
Итак,всем привет.Некоторые очень хотят написать хакес на майнкрафт(с модами тем более),но на ру просторах про это нет не слова.Что ж,вы нашли то что нужно.В первом треде мы напишем мод который можно будет поставить на проекты с модами(ебать умно однако),но и это не всё.
Советую не листать иначе вы нихуя не поймете.
Начнем с самого первого вопроса:
На чём будем писать то ебана? - Eclipse IDEA
На какую версию? - 1.7.10(самая оптимальная для модов.не вижу смысла суваться дальше)
Мы обойдем анти чит? - Да.В следуйщем треде(если он будет) обойдем kinetic говно анти чит который сделан для бомже проектов.
Какие функции будут в нашем говне? - WH,KillAura,Fly,Step.
Ладно,приступим.

Step 1: 1-3 хуйня
Качаем JDK.
Step 2:
Качаем ремапнутые сорцы майна(
Пожалуйста, авторизуйтесь для просмотра ссылки.
1.7.10)
Step 3:
Делаем среду разработки.
*Про сетап IDE можно найти всё тут
Step 4: Делаем мейн класс
*Небольшое отступление*
Я вам разжую всё по максимуму.Если и после этого у вас будут вопросы,то лучше не пишите читы пока что..

Итак у нас есть IDE и полностью декомпилированный Minecraft.
И что теперь нам делать с этой информацией?
Заходим в Eclipse и делаем Package(обычно ваш регион(ru).ваш ник(sharlize).Ваш чит(simplecheat).*В java принято имя package писать исключительно в нижнем регистре.у вас не полетят ерроры если будет апперкейс,но всё же лучше не выебыватся*
Создаем класс Main *В java классы называются с апперкейс буквы*
Итак,у нас есть главный класс.Что с ним можно сделать?
Ну например мы хотим зарегестрировать наш хак(я не написал Event класс ибо вы бы нихуя не поняли)
Мы свапаем строку после пакета и пишем
Java:
package ru.sharlize.simplecheat;

import cpw.mods.fml.common.Mod;

@Mod(modid = "SimpleCheat", name = "SC", version = "1.0.0")
public class MainC {

}
Что ж,мы сделали наш Mod и теперь Forge видит наш хак.Что дальше то блять?мы делаем *абстрактный главный класс функции от которого в скоре будет наследованы наши другие функции.
*нахуя мне это надо?*
Я не буду затирать про ооп,просто хочу сказать что это будет очень удобно в итоговой реализации.
Итак,вот "структура" нашего чита:

Java:
package ru.sharlize.simplecheat;

public abstract class SimpleFunc {
    public SimpleFunc(String name, int keybind)
    {
        this.name = name;
        this.keybind = keybind;
    }
    private boolean active;
    private String name;
    private int keybind;
    public String getName()
    {
        return name;
    }
    public int getKeyBind()
    {
        return keybind;
    }
    public boolean getActive()
    {
        return active;
    }
    public void setToggle()
    {
        if(active)
        {
            onDisable();
        } else {
            onEnable();
        }
        this.active = !active;
    }
    public void setStatus(boolean value)
    {
        this.active = value;
    }
    public void setKeyBind(int keybind)
    {
        this.keybind = keybind;
    }
    /*on Event*/
    public void onTick() {}
    public void onPreRender() {}
    public void onPostRender() {}
    public void onDisable() {}
    public void onEnable() {}
}
Что же это значит?Пробежимся с самого начала.Если вы не знаете Java хоть чуть чуть(конструктор класса хотя бы),то закрывайте тред и идите учить жабу.Это очень легко и полезно.
В конструкторе класса мы указали типы "String" и "int".Значит у класса наследника(? extends SimpleFunc) должен быть такой же конструктор с такими же параметрами.
В качестве параметра String идет название функции,а int -*Отступление почему int идет как кнопка бинда
В Java есть класс KeyBoard в котором все "кнопки" идут типом int.*
KeyBind нашей функции.
Теперь когда у нас есть Simple функция можно сделать ArrayList(лист с классами функций).
Делаем вот такой вот "код"
public static ArrayList<SimpleFunc> func = new ArrayList<SimpleFunc>();
и пихаем его в главный класс.
Теперь можно вызывать ВСЕ наши функции которые добавлены в лист "func".
Зачем это нам?
Допустим мы хотим вызывать в TickEvent(в тик майна) все наши функции.
Делаем класс с эвентами + проверку на нажатие кнопки *active | noactive.
Код:
package ru.sharlize.simplecheat;

import org.lwjgl.input.Keyboard;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
import net.minecraft.client.Minecraft;

public class SimpleEvent {
    @SubscribeEvent
    public void onTick(TickEvent.ClientTickEvent event)
    {
        if(Minecraft.getMinecraft().thePlayer == null)
        {
            return;
        }
        for(SimpleFunc sf : MainC.func)
        {
            if(sf.getActive())
            {
                sf.onTick();
            }
            if(isKeyBindDown(sf.getKeyBind()))
            {
                if(Minecraft.getMinecraft().currentScreen != null)
                {
                    return;
                }
                sf.setToggle();
                break;
            }
        }
    }
    public boolean isKeyBindDown(int key) {
        if (Keyboard.isKeyDown(key) != keyStates[key])
        {
            return keyStates[key] = !keyStates[key];
        } else {
            return false;
        }
    }

    private boolean keyStates[] = new boolean[256];
    @SubscribeEvent
    public void onPost(RenderPlayerEvent.Post event)
    {
        for(SimpleFunc sf : MainC.func)
        {
            if(sf.getActive())
            {
                sf.onPostRender();
            }
        }
    }
    @SubscribeEvent
    public void onPost(RenderPlayerEvent.Pre event)
    {
        for(SimpleFunc sf : MainC.func)
        {
            if(sf.getActive())
            {
                sf.onPreRender();
            }
        }
    }
}
Можете поразбирать код,всё должно быть максимально понятным.
Ну ладно,перейдем к самому сладкому,к функциям.
Первым думаю сделать Step как самое легкое.
Создаем класс *функцию*

Код:
package ru.sharlize.simplecheat;

import org.lwjgl.input.Keyboard;

import net.minecraft.client.Minecraft;

public class Step extends SimpleFunc {
    public Step()
    {
        super("Step", Keyboard.KEY_I);
    }
}
Оверрайдим метод из супер класса("перехватываем" метод из класса SimpleFunc)
И слушаем внимательно.
Так как нам нужно заменить параметр stepHeight в игроке это нам нужно вызвать всего лишь 1 раз.
@Override
public void onEnable()
{
Minecraft.getMinecraft().thePlayer.stepHeight = 150;
}
@Override
public void onDisable()
{
Minecraft.getMinecraft().thePlayer.stepHeight = 1;
}
*Опять же отступление*
Вообще в майнкрафте очень много чего можно разрыть если интересно.
Для получения всех методов и полей допустим из мира(кроме private,и то java#Reflect и на это хуй ложил) нужно написать
Minecraft.getMinecraft().theWorld
Допустим вам нужно получить всех прогруженных энтити.
Пишите Minecraft.getMinecraft().theWorld.loadedEntityList и все прогруженные энтити у вас в ваших руках в формате пнг(List).
Ладно,вот наша первая функция и готова.
Теперь перейдем к флаю.У флая в майнкрафте очень много реализаций,но я покажу две.
Самая легкая:
Код:
package ru.sharlize.simplecheat;
import org.lwjgl.input.Keyboard;
import net.minecraft.client.Minecraft;
public class Fly extends SimpleFunc {
    public Fly()
    {
        super("Fly", Keyboard.KEY_K);
    }
    @Override
    public void onEnable()
    {
        Minecraft.getMinecraft().thePlayer.capabilities.allowFlying = true;
    }
    @Override
    public void onDisable()
    {
        Minecraft.getMinecraft().thePlayer.capabilities.allowFlying = false;
    }
}
Потруднее это когда нужно сделать обход для проекта.
Java:
    @Override
    public void onTick()
    {
        if(Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed())
        {
            Minecraft.getMinecraft().thePlayer.motionY =+ 0.05F;
        } else {
            Minecraft.getMinecraft().thePlayer.motionY =- 0.05F;
        }
        if(Minecraft.getMinecraft().gameSettings.keyBindSneak.getIsKeyPressed())
        {
            Minecraft.getMinecraft().thePlayer.motionY =- 0.1F;
        }
    }
WARNING!!!!
Заметьте,тут мы уже используем onTick,т.к motionY это параметр который будет меняться во время выполнения функции(мы будем менять).

KillAura..Ухх бля как звучит опасно,но на самом деле если не ебаться то 1 строчка кода..Смешно даже как то.
Код:
@Override

    public void onTick()

    {

        for (Iterator i = Minecraft.getMinecraft().theWorld.loadedEntityList.iterator(); i.hasNext();) {

            Object o = i.next();

            if(o instanceof EntityPlayer)

            {

                EntityPlayer ep = (EntityPlayer) o;

                if(!(ep instanceof EntityPlayerSP))

                {

                    Minecraft.getMinecraft().playerController.attackEntity(Minecraft.getMinecraft().thePlayer, ep);

                }

            }

        }

}
Ключевой строчкой,а именно методом станет attackEntity с параметром EntityPlayer(нашего плеера) и Entity(игрока которого хотим ударить).

И последняя функция - вх.
package ru.sharlize.simplecheat;

import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;

import net.minecraft.client.Minecraft;

public class WallHack extends SimpleFunc {
public WallHack()
{
super("WH", Keyboard.KEY_M);
}
@Override
public void onPostRender()
{
GL11.glDisable(32823);
GL11.glPolygonOffset(1.0F, 1100000.0F);
GL11.glEnable(2896);
}
@Override
public void onPreRender()
{
GL11.glEnable(32823);
GL11.glPolygonOffset(1.0F, -1100000.0F);
GL11.glDisable(2896);
}
}
Тут думаю просто вам нужно почитать про GL11,ибо по другому тут не объяснить.

И наконец легендарная строчка(и) кода в Main классе
Код:
@Mod.EventHandler
public void init(FMLInitializationEvent event)
{
        MinecraftForge.EVENT_BUS.register(new SimpleEvent());
        FMLCommonHandler.instance().bus().register(new SimpleEvent());
        addFunc();
}
public void addFunc()
{
    func.add(new Fly());
    func.add(new WallHack());
    func.add(new Step());
    func.add(new KillAura());
}
Скачать весь код -
Пожалуйста, авторизуйтесь для просмотра ссылки.


Credits: WendoX
Второго треда скорее всего не будет,а хотя,кто меня знает..
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
9 Июл 2019
Сообщения
97
Реакции[?]
17
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Для новичков в кодинге заебись гайд.
 
[img]gangster.cc[/img]
Забаненный
Статус
Оффлайн
Регистрация
11 Авг 2019
Сообщения
103
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
13 Авг 2019
Сообщения
51
Реакции[?]
18
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
13 Авг 2019
Сообщения
51
Реакции[?]
18
Поинты[?]
0
Смысл твоего тутора? гавн* читы которые в папке versions спалить нефиг делать, ты б лучше инжекты как kyprak делал(а)
УАхахахахах.Вот щас реально закрой тему.Чел ты читать умеешь?Я писал под MCPForge.
И вообще я с вас так ору.Челы вообще не шарят ВООБЩЕ НИ ЗА ЧТО.Для написания дллки нужно перегнать классы в байты,потом обойти античит(если вообще нужно),получить класслоадер на С++,загрузить классы в майнкрафт, в читпаке сделать простой хук эвентбаса и зарегестрировать эвенты.
 
Начинающий
Статус
Оффлайн
Регистрация
4 Авг 2019
Сообщения
62
Реакции[?]
2
Поинты[?]
0
УАхахахахах.Вот щас реально закрой тему.Чел ты читать умеешь?Я писал под MCPForge.
И вообще я с вас так ору.Челы вообще не шарят ВООБЩЕ НИ ЗА ЧТО.Для написания дллки нужно перегнать классы в байты,потом обойти античит(если вообще нужно),получить класслоадер на С++,загрузить классы в майнкрафт, в читпаке сделать простой хук эвентбаса и зарегестрировать эвенты.
Я бы вообще не отвечал человеку с таким вопросом и аватаркой.
 
Забаненный
Статус
Оффлайн
Регистрация
9 Июл 2019
Сообщения
97
Реакции[?]
17
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
100
Реакции[?]
8
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
а ну да всё я понял.... спасибо, без тебя я не знал... вы довны? тупые агро я спросил нормальным языков мне сразу" даун уйди" а не пойти ли тебе в сраку?
Пошло отсюда, глупое создание.
 
off
Участник
Статус
Оффлайн
Регистрация
7 Сен 2017
Сообщения
696
Реакции[?]
163
Поинты[?]
0
окда, неплохо. Сделал бы ты гайд как сделать Minecraft hack injectable dll, JNI, а проще чтобы ты инжектил длл в майн, и у тебя появлялся софт
 
Начинающий
Статус
Оффлайн
Регистрация
13 Авг 2019
Сообщения
51
Реакции[?]
18
Поинты[?]
0
окда, неплохо. Сделал бы ты гайд как сделать Minecraft hack injectable dll, JNI, а проще чтобы ты инжектил длл в майн, и у тебя появлялся софт
Я описал пример того как можно загружать классы в майнкрафт.Может чуть позже сделаю тред под хайд с такой хренью.
 
183, 40, 255
Участник
Статус
Оффлайн
Регистрация
19 Май 2017
Сообщения
938
Реакции[?]
243
Поинты[?]
24K
Ну да,ну да...Все обходят стороной версию 1.8.9.То делают гайди на то как сделать хак на 1.14,а теперь на 1.7.10.
:coldsideRage::coldsideRage:
 
Начинающий
Статус
Оффлайн
Регистрация
13 Авг 2019
Сообщения
51
Реакции[?]
18
Поинты[?]
0
Ну да,ну да...Все обходят стороной версию 1.8.9.То делают гайди на то как сделать хак на 1.14,а теперь на 1.7.10.
:coldsideRage::coldsideRage:
Так а в чём проблема?Всё одинаково(почти что) везде.
 
Пол Не выбрано Мужской Женский
Участник
Статус
Оффлайн
Регистрация
6 Ноя 2018
Сообщения
894
Реакции[?]
357
Поинты[?]
0
Так а в чём проблема?Всё одинаково(почти что) везде.
нихуя не одинаково, в младших версиях(1.6.4-1.5.2 и ниже) вообще разница огромная
разница хотя бы в том, что в 1.5.2 нужен mcp для компилинга
 
Начинающий
Статус
Оффлайн
Регистрация
13 Авг 2019
Сообщения
51
Реакции[?]
18
Поинты[?]
0
нихуя не одинаково, в младших версиях(1.6.4-1.5.2 и ниже) вообще разница огромная
разница хотя бы в том, что в 1.5.2 нужен mcp для компилинга
Нихуя себе.Что дальше?Я сколько делаю читы на майнкрафт(forge/nforge) разницы не чувствую.Если для тебя проблема среду поставить,то скорее всего не стоит читы писать.Может чуть маппинги сдвигаются,эвенты по другому работают,но обновить чит - 1 час,не больше.
 
Начинающий
Статус
Оффлайн
Регистрация
11 Окт 2019
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Выдаёт ошибку "
FAILURE: Build failed with an exception.



* What went wrong:

Could not determine java version from '11.0.1'.



* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output."
 
Сверху Снизу