-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
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.
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.
ORIGINAL CODE:
CODE FOR MAKE XRAY (this function remove other block renderer with return render to 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):
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: https://docs.oracle.com/javase/8/doc...edefineClasses
I'm not going to give more information so that it's not too simple for you.
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.
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())))));
}
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;
}
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
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: https://docs.oracle.com/javase/8/doc...edefineClasses
I'm not going to give more information so that it's not too simple for you.