Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Деобфускация и последующая декомпиляция модов

Забей на попытки компиляции при помощи MCP. Включи Eclipse, укажи как рабочую папку mcp/eclipse, в результате в mcp/eclipse/Minecraft/bin получишь классы, если всё ОК. После запакуй нужные классы в архив и реобфусцируй BONом (reobfuscate to srg)
Так все и сделал, мод вылетает, увы.
Твой bukkit until выдает зависимость, которую так и не нашел, пробовал с другим - вылетает.
Буду пробовать еще в общем.
 
Так все и сделал, мод вылетает, увы.
Твой bukkit until выдает зависимость, которую так и не нашел, пробовал с другим - вылетает.
Буду пробовать еще в общем.
Хм, что-то у вас действительно не так. А можно полный лог залить ?
 
Попробовал скомпилировать Mo'Creatures. Ошибки:
Код:
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\MoCEntityFXStar.java:61: error: '(' or '[' expected
      ResourceLocation var10001 = new ResourceLocation;
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\MoCEntityFXStar.java:64: error: <identifier> expected
      var10001.<init>("mocreatures", var10004.append(MoCProxy.MISC_TEXTURE).append("fxstar.png").toString());
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\MoCEntityFXUndead.java:59: error: '(' or '[' expected
      ResourceLocation var10001 = new ResourceLocation;
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\MoCEntityFXUndead.java:62: error: <identifier> expected
      var10001.<init>("mocreatures", var10004.append(MoCProxy.MISC_TEXTURE).append(this.getCurrentTexture()).toString());
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\MoCEntityFXVanish.java:72: error: '(' or '[' expected
      ResourceLocation var10001 = new ResourceLocation;
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\MoCEntityFXVanish.java:75: error: <identifier> expected
      var10001.<init>("mocreatures", var10004.append(MoCProxy.MISC_TEXTURE).append("fxvanish.png").toString());
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\gui\helpers\MoCGUIEntityNamer.java:107: error: '(' or '[' expected
      ResourceLocation var10000 = new ResourceLocation;
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\gui\helpers\MoCGUIEntityNamer.java:110: error: <identifier> expected
      var10000.<init>("mocreatures", var10003.append(MoCProxy.GUI_TEXTURE).append("mocname.png").toString());
8 errors
D:\SERVER MineCraft\Исходники модов\MOC\MocIde\nbproject\build-impl.xml:920: The following error occurred while executing this line:
D:\SERVER MineCraft\Исходники модов\MOC\MocIde\nbproject\build-impl.xml:260: Compile failed; see the compiler error output for details.
СБОРКА ЗАВЕРШЕНА СО СБОЕМ (общее время: 1 секунда)
 
Последнее редактирование:
Попробовал скомпилировать Mo'Creatures. Ошибки:
Код:
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\MoCEntityFXStar.java:61: error: '(' or '[' expected
      ResourceLocation var10001 = new ResourceLocation;
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\MoCEntityFXStar.java:64: error: <identifier> expected
      var10001.<init>("mocreatures", var10004.append(MoCProxy.MISC_TEXTURE).append("fxstar.png").toString());
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\MoCEntityFXUndead.java:59: error: '(' or '[' expected
      ResourceLocation var10001 = new ResourceLocation;
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\MoCEntityFXUndead.java:62: error: <identifier> expected
      var10001.<init>("mocreatures", var10004.append(MoCProxy.MISC_TEXTURE).append(this.getCurrentTexture()).toString());
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\MoCEntityFXVanish.java:72: error: '(' or '[' expected
      ResourceLocation var10001 = new ResourceLocation;
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\MoCEntityFXVanish.java:75: error: <identifier> expected
      var10001.<init>("mocreatures", var10004.append(MoCProxy.MISC_TEXTURE).append("fxvanish.png").toString());
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\gui\helpers\MoCGUIEntityNamer.java:107: error: '(' or '[' expected
      ResourceLocation var10000 = new ResourceLocation;
D:\SERVER MineCraft\Исходники модов\MOC\MoCreatures_Translate\drzhark\mocreatures\client\gui\helpers\MoCGUIEntityNamer.java:110: error: <identifier> expected
      var10000.<init>("mocreatures", var10003.append(MoCProxy.GUI_TEXTURE).append("mocname.png").toString());
8 errors
D:\SERVER MineCraft\Исходники модов\MOC\MocIde\nbproject\build-impl.xml:920: The following error occurred while executing this line:
D:\SERVER MineCraft\Исходники модов\MOC\MocIde\nbproject\build-impl.xml:260: Compile failed; see the compiler error output for details.
СБОРКА ЗАВЕРШЕНА СО СБОЕМ (общее время: 1 секунда)

Декомпильнулся криво видимо, нужно руками код поправить.
 
DJ Java Decompiler - долго искал прогу которая декомпилирует отдельные class файлы которые тебе нужно подкорректировать и компилирует обратно.

Надеюсь кому ни будь помог так же как это помогло мне ;)
 
DJ Java Decompiler - долго искал прогу которая декомпилирует отдельные class файлы которые тебе нужно подкорректировать и компилирует обратно.

Надеюсь кому ни будь помог так же как это помогло мне ;)
А Jd-gui для слабаков?
 
А Jd-gui для слабаков?
Если нужно корректировать всю яву то пожалуйста но мне к примеру нужно было подредактировать отдельную часть и учитывая что я лентяй и не хочу разбирать весь jar ник меня она устраивает более чем )
 
Я тут сделал небольшой набор для декомпиляции (деобфускация в комплекте) "в один клик". Если кому нужно, то вот: нажми меня.
Объём в распакованном состоянии: 80,0 МБ (83 937 833 байт)
Объём в упакованном состоянии: 9,48 МБ (9 950 982 байт)
MD5 хеш: DD8FD71673C5B12C2A4ECDA5A852C132
Инструкция простая:
  1. Закидываем наш мод в папку 'class'.
  2. Запускаем файл 'Reverse_<версия Minecraft, для которой предназначен мод>.bat'.
  3. Ждём завершения процесса.
  4. Получаем исходники в папке 'src'.
Скрипты есть для следующих версий Minecraft:
  • 1.4.7
  • 1.5.2
  • 1.6.2
  • 1.6.4
  • 1.7.2
P.S. В Batch смыслю совсем чуть-чуть, так что в консоли будет выводиться море всякого хлама.
P.P.S. Одновременно декомпилировать можно только 1 мод.
 
Я тут сделал небольшой набор для декомпиляции (деобфускация в комплекте) "в один клик". Если кому нужно, то вот: нажми меня.
Объём в распакованном состоянии: 80,0 МБ (83 937 833 байт)
Объём в упакованном состоянии: 9,48 МБ (9 950 982 байт)
MD5 хеш: DD8FD71673C5B12C2A4ECDA5A852C132
Инструкция простая:
  1. Закидываем наш мод в папку 'class'.
  2. Запускаем файл 'Reverse_<версия Minecraft, для которой предназначен мод>.bat'.
  3. Ждём завершения процесса.
  4. Получаем исходники в папке 'src'.
Скрипты есть для следующих версий Minecraft:
  • 1.4.7
  • 1.5.2
  • 1.6.2
  • 1.6.4
  • 1.7.2
P.S. В Batch смыслю совсем чуть-чуть, так что в консоли будет выводиться море всякого хлама.
P.P.S. Одновременно декомпилировать можно только 1 мод.
Эт ты как в 9 раз ужал?
 
Я то в курсе, но оно у меня ужимается только в 6 раз :\
Ну не знаю, я просто всё выделил, нажал ПКМ, а там уже выбрал: '7-Zip > Добавить к архиву "ReverseKit.7z"'. Использую версию 9.32 alpha [64-bit].
 
А что делать, если при деобфускации выводятся сообщения
method exists in csv but not in srg: func_110554_a (CSV name: getImageUrl)
Посмотрел по содержимому файлов, так и есть. Пробовал разные версии Форж - таких название нигде не нашел.
Соответственно, при декомпиляции в исходном коде много этих func, и эклипс пишет ошибки.
И как вообще можно узнать, в какой именно версии обфусцировался мод?
 
АПельсин.
Советую использовать не BON от immibis, а его форк от skyboy. Последний поддерживает SRG Mappings от Forge 1.7.2 10.12.0.1048 и более новых версий, дополнен различными фиксами и т.д.
Последний релиз BON от skyboy можно скачать тут.
 
Решил я попробовать подключить "industrialcraft-2-dev-deobf..." как библиотеку, а нужные классы декомпильнул и вставлять в проект, сохраняя их пути.
Попробовал изменить EU-Reader, т.к. он все равно не работает. Вычистил лишний код, теперь игроку выводится оповещение, мол, не фурычит эта штука.
Код:
public class ItemToolMeter extends ItemIC2 implements IBoxable {

  public ItemToolMeter(Configuration config, InternalName internalName) {
      super(config, internalName);
      super.maxStackSize = 1;
      this.setMaxDamage(0);
  }

  public boolean onItemUseFirst(ItemStack itemstack, EntityPlayer entityplayer, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
      if(!world.isRemote) {
          EntityPlayer player = (EntityPlayer) entityplayer;
          player.addChatMessage(I18n.getString("message.bug.MEtr"));
      }
      return false;
  }

  public boolean canBeStoredInToolbox(ItemStack itemstack) {
      return true;
  }
}
В эклипсе все работает, компилирую, сую измененные классы в jar'ник и почти всегда поучаю ошибки, аля:
java.lang.NoSuchFieldError: blockID, в случае с EU-Reader'ом: maxStackSize.

В чем проблема?
Мб стоит для компиляции использовать обычный жарник ic?
 
Решил я попробовать подключить "industrialcraft-2-dev-deobf..." как библиотеку, а нужные классы декомпильнул и вставлять в проект, сохраняя их пути.
Попробовал изменить EU-Reader, т.к. он все равно не работает. Вычистил лишний код, теперь игроку выводится оповещение, мол, не фурычит эта штука.
Код:
public class ItemToolMeter extends ItemIC2 implements IBoxable {

  public ItemToolMeter(Configuration config, InternalName internalName) {
      super(config, internalName);
      super.maxStackSize = 1;
      this.setMaxDamage(0);
  }

  public boolean onItemUseFirst(ItemStack itemstack, EntityPlayer entityplayer, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
      if(!world.isRemote) {
          EntityPlayer player = (EntityPlayer) entityplayer;
          player.addChatMessage(I18n.getString("message.bug.MEtr"));
      }
      return false;
  }

  public boolean canBeStoredInToolbox(ItemStack itemstack) {
      return true;
  }
}
В эклипсе все работает, компилирую, сую измененные классы в jar'ник и почти всегда поучаю ошибки, аля:
java.lang.NoSuchFieldError: blockID, в случае с EU-Reader'ом: maxStackSize.

В чем проблема?
Мб стоит для компиляции использовать обычный жарник ic?
А вы реобфускацию делали?
 
Последнее редактирование:
Решил я попробовать подключить "industrialcraft-2-dev-deobf..." как библиотеку, а нужные классы декомпильнул и вставлять в проект, сохраняя их пути.
Попробовал изменить EU-Reader, т.к. он все равно не работает. Вычистил лишний код, теперь игроку выводится оповещение, мол, не фурычит эта штука.
Код:
public class ItemToolMeter extends ItemIC2 implements IBoxable {

  public ItemToolMeter(Configuration config, InternalName internalName) {
      super(config, internalName);
      super.maxStackSize = 1;
      this.setMaxDamage(0);
  }

  public boolean onItemUseFirst(ItemStack itemstack, EntityPlayer entityplayer, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
      if(!world.isRemote) {
          EntityPlayer player = (EntityPlayer) entityplayer;
          player.addChatMessage(I18n.getString("message.bug.MEtr"));
      }
      return false;
  }

  public boolean canBeStoredInToolbox(ItemStack itemstack) {
      return true;
  }
}
В эклипсе все работает, компилирую, сую измененные классы в jar'ник и почти всегда поучаю ошибки, аля:
java.lang.NoSuchFieldError: blockID, в случае с EU-Reader'ом: maxStackSize.

В чем проблема?
Мб стоит для компиляции использовать обычный жарник ic?

Скомпиленные классы берите из папки /bin вашего Eclipse, после реобфусцируйте их BON'ом. MCP очень кривой.
 

Поделиться этой страницей

Назад
Верх