Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Sirse, 22 сен 2013.

  1. Linkinkov

    Linkinkov Старожил Пользователь

    Баллы:
    173
    Skype:
    linkinkov1
    Имя в Minecraft:
    linkinkov
    Так все и сделал, мод вылетает, увы.
    Твой bukkit until выдает зависимость, которую так и не нашел, пробовал с другим - вылетает.
    Буду пробовать еще в общем.
     
  2. Хостинг MineCraft
    <
  3. BleaZzZ

    BleaZzZ Старожил Пользователь

    Баллы:
    153
    Хм, что-то у вас действительно не так. А можно полный лог залить ?
     
  4. azat4610

    azat4610 Старожил Пользователь

    Баллы:
    173
    Попробовал скомпилировать 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 секунда)
    
     
    Последнее редактирование: 8 мар 2014
  5. Автор темы
    Sirse

    Sirse Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    Декомпильнулся криво видимо, нужно руками код поправить.
     
  6. azat4610

    azat4610 Старожил Пользователь

    Баллы:
    173
    Sirse, Ошибок очень много. Примерно в 30 файлах.
     
  7. Foxgreat

    Foxgreat Активный участник Пользователь

    Баллы:
    63
    Имя в Minecraft:
    Foxgreat
    DJ Java Decompiler - долго искал прогу которая декомпилирует отдельные class файлы которые тебе нужно подкорректировать и компилирует обратно.

    Надеюсь кому ни будь помог так же как это помогло мне ;)
     
    azat4610 нравится это.
  8. BleaZzZ

    BleaZzZ Старожил Пользователь

    Баллы:
    153
    А Jd-gui для слабаков?
     
  9. Foxgreat

    Foxgreat Активный участник Пользователь

    Баллы:
    63
    Имя в Minecraft:
    Foxgreat
    Если нужно корректировать всю яву то пожалуйста но мне к примеру нужно было подредактировать отдельную часть и учитывая что я лентяй и не хочу разбирать весь jar ник меня она устраивает более чем )
     
  10. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Я тут сделал небольшой набор для декомпиляции (деобфускация в комплекте) "в один клик". Если кому нужно, то вот: нажми меня.
    Объём в распакованном состоянии: 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 мод.
     
    Explorer_1991, BeYkeR, TicTacKitKat и ещё 1-му нравится это.
  11. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Эт ты как в 9 раз ужал?
     
  12. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Просто применил 7-Zip. Великолепная штуковина. WinRar так не умеет :)
     
  13. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Я то в курсе, но оно у меня ужимается только в 6 раз :\
     
  14. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Ну не знаю, я просто всё выделил, нажал ПКМ, а там уже выбрал: '7-Zip > Добавить к архиву "ReverseKit.7z"'. Использую версию 9.32 alpha [64-bit].
     
  15. komiss

    komiss Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    komiss77
    А что делать, если при деобфускации выводятся сообщения
    method exists in csv but not in srg: func_110554_a (CSV name: getImageUrl)
    Посмотрел по содержимому файлов, так и есть. Пробовал разные версии Форж - таких название нигде не нашел.
    Соответственно, при декомпиляции в исходном коде много этих func, и эклипс пишет ошибки.
    И как вообще можно узнать, в какой именно версии обфусцировался мод?
     
  16. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    АПельсин.
    Советую использовать не BON от immibis, а его форк от skyboy. Последний поддерживает SRG Mappings от Forge 1.7.2 10.12.0.1048 и более новых версий, дополнен различными фиксами и т.д.
    Последний релиз BON от skyboy можно скачать тут.
     
  17. Автор темы
    Sirse

    Sirse Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    Добавил в шапку.
     
    Лайка3, Mr_RoboMan, Кувырок и 3 другим нравится это.
  18. sashabelii

    sashabelii Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Решил я попробовать подключить "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?
     
    Penek28123123, Лайка3, Mr_RoboMan и 4 другим нравится это.
  19. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    А вы реобфускацию делали?
     
    Penek28123123, Лайка3, Mr_RoboMan и 4 другим нравится это.
  20. sashabelii

    sashabelii Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Ну а как же я без неё мог получить класс-файлы? :)
    recompile.bat, затем reobfuscate.bat.
     
    Последнее редактирование: 8 июн 2014
  21. Автор темы
    Sirse

    Sirse Старожил Пользователь

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

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