Гайд Make xray for all servers with custom mapping [BYTECODE]

Начинающий
Статус
Оффлайн
Регистрация
14 Апр 2021
Сообщения
146
Реакции[?]
14
Поинты[?]
2K
Hey, today I'm going to show you the technique I've been using for 1 year now to create an xray by directly editing the bytecode. I have already seen 2/3 years ago this technique used by a French cheat so I decided to learn how to make an xray with this method.
1668804126596.png
TUTORIAL
For made xray with bytecode you need:
- FOUND Block.blass
- FOUND GetBlockById in Block.class
- FOUND shouldSideBeRendered function in Block.class
- Bypass for redefineclass if not possible run launcher with argument
- a brain

- Work for all versions, 1.6.4/1.7.10/1.12.2 and mores...

Function for make xray:
ShouldSideBeRendered

Its server use launcher using custom mappings its more hard for found this function.
Example have make xray for this launcher, not easy for found mapping because use hard obfuscation:

For found all necessary mapping if your launcher use custom mapping need compare original minecraft code with your obfuscate .class and if possible try deobfuscate STRING for just search STONE string for found Block.class

EXAMPLE:
This (function boolean) its shouldSideRender function for 1.12.2 servers using custom mapping, have found with STONE STRING.
1668804160254.png
1668804168036.png
ORIGINAL CODE:
Java:
public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_)
    {
            return p_149646_5_ == 0 && this.field_149760_C > 0.0D ? true : (p_149646_5_ == 1 && this.field_149756_F < 1.0D ? true : (p_149646_5_ == 2 && this.field_149754_D > 0.0D ? true : (p_149646_5_ == 3 && this.field_149757_G < 1.0D ? true : (p_149646_5_ == 4 && this.field_149759_B > 0.0D ? true : (p_149646_5_ == 5 && this.field_149755_E < 1.0D ? true : !p_149646_1_.getBlock(p_149646_2_, p_149646_3_, p_149646_4_).isOpaqueCube())))));
    }
CODE FOR MAKE XRAY (this function remove other block renderer with return render to FALSE):
Java:
public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_)
    {
            if(this == Block.getBlockById(912) || this == Block.getBlockById(56) || this == Block.getBlockById(123) || this == Block.getBlockById(129) || this == Block.getBlockById(14)) {
                this.setLightLevel(5F);
                return true;
            }
            return false;
    }
GetBlockById(ID) = for get ID what you want to see on xray.
Example: Diamond (56) -> Block.getBlockById(56) -> DIAMOND VISIBLE IN XRAY


After have make this code, juste have compile for get the bytecode of the function.

BYTECODE -> with xray code made before (example):

Java:
DEFINE PUBLIC a(Lnet/minecraft/rx; 1, I 2, I 3, I 4, I 5)Z
A:
LINE A 575
ALOAD this
ICONST_1
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
ICONST_2
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
ICONST_3
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
BIPUSH 24
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
BIPUSH 12
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
BIPUSH 13
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
BIPUSH 15
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
BIPUSH 73
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
BIPUSH 13
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPNE C
B:
LINE B 576
ICONST_0
IRETURN
C:
LINE C 578
ICONST_1
IRETURN
Just need change all INVOKESTATIC line for replace for other launchers/servers.

AFTER you have edit your Block.class for new Block.class with xray code.
Save. Directly replace .class in .jar (open with winrar).
Before this need run your launcher, and copy/paste argument for run JVM
without file verification. So now possible take your minecraft.jar with block.class xray, run with argument in command prompt.
HAVE FUN !

Unfortunately now most launchers won't let you run with arguments anymore, so need write bypass using replaceclass, redefineclass (just need hook original class, for after for load your custom block.class.
More informations for use redefineclass:
Пожалуйста, авторизуйтесь для просмотра ссылки.



I'm not going to give more information so that it's not too simple for you.
 
Начинающий
Статус
Оффлайн
Регистрация
28 Июл 2021
Сообщения
300
Реакции[?]
16
Поинты[?]
0
Hey, today I'm going to show you the technique I've been using for 1 year now to create an xray by directly editing the bytecode. I have already seen 2/3 years ago this technique used by a French cheat so I decided to learn how to make an xray with this method.
Посмотреть вложение 228449
TUTORIAL
For made xray with bytecode you need:
- FOUND Block.blass
- FOUND GetBlockById in Block.class
- FOUND shouldSideBeRendered function in Block.class
- Bypass for redefineclass if not possible run launcher with argument
- a brain

- Work for all versions, 1.6.4/1.7.10/1.12.2 and mores...

Function for make xray:
ShouldSideBeRendered

Its server use launcher using custom mappings its more hard for found this function.
Example have make xray for this launcher, not easy for found mapping because use hard obfuscation:

For found all necessary mapping if your launcher use custom mapping need compare original minecraft code with your obfuscate .class and if possible try deobfuscate STRING for just search STONE string for found Block.class

EXAMPLE:
This (function boolean) its shouldSideRender function for 1.12.2 servers using custom mapping, have found with STONE STRING.
Посмотреть вложение 228450
Посмотреть вложение 228452
ORIGINAL CODE:
Java:
public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_)
    {
            return p_149646_5_ == 0 && this.field_149760_C > 0.0D ? true : (p_149646_5_ == 1 && this.field_149756_F < 1.0D ? true : (p_149646_5_ == 2 && this.field_149754_D > 0.0D ? true : (p_149646_5_ == 3 && this.field_149757_G < 1.0D ? true : (p_149646_5_ == 4 && this.field_149759_B > 0.0D ? true : (p_149646_5_ == 5 && this.field_149755_E < 1.0D ? true : !p_149646_1_.getBlock(p_149646_2_, p_149646_3_, p_149646_4_).isOpaqueCube())))));
    }
CODE FOR MAKE XRAY (this function remove other block renderer with return render to FALSE):
Java:
public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_)
    {
            if(this == Block.getBlockById(912) || this == Block.getBlockById(56) || this == Block.getBlockById(123) || this == Block.getBlockById(129) || this == Block.getBlockById(14)) {
                this.setLightLevel(5F);
                return true;
            }
            return false;
    }
GetBlockById(ID) = for get ID what you want to see on xray.
Example: Diamond (56) -> Block.getBlockById(56) -> DIAMOND VISIBLE IN XRAY


After have make this code, juste have compile for get the bytecode of the function.

BYTECODE -> with xray code made before (example):

Java:
DEFINE PUBLIC a(Lnet/minecraft/rx; 1, I 2, I 3, I 4, I 5)Z
A:
LINE A 575
ALOAD this
ICONST_1
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
ICONST_2
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
ICONST_3
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
BIPUSH 24
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
BIPUSH 12
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
BIPUSH 13
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
BIPUSH 15
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
BIPUSH 73
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPEQ B
ALOAD this
BIPUSH 13
INVOKESTATIC net/minecraft/ac.a(I)Lnet/minecraft/ac; //Block.GetBlockById
IF_ACMPNE C
B:
LINE B 576
ICONST_0
IRETURN
C:
LINE C 578
ICONST_1
IRETURN
Just need change all INVOKESTATIC line for replace for other launchers/servers.

AFTER you have edit your Block.class for new Block.class with xray code.
Save. Directly replace .class in .jar (open with winrar).
Before this need run your launcher, and copy/paste argument for run JVM
without file verification. So now possible take your minecraft.jar with block.class xray, run with argument in command prompt.
HAVE FUN !

Unfortunately now most launchers won't let you run with arguments anymore, so need write bypass using replaceclass, redefineclass (just need hook original class, for after for load your custom block.class.
More informations for use redefineclass:
Пожалуйста, авторизуйтесь для просмотра ссылки.



I'm not going to give more information so that it's not too simple for you.
гуд
 
Начинающий
Статус
Оффлайн
Регистрация
10 Фев 2021
Сообщения
14
Реакции[?]
7
Поинты[?]
0
английский на уровне конечно =DDDD
 
Начинающий
Статус
Оффлайн
Регистрация
23 Авг 2022
Сообщения
53
Реакции[?]
1
Поинты[?]
0
Что бы это юзать на лаунчерах по типу вармайна зоникса и т.д нужен обход , а по сути херня. Зач делать изменение майна если есть куча альтернатив по типу тех же xray модов.
 
Начинающий
Статус
Оффлайн
Регистрация
14 Апр 2021
Сообщения
146
Реакции[?]
14
Поинты[?]
2K
Что бы это юзать на лаунчерах по типу вармайна зоникса и т.д нужен обход , а по сути херня. Зач делать изменение майна если есть куча альтернатив по типу тех же xray модов.
because you just need redefineclass, and just need block and getblockname mappings, not other.
 
Начинающий
Статус
Оффлайн
Регистрация
30 Авг 2022
Сообщения
107
Реакции[?]
4
Поинты[?]
1K
Сверху Снизу