Javap Fixes

Because of the design of using sysout it fails when being ran concurrently. Until the system has been redesigned to not use sysout (or a better solution for it is added) I've synchronized the javap disassembler

thankfully javap is fast so this shouldn't be that noticeable but it should be fixed one day
This commit is contained in:
Konloch 2021-07-13 03:35:48 -07:00
parent e9f3163e1b
commit 67e2e0dfd0
3 changed files with 41 additions and 43 deletions

View file

@ -1,28 +1,21 @@
package the.bytecode.club.bytecodeviewer.decompilers.impl; package the.bytecode.club.bytecodeviewer.decompilers.impl;
import me.konloch.kontainer.io.DiskReader;
import me.konloch.kontainer.io.DiskWriter; import me.konloch.kontainer.io.DiskWriter;
import org.objectweb.asm.tree.ClassNode; import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.util.Textifier;
import org.objectweb.asm.util.TraceClassVisitor;
import the.bytecode.club.bytecodeviewer.BytecodeViewer; import the.bytecode.club.bytecodeviewer.BytecodeViewer;
import the.bytecode.club.bytecodeviewer.Configuration; import the.bytecode.club.bytecodeviewer.Configuration;
import the.bytecode.club.bytecodeviewer.Constants; import the.bytecode.club.bytecodeviewer.Constants;
import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler; import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler;
import the.bytecode.club.bytecodeviewer.gui.components.JFrameConsolePrintStream; import the.bytecode.club.bytecodeviewer.gui.components.JFrameConsolePrintStream;
import the.bytecode.club.bytecodeviewer.gui.components.SystemConsole;
import the.bytecode.club.bytecodeviewer.resources.ExternalResources; import the.bytecode.club.bytecodeviewer.resources.ExternalResources;
import the.bytecode.club.bytecodeviewer.util.MiscUtils; import the.bytecode.club.bytecodeviewer.util.MiscUtils;
import java.io.File; import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.net.URL; import java.net.URL;
import java.net.URLClassLoader; import java.net.URLClassLoader;
import static the.bytecode.club.bytecodeviewer.Constants.fs; import static the.bytecode.club.bytecodeviewer.Constants.fs;
import static the.bytecode.club.bytecodeviewer.api.ExceptionUI.KONLOCH;
import static the.bytecode.club.bytecodeviewer.api.ExceptionUI.SEND_STACKTRACE_TO; import static the.bytecode.club.bytecodeviewer.api.ExceptionUI.SEND_STACKTRACE_TO;
/*************************************************************************** /***************************************************************************
@ -60,6 +53,11 @@ public class JavapDisassembler extends InternalDecompiler
if(!ExternalResources.getSingleton().hasJavaToolsSet()) if(!ExternalResources.getSingleton().hasJavaToolsSet())
return "Set Java Tools Path!"; return "Set Java Tools Path!";
return synchronizedDecompilation(cn, b);
}
private synchronized String synchronizedDecompilation(ClassNode cn, byte[] b)
{
final File tempDirectory = new File(Constants.tempDirectory + fs + MiscUtils.randomString(32) + fs); final File tempDirectory = new File(Constants.tempDirectory + fs + MiscUtils.randomString(32) + fs);
tempDirectory.mkdir(); tempDirectory.mkdir();
final File tempClass = new File(Constants.tempDirectory + fs + "temp" + MiscUtils.randomString(32) + ".class"); final File tempClass = new File(Constants.tempDirectory + fs + "temp" + MiscUtils.randomString(32) + ".class");

View file

@ -14,11 +14,9 @@
"RECENT_FILES": "最近的文件", "RECENT_FILES": "最近的文件",
"ABOUT": "关于", "ABOUT": "关于",
"EXIT": "退出", "EXIT": "退出",
"VIEW": "视图", "VIEW": "视图",
"VISUAL_SETTINGS": "界面设置", "VISUAL_SETTINGS": "界面设置",
"LANGUAGE": "语言", "LANGUAGE": "语言",
"WINDOW_THEME": "窗口主题", "WINDOW_THEME": "窗口主题",
"SYSTEM_THEME": "系统主题", "SYSTEM_THEME": "系统主题",
"DARK_THEME": "深色主题", "DARK_THEME": "深色主题",
@ -32,19 +30,16 @@
"VISUAL_STUDIO": "Visual Studio", "VISUAL_STUDIO": "Visual Studio",
"DRUID_DARK": "Druid (深色)", "DRUID_DARK": "Druid (深色)",
"MONOKAI_DARK": "Monokai (深色)", "MONOKAI_DARK": "Monokai (深色)",
"FONT_SIZE": "字体大小", "FONT_SIZE": "字体大小",
"SHOW_TAB_FILE_IN_TAB_TITLE": "标签页标题显示文件名", "SHOW_TAB_FILE_IN_TAB_TITLE": "标签页标题显示文件名",
"SIMPLIFY_NAME_IN_TAB_TITLE": "简化标签页标题文件名", "SIMPLIFY_NAME_IN_TAB_TITLE": "简化标签页标题文件名",
"SYNCHRONIZED_VIEWING": "同步视图", "SYNCHRONIZED_VIEWING": "同步视图",
"SHOW_CLASS_METHODS": "显示类方法", "SHOW_CLASS_METHODS": "显示类方法",
"PANE_1": "面板 1", "PANE_1": "面板 1",
"PANE_2": "面板 2", "PANE_2": "面板 2",
"PANE_3": "面板 3", "PANE_3": "面板 3",
"NONE": "无", "NONE": "无",
"EDITABLE": "可编辑", "EDITABLE": "可编辑",
"SETTINGS": "设置", "SETTINGS": "设置",
"COMPILE_ON_SAVE": "保存时编译", "COMPILE_ON_SAVE": "保存时编译",
"COMPILE_ON_REFRESH": "刷新时编译", "COMPILE_ON_REFRESH": "刷新时编译",
@ -61,7 +56,6 @@
"SET_JRE_RT_LIBRARY": "设置 JRE RT 库", "SET_JRE_RT_LIBRARY": "设置 JRE RT 库",
"SET_OPTIONAL_LIBRARY_FOLDER": "设置可选的库文件夹", "SET_OPTIONAL_LIBRARY_FOLDER": "设置可选的库文件夹",
"SET_JAVAC_EXECUTABLE": "设置 Javac 可执行文件", "SET_JAVAC_EXECUTABLE": "设置 Javac 可执行文件",
"JAVA": "Java", "JAVA": "Java",
"PROCYON": "Procyon", "PROCYON": "Procyon",
"CFR": "CFR", "CFR": "CFR",
@ -74,11 +68,9 @@
"HEXCODE": "十六进制", "HEXCODE": "十六进制",
"BYTECODE": "字节码", "BYTECODE": "字节码",
"ASM_TEXTIFY": "汇编文本", "ASM_TEXTIFY": "汇编文本",
"BYTECODE_DECOMPILER": "字节码反编译器", "BYTECODE_DECOMPILER": "字节码反编译器",
"DEBUG_HELPERS": "调试辅助器", "DEBUG_HELPERS": "调试辅助器",
"APPEND_BRACKETS_TO_LABEL": "标签带花括号", "APPEND_BRACKETS_TO_LABEL": "标签带花括号",
"PLUGINS": "插件", "PLUGINS": "插件",
"OPEN_PLUGIN": "打开插件…", "OPEN_PLUGIN": "打开插件…",
"RECENT_PLUGINS": "最近的插件", "RECENT_PLUGINS": "最近的插件",
@ -91,7 +83,6 @@
"ZKM_STRING_DECRYPTER": "ZKM 字符串解密器", "ZKM_STRING_DECRYPTER": "ZKM 字符串解密器",
"ALLATORI_STRING_DECRYPTER": "Allatori 字符串解密器", "ALLATORI_STRING_DECRYPTER": "Allatori 字符串解密器",
"ZSTRINGARRAY_DECRYPTER": "ZStringArray 解密器", "ZSTRINGARRAY_DECRYPTER": "ZStringArray 解密器",
"PROCYON_DECOMPILER": "Procyon 反编译器", "PROCYON_DECOMPILER": "Procyon 反编译器",
"CFR_DECOMPILER": "CFR 反编译器", "CFR_DECOMPILER": "CFR 反编译器",
"FERNFLOWER_DECOMPILER": "FernFlower 反编译器", "FERNFLOWER_DECOMPILER": "FernFlower 反编译器",
@ -99,14 +90,12 @@
"JD_DECOMPILER": "JD-GUI 反编译器", "JD_DECOMPILER": "JD-GUI 反编译器",
"BYTECODE_DISASSEMBLER": "字节码反汇编", "BYTECODE_DISASSEMBLER": "字节码反汇编",
"DISASSEMBLER": "反汇编", "DISASSEMBLER": "反汇编",
"ERROR": "错误", "ERROR": "错误",
"NEW_JAVA_PLUGIN": "新 Java 插件", "NEW_JAVA_PLUGIN": "新 Java 插件",
"NEW_JAVASCRIPT_PLUGIN": "新 Javascript 插件", "NEW_JAVASCRIPT_PLUGIN": "新 Javascript 插件",
"SUGGESTED_FIX_DECOMPILER_ERROR": "建议的办法:单击刷新类。如果又失败请尝试别的反编译器。", "SUGGESTED_FIX_DECOMPILER_ERROR": "建议的办法:单击刷新类。如果又失败请尝试别的反编译器。",
"SUGGESTED_FIX_COMPILER_ERROR": "建议的办法:尝试“视图>面板>Krakatau>字节码”并启用可编辑。", "SUGGESTED_FIX_COMPILER_ERROR": "建议的办法:尝试“视图>面板>Krakatau>字节码”并启用可编辑。",
"DRAG_CLASS_JAR": "拖放 class/jar/zip/APK/DEX 到这", "DRAG_CLASS_JAR": "拖放 class/jar/zip/APK/DEX 到这",
"FILES": "文件", "FILES": "文件",
"QUICK_FILE_SEARCH_NO_FILE_EXTENSION": "快速文件搜索 (无扩展名)", "QUICK_FILE_SEARCH_NO_FILE_EXTENSION": "快速文件搜索 (无扩展名)",
"WORK_SPACE": "工作区", "WORK_SPACE": "工作区",
@ -121,5 +110,18 @@
"DESC": "描述:", "DESC": "描述:",
"SAVE_AS": "另存为…", "SAVE_AS": "另存为…",
"RESULTS": "结果", "RESULTS": "结果",
"SAVE": "保存…" "SAVE": "保存…",
"HIGH_CONTRAST_LIGHT": "高对比度灯",
"DARK_ALT": "暗Alt",
"ONE_DARK_THEME": "一个黑暗主题",
"HIGH_CONTRAST_DARK_THEME": "高对比度深色主题",
"DARK": "深色(推荐深色)",
"ONE_DARK": "一个黑暗",
"SOLARIZED_DARK": "日晒黑暗",
"SOLARIZED_DARK_THEME": "Solarized 黑暗主题",
"SOLARIZED_LIGHT_THEME": "Solarized Light 主题",
"THEME_MATCH": "主题搭配(推荐)",
"SOLARIZED_LIGHT": "日光灯",
"HIGH_CONTRAST_DARK": "高对比度暗",
"HIGH_CONTRAST_LIGHT_THEME": "高对比度灯光主题"
} }

View file

@ -14,12 +14,9 @@
"RECENT_FILES": "Недавние файлы", "RECENT_FILES": "Недавние файлы",
"ABOUT": "О программе", "ABOUT": "О программе",
"EXIT": "Выход", "EXIT": "Выход",
"VIEW": "Вид", "VIEW": "Вид",
"VISUAL_SETTINGS": "Визуальные настройки", "VISUAL_SETTINGS": "Визуальные настройки",
"LANGUAGE": "Язык", "LANGUAGE": "Язык",
"WINDOW_THEME": "Тема окна", "WINDOW_THEME": "Тема окна",
"SYSTEM_THEME": "Системная тема", "SYSTEM_THEME": "Системная тема",
"DARK_THEME": "Темная тема", "DARK_THEME": "Темная тема",
@ -33,20 +30,16 @@
"VISUAL_STUDIO": "Visual Studio", "VISUAL_STUDIO": "Visual Studio",
"DRUID_DARK": "Druid (Темная)", "DRUID_DARK": "Druid (Темная)",
"MONOKAI_DARK": "Monokai (Темная)", "MONOKAI_DARK": "Monokai (Темная)",
"FONT_SIZE": "Размер шрифта", "FONT_SIZE": "Размер шрифта",
"SHOW_TAB_FILE_IN_TAB_TITLE": "Показать файл в заголовке вкладки", "SHOW_TAB_FILE_IN_TAB_TITLE": "Показать файл в заголовке вкладки",
"SIMPLIFY_NAME_IN_TAB_TITLE": "Упростить имя в заголовке вкладки", "SIMPLIFY_NAME_IN_TAB_TITLE": "Упростить имя в заголовке вкладки",
"SYNCHRONIZED_VIEWING": "Синхронизировать просмотр", "SYNCHRONIZED_VIEWING": "Синхронизировать просмотр",
"SHOW_CLASS_METHODS": "Показать методы класса", "SHOW_CLASS_METHODS": "Показать методы класса",
"PANE_1": "Панель 1", "PANE_1": "Панель 1",
"PANE_2": "Панель 2", "PANE_2": "Панель 2",
"PANE_3": "Панель 3", "PANE_3": "Панель 3",
"NONE": "Нет", "NONE": "Нет",
"EDITABLE": "Редактируемый", "EDITABLE": "Редактируемый",
"SETTINGS": "Настройки", "SETTINGS": "Настройки",
"COMPILE_ON_SAVE": "Скомпилировать при сохранении", "COMPILE_ON_SAVE": "Скомпилировать при сохранении",
"COMPILE_ON_REFRESH": "Скомпилировать при обновлении", "COMPILE_ON_REFRESH": "Скомпилировать при обновлении",
@ -63,7 +56,6 @@
"SET_JRE_RT_LIBRARY": "Указать библиотеку JRE RT", "SET_JRE_RT_LIBRARY": "Указать библиотеку JRE RT",
"SET_OPTIONAL_LIBRARY_FOLDER": "Указать папку дополнительных библиотек", "SET_OPTIONAL_LIBRARY_FOLDER": "Указать папку дополнительных библиотек",
"SET_JAVAC_EXECUTABLE": "Указать исполняемый файл Javac", "SET_JAVAC_EXECUTABLE": "Указать исполняемый файл Javac",
"JAVA": "Java", "JAVA": "Java",
"PROCYON": "Procyon", "PROCYON": "Procyon",
"CFR": "CFR", "CFR": "CFR",
@ -76,11 +68,9 @@
"HEXCODE": "Шестнадцатеричный код", "HEXCODE": "Шестнадцатеричный код",
"BYTECODE": "Байт-код", "BYTECODE": "Байт-код",
"ASM_TEXTIFY": "ASM Textify", "ASM_TEXTIFY": "ASM Textify",
"BYTECODE_DECOMPILER": "Декомпилятор байт-кода", "BYTECODE_DECOMPILER": "Декомпилятор байт-кода",
"DEBUG_HELPERS": "Помощники отладки", "DEBUG_HELPERS": "Помощники отладки",
"APPEND_BRACKETS_TO_LABEL": "Добавить скобки к названию", "APPEND_BRACKETS_TO_LABEL": "Добавить скобки к названию",
"PLUGINS": "Плагины", "PLUGINS": "Плагины",
"OPEN_PLUGIN": "Открыть плагин ...", "OPEN_PLUGIN": "Открыть плагин ...",
"RECENT_PLUGINS": "Недавние плагины", "RECENT_PLUGINS": "Недавние плагины",
@ -93,9 +83,6 @@
"ZKM_STRING_DECRYPTER": "Расшифровать строки (ZKM)", "ZKM_STRING_DECRYPTER": "Расшифровать строки (ZKM)",
"ALLATORI_STRING_DECRYPTER": "Расшифровать строки (Allatori)", "ALLATORI_STRING_DECRYPTER": "Расшифровать строки (Allatori)",
"ZSTRINGARRAY_DECRYPTER": "Расшифровать (ZStringArray)", "ZSTRINGARRAY_DECRYPTER": "Расшифровать (ZStringArray)",
"PROCYON_DECOMPILER": "Декомпилятор Procyon", "PROCYON_DECOMPILER": "Декомпилятор Procyon",
"CFR_DECOMPILER": "Декомпилятор CFR", "CFR_DECOMPILER": "Декомпилятор CFR",
"FERNFLOWER_DECOMPILER": "Декомпилятор FernFlower", "FERNFLOWER_DECOMPILER": "Декомпилятор FernFlower",
@ -103,14 +90,12 @@
"JD_DECOMPILER": "Декомпилятор JD-GUI", "JD_DECOMPILER": "Декомпилятор JD-GUI",
"BYTECODE_DISASSEMBLER": "Дизассемблер байт-кода", "BYTECODE_DISASSEMBLER": "Дизассемблер байт-кода",
"DISASSEMBLER": "Дизассемблер", "DISASSEMBLER": "Дизассемблер",
"ERROR": "Ошибка", "ERROR": "Ошибка",
"NEW_JAVA_PLUGIN": "Новый плагин Java", "NEW_JAVA_PLUGIN": "Новый плагин Java",
"NEW_JAVASCRIPT_PLUGIN": "Новый плагин Javascript", "NEW_JAVASCRIPT_PLUGIN": "Новый плагин Javascript",
"SUGGESTED_FIX_DECOMPILER_ERROR": "Предлагаемое исправление: нажмите «Обновить класс», если не получится снова, то попробуйте другой декомпилятор.", "SUGGESTED_FIX_DECOMPILER_ERROR": "Предлагаемое исправление: нажмите «Обновить класс», если не получится снова, то попробуйте другой декомпилятор.",
"SUGGESTED_FIX_COMPILER_ERROR": "Предлагаемое исправление: попробуйте «Вид»> «Панель»> «Krakatau»> «Байт-код» и включите «Редактируемый».", "SUGGESTED_FIX_COMPILER_ERROR": "Предлагаемое исправление: попробуйте «Вид»> «Панель»> «Krakatau»> «Байт-код» и включите «Редактируемый».",
"DRAG_CLASS_JAR": "Перетащите сюда class / jar / zip / APK / DEX", "DRAG_CLASS_JAR": "Перетащите сюда class / jar / zip / APK / DEX",
"FILES": "Файлы", "FILES": "Файлы",
"QUICK_FILE_SEARCH_NO_FILE_EXTENSION": "Быстрый поиск файлов (без расширения)", "QUICK_FILE_SEARCH_NO_FILE_EXTENSION": "Быстрый поиск файлов (без расширения)",
"WORK_SPACE": "Рабочее пространство", "WORK_SPACE": "Рабочее пространство",
@ -122,8 +107,21 @@
"OWNER": "Владелец: ", "OWNER": "Владелец: ",
"NAME": "Имя: ", "NAME": "Имя: ",
"DESC": "Описание: ", "DESC": "Описание: ",
"SAVE": "Сохранить..." "SAVE": "Сохранить...",
"SAVE_AS": "Сохранить как...", "SAVE_AS": "Сохранить как...",
"RESULTS": "Полученные результаты", "RESULTS": "Полученные результаты",
"REFRESH": "Обновить", "REFRESH": "Обновить",
"HIGH_CONTRAST_LIGHT": "Высококонтрастный свет",
"DARK_ALT": "Темный-Альт",
"ONE_DARK_THEME": "Одна темная тема",
"HIGH_CONTRAST_DARK_THEME": "Темная тема с высокой контрастностью",
"DARK": "Темный (рекомендуется темный)",
"ONE_DARK": "Один темный",
"SOLARIZED_DARK": "Соляризованная тьма",
"SOLARIZED_DARK_THEME": "Соляризованная темная тема",
"SOLARIZED_LIGHT_THEME": "Тема солнечного света",
"THEME_MATCH": "Соответствие темы (рекомендуется)",
"SOLARIZED_LIGHT": "Соляризованный свет",
"HIGH_CONTRAST_DARK": "Высококонтрастный темный",
"HIGH_CONTRAST_LIGHT_THEME": "Тема с высокой контрастностью света"
} }