diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/JavapDisassembler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/JavapDisassembler.java index 92166713..40e38983 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/JavapDisassembler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/JavapDisassembler.java @@ -1,28 +1,21 @@ package the.bytecode.club.bytecodeviewer.decompilers.impl; -import me.konloch.kontainer.io.DiskReader; import me.konloch.kontainer.io.DiskWriter; 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.Configuration; import the.bytecode.club.bytecodeviewer.Constants; import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler; 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.util.MiscUtils; import java.io.File; -import java.io.PrintWriter; -import java.io.StringWriter; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; 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; /*************************************************************************** @@ -60,10 +53,15 @@ public class JavapDisassembler extends InternalDecompiler if(!ExternalResources.getSingleton().hasJavaToolsSet()) 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); tempDirectory.mkdir(); final File tempClass = new File(Constants.tempDirectory + fs + "temp" + MiscUtils.randomString(32) + ".class"); - + DiskWriter.replaceFileBytes(tempClass.getAbsolutePath(), b, false); JFrameConsolePrintStream sysOutBuffer = null; @@ -74,18 +72,18 @@ public class JavapDisassembler extends InternalDecompiler new URL[] {new File(Configuration.javaTools).toURI().toURL()}, this.getClass().getClassLoader() ); - + //setup reflection Class javap = child.loadClass("com.sun.tools.javap.Main"); Method main = javap.getMethod("main", String[].class); Object cl = javap.newInstance(); - + //pipe sys out sysOutBuffer = new JFrameConsolePrintStream("", false); - + //silence security manager debugging BytecodeViewer.sm.silenceExec(true); - + //invoke Javap main.invoke(cl, (Object) new String[]{ "-p", //Shows all classes and members @@ -103,13 +101,13 @@ public class JavapDisassembler extends InternalDecompiler BytecodeViewer.sm.silenceExec(false); tempClass.delete(); } - + if(sysOutBuffer != null) { sysOutBuffer.finished(); return sysOutBuffer.getTextAreaOutputStreamOut().getBuffer().toString(); } - + return SEND_STACKTRACE_TO; } diff --git a/src/main/resources/translations/mandarin.json b/src/main/resources/translations/mandarin.json index 7fe53e4c..d6639231 100644 --- a/src/main/resources/translations/mandarin.json +++ b/src/main/resources/translations/mandarin.json @@ -14,11 +14,9 @@ "RECENT_FILES": "最近的文件", "ABOUT": "关于", "EXIT": "退出", - "VIEW": "视图", "VISUAL_SETTINGS": "界面设置", "LANGUAGE": "语言", - "WINDOW_THEME": "窗口主题", "SYSTEM_THEME": "系统主题", "DARK_THEME": "深色主题", @@ -32,19 +30,16 @@ "VISUAL_STUDIO": "Visual Studio", "DRUID_DARK": "Druid (深色)", "MONOKAI_DARK": "Monokai (深色)", - "FONT_SIZE": "字体大小", "SHOW_TAB_FILE_IN_TAB_TITLE": "标签页标题显示文件名", "SIMPLIFY_NAME_IN_TAB_TITLE": "简化标签页标题文件名", "SYNCHRONIZED_VIEWING": "同步视图", "SHOW_CLASS_METHODS": "显示类方法", - "PANE_1": "面板 1", "PANE_2": "面板 2", "PANE_3": "面板 3", "NONE": "无", "EDITABLE": "可编辑", - "SETTINGS": "设置", "COMPILE_ON_SAVE": "保存时编译", "COMPILE_ON_REFRESH": "刷新时编译", @@ -61,7 +56,6 @@ "SET_JRE_RT_LIBRARY": "设置 JRE RT 库", "SET_OPTIONAL_LIBRARY_FOLDER": "设置可选的库文件夹", "SET_JAVAC_EXECUTABLE": "设置 Javac 可执行文件", - "JAVA": "Java", "PROCYON": "Procyon", "CFR": "CFR", @@ -74,11 +68,9 @@ "HEXCODE": "十六进制", "BYTECODE": "字节码", "ASM_TEXTIFY": "汇编文本", - "BYTECODE_DECOMPILER": "字节码反编译器", "DEBUG_HELPERS": "调试辅助器", "APPEND_BRACKETS_TO_LABEL": "标签带花括号", - "PLUGINS": "插件", "OPEN_PLUGIN": "打开插件…", "RECENT_PLUGINS": "最近的插件", @@ -91,7 +83,6 @@ "ZKM_STRING_DECRYPTER": "ZKM 字符串解密器", "ALLATORI_STRING_DECRYPTER": "Allatori 字符串解密器", "ZSTRINGARRAY_DECRYPTER": "ZStringArray 解密器", - "PROCYON_DECOMPILER": "Procyon 反编译器", "CFR_DECOMPILER": "CFR 反编译器", "FERNFLOWER_DECOMPILER": "FernFlower 反编译器", @@ -99,14 +90,12 @@ "JD_DECOMPILER": "JD-GUI 反编译器", "BYTECODE_DISASSEMBLER": "字节码反汇编", "DISASSEMBLER": "反汇编", - "ERROR": "错误", "NEW_JAVA_PLUGIN": "新 Java 插件", "NEW_JAVASCRIPT_PLUGIN": "新 Javascript 插件", "SUGGESTED_FIX_DECOMPILER_ERROR": "建议的办法:单击刷新类。如果又失败请尝试别的反编译器。", - "SUGGESTED_FIX_COMPILER_ERROR": "建议的办法:尝试“视图>面板>Krakatau>字节码”并启用可编辑。", + "SUGGESTED_FIX_COMPILER_ERROR": "建议的办法:尝试“视图>面板>Krakatau>字节码”并启用可编辑。", "DRAG_CLASS_JAR": "拖放 class/jar/zip/APK/DEX 到这", - "FILES": "文件", "QUICK_FILE_SEARCH_NO_FILE_EXTENSION": "快速文件搜索 (无扩展名)", "WORK_SPACE": "工作区", @@ -121,5 +110,18 @@ "DESC": "描述:", "SAVE_AS": "另存为…", "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": "高对比度灯光主题" } diff --git a/src/main/resources/translations/russian.json b/src/main/resources/translations/russian.json index 6508906c..7123efdd 100644 --- a/src/main/resources/translations/russian.json +++ b/src/main/resources/translations/russian.json @@ -14,12 +14,9 @@ "RECENT_FILES": "Недавние файлы", "ABOUT": "О программе", "EXIT": "Выход", - "VIEW": "Вид", "VISUAL_SETTINGS": "Визуальные настройки", "LANGUAGE": "Язык", - - "WINDOW_THEME": "Тема окна", "SYSTEM_THEME": "Системная тема", "DARK_THEME": "Темная тема", @@ -33,20 +30,16 @@ "VISUAL_STUDIO": "Visual Studio", "DRUID_DARK": "Druid (Темная)", "MONOKAI_DARK": "Monokai (Темная)", - - "FONT_SIZE": "Размер шрифта", "SHOW_TAB_FILE_IN_TAB_TITLE": "Показать файл в заголовке вкладки", "SIMPLIFY_NAME_IN_TAB_TITLE": "Упростить имя в заголовке вкладки", "SYNCHRONIZED_VIEWING": "Синхронизировать просмотр", "SHOW_CLASS_METHODS": "Показать методы класса", - "PANE_1": "Панель 1", "PANE_2": "Панель 2", "PANE_3": "Панель 3", "NONE": "Нет", "EDITABLE": "Редактируемый", - "SETTINGS": "Настройки", "COMPILE_ON_SAVE": "Скомпилировать при сохранении", "COMPILE_ON_REFRESH": "Скомпилировать при обновлении", @@ -63,7 +56,6 @@ "SET_JRE_RT_LIBRARY": "Указать библиотеку JRE RT", "SET_OPTIONAL_LIBRARY_FOLDER": "Указать папку дополнительных библиотек", "SET_JAVAC_EXECUTABLE": "Указать исполняемый файл Javac", - "JAVA": "Java", "PROCYON": "Procyon", "CFR": "CFR", @@ -76,11 +68,9 @@ "HEXCODE": "Шестнадцатеричный код", "BYTECODE": "Байт-код", "ASM_TEXTIFY": "ASM Textify", - "BYTECODE_DECOMPILER": "Декомпилятор байт-кода", "DEBUG_HELPERS": "Помощники отладки", "APPEND_BRACKETS_TO_LABEL": "Добавить скобки к названию", - "PLUGINS": "Плагины", "OPEN_PLUGIN": "Открыть плагин ...", "RECENT_PLUGINS": "Недавние плагины", @@ -93,9 +83,6 @@ "ZKM_STRING_DECRYPTER": "Расшифровать строки (ZKM)", "ALLATORI_STRING_DECRYPTER": "Расшифровать строки (Allatori)", "ZSTRINGARRAY_DECRYPTER": "Расшифровать (ZStringArray)", - - - "PROCYON_DECOMPILER": "Декомпилятор Procyon", "CFR_DECOMPILER": "Декомпилятор CFR", "FERNFLOWER_DECOMPILER": "Декомпилятор FernFlower", @@ -103,14 +90,12 @@ "JD_DECOMPILER": "Декомпилятор JD-GUI", "BYTECODE_DISASSEMBLER": "Дизассемблер байт-кода", "DISASSEMBLER": "Дизассемблер", - "ERROR": "Ошибка", "NEW_JAVA_PLUGIN": "Новый плагин Java", "NEW_JAVASCRIPT_PLUGIN": "Новый плагин Javascript", "SUGGESTED_FIX_DECOMPILER_ERROR": "Предлагаемое исправление: нажмите «Обновить класс», если не получится снова, то попробуйте другой декомпилятор.", "SUGGESTED_FIX_COMPILER_ERROR": "Предлагаемое исправление: попробуйте «Вид»> «Панель»> «Krakatau»> «Байт-код» и включите «Редактируемый».", "DRAG_CLASS_JAR": "Перетащите сюда class / jar / zip / APK / DEX", - "FILES": "Файлы", "QUICK_FILE_SEARCH_NO_FILE_EXTENSION": "Быстрый поиск файлов (без расширения)", "WORK_SPACE": "Рабочее пространство", @@ -122,8 +107,21 @@ "OWNER": "Владелец: ", "NAME": "Имя: ", "DESC": "Описание: ", - "SAVE": "Сохранить..." + "SAVE": "Сохранить...", "SAVE_AS": "Сохранить как...", "RESULTS": "Полученные результаты", "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": "Тема с высокой контрастностью света" }