From ce7d6f0156edfcd5a1e1d26d758c7dfeabe57d52 Mon Sep 17 00:00:00 2001 From: Skylot Date: Wed, 10 Jul 2013 22:57:39 +0400 Subject: [PATCH] Add jadx-gui, restructure src directory --- .../src/main/java/jadx/cli}/JadxArgs.java | 79 ++++++--- jadx-cli/src/main/java/jadx/cli/JadxCLI.java | 18 ++ .../src/main/java/jadx/api/Decompiler.java | 150 ++++++++++++++++ .../src/main/java/jadx/api}/IJadxArgs.java | 8 +- .../src/main/java/jadx/api/JavaClass.java | 41 +++++ .../src/main/java/jadx/api/JavaPackage.java | 31 ++++ .../src/main/java/jadx/core}/Consts.java | 4 +- jadx-core/src/main/java/jadx/core/Jadx.java | 75 ++++++++ .../main/java/jadx/core}/ProcessClass.java | 14 +- .../jadx/core}/codegen/AnnotationGen.java | 28 +-- .../java/jadx/core}/codegen/ClassGen.java | 40 ++--- .../main/java/jadx/core}/codegen/CodeGen.java | 22 ++- .../java/jadx/core}/codegen/CodeWriter.java | 4 +- .../main/java/jadx/core}/codegen/InsnGen.java | 58 +++---- .../java/jadx/core}/codegen/MethodGen.java | 46 ++--- .../java/jadx/core}/codegen/RegionGen.java | 58 +++---- .../main/java/jadx/core}/codegen/TypeGen.java | 14 +- .../java/jadx/core}/deobf/NameMapper.java | 2 +- .../jadx/core}/dex/attributes/AttrNode.java | 2 +- .../core}/dex/attributes/AttributeFlag.java | 2 +- .../core}/dex/attributes/AttributeType.java | 2 +- .../core}/dex/attributes/AttributesList.java | 8 +- .../core}/dex/attributes/BlockRegState.java | 8 +- .../dex/attributes/DeclareVariableAttr.java | 6 +- .../core}/dex/attributes/EnumClassAttr.java | 10 +- .../core}/dex/attributes/ForceReturnAttr.java | 6 +- .../jadx/core}/dex/attributes/IAttribute.java | 2 +- .../core}/dex/attributes/IAttributeNode.java | 2 +- .../core}/dex/attributes/JadxErrorAttr.java | 4 +- .../core}/dex/attributes/JumpAttribute.java | 4 +- .../jadx/core}/dex/attributes/LoopAttr.java | 6 +- .../dex/attributes/MethodInlineAttr.java | 4 +- .../core}/dex/attributes/SourceFileAttr.java | 2 +- .../attributes/annotations/Annotation.java | 4 +- .../annotations/AnnotationsList.java | 8 +- .../annotations/MethodParameters.java | 8 +- .../java/jadx/core}/dex/info/AccessInfo.java | 4 +- .../java/jadx/core}/dex/info/ClassInfo.java | 10 +- .../java/jadx/core}/dex/info/FieldInfo.java | 6 +- .../java/jadx/core}/dex/info/MethodInfo.java | 10 +- .../core}/dex/instructions/ArithNode.java | 12 +- .../jadx/core}/dex/instructions/ArithOp.java | 2 +- .../core}/dex/instructions/FillArrayOp.java | 10 +- .../jadx/core}/dex/instructions/GotoNode.java | 6 +- .../jadx/core}/dex/instructions/IfNode.java | 12 +- .../jadx/core}/dex/instructions/IfOp.java | 4 +- .../core}/dex/instructions/IndexInsnNode.java | 6 +- .../core}/dex/instructions/InsnDecoder.java | 22 +-- .../jadx/core}/dex/instructions/InsnType.java | 2 +- .../core}/dex/instructions/InvokeNode.java | 14 +- .../core}/dex/instructions/InvokeType.java | 2 +- .../core}/dex/instructions/SwitchNode.java | 8 +- .../core}/dex/instructions/args/ArgType.java | 6 +- .../core}/dex/instructions/args/InsnArg.java | 6 +- .../dex/instructions/args/InsnWrapArg.java | 4 +- .../dex/instructions/args/LiteralArg.java | 6 +- .../dex/instructions/args/PrimitiveType.java | 2 +- .../dex/instructions/args/RegisterArg.java | 12 +- .../core}/dex/instructions/args/Typed.java | 2 +- .../core}/dex/instructions/args/TypedVar.java | 2 +- .../instructions/mods/ConstructorInsn.java | 16 +- .../dex/instructions/mods/TernaryInsn.java | 16 +- .../java/jadx/core}/dex/nodes/BlockNode.java | 12 +- .../java/jadx/core}/dex/nodes/ClassNode.java | 47 +++-- .../java/jadx/core}/dex/nodes/DexNode.java | 12 +- .../java/jadx/core}/dex/nodes/FieldNode.java | 12 +- .../java/jadx/core}/dex/nodes/IBlock.java | 2 +- .../java/jadx/core/dex/nodes/IContainer.java | 11 ++ .../java/jadx/core}/dex/nodes/ILoadable.java | 6 +- .../java/jadx/core}/dex/nodes/IRegion.java | 2 +- .../jadx/core}/dex/nodes/InsnContainer.java | 4 +- .../java/jadx/core}/dex/nodes/InsnNode.java | 18 +- .../java/jadx/core}/dex/nodes/MethodNode.java | 50 +++--- .../java/jadx/core}/dex/nodes/RootNode.java | 21 +-- .../dex/nodes/parser/AnnotationsParser.java | 20 +-- .../dex/nodes/parser/DebugInfoParser.java | 16 +- .../dex/nodes/parser/EncValueParser.java | 10 +- .../dex/nodes/parser/FieldValueAttr.java | 6 +- .../jadx/core}/dex/nodes/parser/LocalVar.java | 12 +- .../dex/nodes/parser/StaticValuesParser.java | 8 +- .../core}/dex/regions/AbstractRegion.java | 6 +- .../jadx/core}/dex/regions/IfCondition.java | 10 +- .../java/jadx/core}/dex/regions/IfRegion.java | 8 +- .../jadx/core}/dex/regions/LoopRegion.java | 14 +- .../java/jadx/core}/dex/regions/Region.java | 8 +- .../jadx/core}/dex/regions/SwitchRegion.java | 8 +- .../core}/dex/regions/SynchronizedRegion.java | 8 +- .../jadx/core}/dex/trycatch/CatchAttr.java | 6 +- .../core}/dex/trycatch/ExcHandlerAttr.java | 6 +- .../core}/dex/trycatch/ExceptionHandler.java | 14 +- .../core}/dex/trycatch/SplitterBlockAttr.java | 8 +- .../core}/dex/trycatch/TryCatchBlock.java | 24 +-- .../core}/dex/visitors/AbstractVisitor.java | 8 +- .../core}/dex/visitors/BlockMakerVisitor.java | 36 ++-- .../dex/visitors/BlockProcessingHelper.java | 26 +-- .../core}/dex/visitors/ClassModifier.java | 14 +- .../jadx/core}/dex/visitors/CodeShrinker.java | 38 ++-- .../dex/visitors/ConstInlinerVisitor.java | 28 +-- .../core}/dex/visitors/DepthTraverser.java | 8 +- .../core}/dex/visitors/DotGraphVisitor.java | 26 +-- .../jadx/core}/dex/visitors/EnumVisitor.java | 36 ++-- .../dex/visitors/FallbackModeVisitor.java | 12 +- .../core}/dex/visitors/IDexTreeVisitor.java | 12 +- .../dex/visitors/InstructionRemover.java | 8 +- .../dex/visitors/MethodInlinerVisitor.java | 20 +-- .../jadx/core}/dex/visitors/ModVisitor.java | 46 ++--- .../java/jadx/core/dex/visitors/SaveCode.java | 34 ++++ .../regions/AbstractRegionVisitor.java | 8 +- .../dex/visitors/regions/CheckRegions.java | 22 +-- .../dex/visitors/regions/CleanRegions.java | 16 +- .../regions/DepthRegionTraverser.java | 12 +- .../dex/visitors/regions/FinishRegions.java | 18 +- .../dex/visitors/regions/IRegionVisitor.java | 8 +- .../visitors/regions/MarkTryCatchRegions.java | 26 +-- .../visitors/regions/PostRegionVisitor.java | 20 +-- .../visitors/regions/ProcessVariables.java | 24 +-- .../dex/visitors/regions/RegionMaker.java | 52 +++--- .../visitors/regions/RegionMakerVisitor.java | 10 +- .../dex/visitors/regions/RegionStack.java | 10 +- .../visitors/regions/TracedRegionVisitor.java | 8 +- .../typeresolver/FinishTypeResolver.java | 16 +- .../visitors/typeresolver/TypeResolver.java | 16 +- .../typeresolver/finish/CheckTypeVisitor.java | 10 +- .../typeresolver/finish/PostTypeResolver.java | 14 +- .../finish/SelectTypeVisitor.java | 8 +- .../java/jadx/core}/utils/BlockUtils.java | 14 +- .../java/jadx/core}/utils/ErrorsCounter.java | 10 +- .../main/java/jadx/core}/utils/InsnUtils.java | 4 +- .../java/jadx/core}/utils/RegionUtils.java | 18 +- .../java/jadx/core}/utils/StringUtils.java | 2 +- .../src/main/java/jadx/core}/utils/Utils.java | 2 +- .../utils/exceptions/CodegenException.java | 6 +- .../utils/exceptions/DecodeException.java | 4 +- .../core}/utils/exceptions/JadxException.java | 8 +- .../exceptions/JadxRuntimeException.java | 2 +- .../jadx/core}/utils/files/InputFile.java | 6 +- .../jadx/core}/utils/files/JavaToDex.java | 4 +- .../src}/main/resources/logback.xml | 0 .../test/java/jadx/tests/StringUtilsTest.java | 2 +- .../test/java/jadx/tests/TypeMergeTest.java | 25 +-- jadx-gui/src/main/java/jadx/gui/JadxGUI.java | 35 ++++ .../src/main/java/jadx/gui/JadxWrapper.java | 38 ++++ .../src/main/java/jadx/gui/MainWindow.java | 164 ++++++++++++++++++ .../src/main/java/jadx/gui/model/JClass.java | 21 +++ .../resources/icons-16/application-exit.png | Bin 0 -> 931 bytes .../resources/icons-16/document-open-5.png | Bin 0 -> 1109 bytes .../main}/java/jadx/samples/AbstractTest.java | 0 .../src/main}/java/jadx/samples/RunTests.java | 0 .../java/jadx/samples/TestAnnotations.java | 0 .../main}/java/jadx/samples/TestArrays.java | 0 .../src/main}/java/jadx/samples/TestCF.java | 0 .../src/main}/java/jadx/samples/TestCF2.java | 0 .../src/main}/java/jadx/samples/TestCF3.java | 0 .../java/jadx/samples/TestConditions.java | 10 ++ .../main}/java/jadx/samples/TestDeadCode.java | 0 .../src/main}/java/jadx/samples/TestEnum.java | 0 .../main}/java/jadx/samples/TestFields.java | 0 .../main}/java/jadx/samples/TestGenerics.java | 0 .../main}/java/jadx/samples/TestInner.java | 0 .../main}/java/jadx/samples/TestInner2.java | 0 .../main}/java/jadx/samples/TestInvoke.java | 0 .../jadx/samples/TestStringProcessing.java | 0 .../main}/java/jadx/samples/TestSwitch.java | 0 .../main}/java/jadx/samples/TestTryCatch.java | 0 .../java/jadx/samples/TestTypeResolver.java | 0 src/main/java/jadx/Jadx.java | 132 -------------- src/main/java/jadx/Main.java | 35 ---- src/main/java/jadx/dex/nodes/IContainer.java | 11 -- 168 files changed, 1533 insertions(+), 1041 deletions(-) rename {src/main/java/jadx => jadx-cli/src/main/java/jadx/cli}/JadxArgs.java (75%) create mode 100644 jadx-cli/src/main/java/jadx/cli/JadxCLI.java create mode 100644 jadx-core/src/main/java/jadx/api/Decompiler.java rename {src/main/java/jadx => jadx-core/src/main/java/jadx/api}/IJadxArgs.java (76%) create mode 100644 jadx-core/src/main/java/jadx/api/JavaClass.java create mode 100644 jadx-core/src/main/java/jadx/api/JavaPackage.java rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/Consts.java (95%) create mode 100644 jadx-core/src/main/java/jadx/core/Jadx.java rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/ProcessClass.java (62%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/codegen/AnnotationGen.java (88%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/codegen/ClassGen.java (92%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/codegen/CodeGen.java (57%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/codegen/CodeWriter.java (97%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/codegen/InsnGen.java (92%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/codegen/MethodGen.java (89%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/codegen/RegionGen.java (85%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/codegen/TypeGen.java (91%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/deobf/NameMapper.java (97%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/AttrNode.java (88%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/AttributeFlag.java (88%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/AttributeType.java (96%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/AttributesList.java (96%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/BlockRegState.java (86%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/DeclareVariableAttr.java (86%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/EnumClassAttr.java (87%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/ForceReturnAttr.java (81%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/IAttribute.java (64%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/IAttributeNode.java (67%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/JadxErrorAttr.java (91%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/JumpAttribute.java (93%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/LoopAttr.java (92%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/MethodInlineAttr.java (83%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/SourceFileAttr.java (91%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/annotations/Annotation.java (89%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/annotations/AnnotationsList.java (81%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/attributes/annotations/MethodParameters.java (75%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/info/AccessInfo.java (98%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/info/ClassInfo.java (95%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/info/FieldInfo.java (88%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/info/MethodInfo.java (93%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/ArithNode.java (84%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/ArithOp.java (89%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/FillArrayOp.java (80%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/GotoNode.java (78%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/IfNode.java (84%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/IfOp.java (85%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/IndexInsnNode.java (76%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/InsnDecoder.java (97%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/InsnType.java (94%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/InvokeNode.java (81%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/InvokeType.java (67%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/SwitchNode.java (85%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/args/ArgType.java (99%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/args/InsnArg.java (93%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/args/InsnWrapArg.java (89%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/args/LiteralArg.java (87%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/args/PrimitiveType.java (95%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/args/RegisterArg.java (90%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/args/Typed.java (95%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/args/TypedVar.java (97%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/mods/ConstructorInsn.java (82%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/instructions/mods/TernaryInsn.java (58%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/BlockNode.java (93%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/ClassNode.java (89%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/DexNode.java (91%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/FieldNode.java (77%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/IBlock.java (79%) create mode 100644 jadx-core/src/main/java/jadx/core/dex/nodes/IContainer.java rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/ILoadable.java (69%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/IRegion.java (83%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/InsnContainer.java (79%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/InsnNode.java (90%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/MethodNode.java (91%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/RootNode.java (83%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/parser/AnnotationsParser.java (85%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/parser/DebugInfoParser.java (94%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/parser/EncValueParser.java (91%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/parser/FieldValueAttr.java (73%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/parser/LocalVar.java (84%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/nodes/parser/StaticValuesParser.java (76%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/regions/AbstractRegion.java (69%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/regions/IfCondition.java (90%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/regions/IfRegion.java (90%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/regions/LoopRegion.java (91%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/regions/Region.java (81%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/regions/SwitchRegion.java (89%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/regions/SynchronizedRegion.java (79%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/trycatch/CatchAttr.java (75%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/trycatch/ExcHandlerAttr.java (83%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/trycatch/ExceptionHandler.java (88%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/trycatch/SplitterBlockAttr.java (70%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/trycatch/TryCatchBlock.java (89%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/AbstractVisitor.java (58%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/BlockMakerVisitor.java (93%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/BlockProcessingHelper.java (87%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/ClassModifier.java (85%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/CodeShrinker.java (88%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/ConstInlinerVisitor.java (87%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/DepthTraverser.java (82%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/DotGraphVisitor.java (91%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/EnumVisitor.java (84%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/FallbackModeVisitor.java (74%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/IDexTreeVisitor.java (69%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/InstructionRemover.java (93%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/MethodInlinerVisitor.java (74%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/ModVisitor.java (87%) create mode 100644 jadx-core/src/main/java/jadx/core/dex/visitors/SaveCode.java rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/AbstractRegionVisitor.java (66%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/CheckRegions.java (81%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/CleanRegions.java (76%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/DepthRegionTraverser.java (76%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/FinishRegions.java (78%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/IRegionVisitor.java (59%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/MarkTryCatchRegions.java (88%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/PostRegionVisitor.java (72%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/ProcessVariables.java (89%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/RegionMaker.java (93%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/RegionMakerVisitor.java (72%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/RegionStack.java (92%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/regions/TracedRegionVisitor.java (81%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/typeresolver/FinishTypeResolver.java (65%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/typeresolver/TypeResolver.java (85%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/typeresolver/finish/CheckTypeVisitor.java (70%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/typeresolver/finish/PostTypeResolver.java (84%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/dex/visitors/typeresolver/finish/SelectTypeVisitor.java (70%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/utils/BlockUtils.java (95%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/utils/ErrorsCounter.java (92%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/utils/InsnUtils.java (92%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/utils/RegionUtils.java (92%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/utils/StringUtils.java (97%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/utils/Utils.java (99%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/utils/exceptions/CodegenException.java (84%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/utils/exceptions/DecodeException.java (85%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/utils/exceptions/JadxException.java (77%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/utils/exceptions/JadxRuntimeException.java (84%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/utils/files/InputFile.java (94%) rename {src/main/java/jadx => jadx-core/src/main/java/jadx/core}/utils/files/JavaToDex.java (94%) rename {src => jadx-core/src}/main/resources/logback.xml (100%) rename {src => jadx-core/src}/test/java/jadx/tests/StringUtilsTest.java (95%) rename {src => jadx-core/src}/test/java/jadx/tests/TypeMergeTest.java (69%) create mode 100644 jadx-gui/src/main/java/jadx/gui/JadxGUI.java create mode 100644 jadx-gui/src/main/java/jadx/gui/JadxWrapper.java create mode 100644 jadx-gui/src/main/java/jadx/gui/MainWindow.java create mode 100644 jadx-gui/src/main/java/jadx/gui/model/JClass.java create mode 100644 jadx-gui/src/main/resources/icons-16/application-exit.png create mode 100644 jadx-gui/src/main/resources/icons-16/document-open-5.png rename {src/samples => jadx-samples/src/main}/java/jadx/samples/AbstractTest.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/RunTests.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestAnnotations.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestArrays.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestCF.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestCF2.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestCF3.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestConditions.java (84%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestDeadCode.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestEnum.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestFields.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestGenerics.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestInner.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestInner2.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestInvoke.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestStringProcessing.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestSwitch.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestTryCatch.java (100%) rename {src/samples => jadx-samples/src/main}/java/jadx/samples/TestTypeResolver.java (100%) delete mode 100644 src/main/java/jadx/Jadx.java delete mode 100644 src/main/java/jadx/Main.java delete mode 100644 src/main/java/jadx/dex/nodes/IContainer.java diff --git a/src/main/java/jadx/JadxArgs.java b/jadx-cli/src/main/java/jadx/cli/JadxArgs.java similarity index 75% rename from src/main/java/jadx/JadxArgs.java rename to jadx-cli/src/main/java/jadx/cli/JadxArgs.java index 90aa79d25..dd2624073 100644 --- a/src/main/java/jadx/JadxArgs.java +++ b/jadx-cli/src/main/java/jadx/cli/JadxArgs.java @@ -1,10 +1,10 @@ -package jadx; +package jadx.cli; -import jadx.utils.exceptions.JadxException; -import jadx.utils.files.InputFile; +import jadx.core.Consts; +import jadx.api.IJadxArgs; +import jadx.core.utils.exceptions.JadxException; import java.io.File; -import java.io.IOException; import java.io.PrintStream; import java.lang.reflect.Field; import java.util.ArrayList; @@ -21,7 +21,7 @@ import com.beust.jcommander.ParameterException; public class JadxArgs implements IJadxArgs { private static final Logger LOG = LoggerFactory.getLogger(JadxArgs.class); - @Parameter(description = " (.dex, .apk, .jar or .class)", required = true) + @Parameter(description = " (.dex, .apk, .jar or .class)") protected List files; @Parameter(names = {"-d", "--output-dir"}, description = "output directory") @@ -45,10 +45,18 @@ public class JadxArgs implements IJadxArgs { @Parameter(names = {"-h", "--help"}, description = "print this help", help = true) protected boolean printHelp = false; - private final List input = new ArrayList(); + private final List input = new ArrayList(); private File outputDir; - public void parse(String[] args) { + private final boolean inputRequired; + + public JadxArgs(String[] args, boolean inputRequired) { + this.inputRequired = inputRequired; + parse(args); + checkArguments(); + } + + private void parse(String[] args) { try { new JCommander(this, args); } catch (ParameterException e) { @@ -58,30 +66,47 @@ public class JadxArgs implements IJadxArgs { } } + private void checkArguments() { + if (isPrintHelp()) { + printUsage(); + System.exit(0); + } + if (isVerbose()) { + ch.qos.logback.classic.Logger rootLogger = + (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + rootLogger.setLevel(ch.qos.logback.classic.Level.DEBUG); + } + try { + processArgs(); + } catch (JadxException e) { + LOG.error(e.getMessage()); + System.exit(1); + } + } + public void processArgs() throws JadxException { if (printHelp) return; - if (files == null || files.isEmpty()) - throw new JadxException("Please specify at least one input file"); + if (threadsCount <= 0) + throw new JadxException("Threads count must be positive"); - for (String fileName : files) { - File file = new File(fileName); - if (!file.exists()) - throw new JadxException("File not found: " + file); - - try { - input.add(new InputFile(file)); - } catch (IOException e) { - throw new JadxException("File processing error: " + file, e); + if (files != null) { + for (String fileName : files) { + File file = new File(fileName); + if (file.exists()) + input.add(file); + else + throw new JadxException("File not found: " + file); } } - if (input.isEmpty()) - throw new JadxException("No files with correct extension (must be '.dex', '.class' or '.jar')"); - - if (threadsCount <= 0) - throw new JadxException("Threads count must be positive"); + if (input.isEmpty()) { + if (inputRequired) + throw new JadxException("Please specify at least one input file"); + else + return; + } if (outDirName == null) { File file = new File(files.get(0)); @@ -123,13 +148,15 @@ public class JadxArgs implements IJadxArgs { Field[] fields = this.getClass().getDeclaredFields(); for (Field f : fields) { for (ParameterDescription p : params) { - if (f.getName().equals(p.getParameterized().getName())) { + String name = f.getName(); + if (name.equals(p.getParameterized().getName())) { StringBuilder opt = new StringBuilder(); opt.append(' ').append(p.getNames()); addSpaces(opt, maxNamesLen - opt.length() + 2); opt.append("- ").append(p.getDescription()); - if (p.getParameter().required()) + if (inputRequired && name.equals("files")) { opt.append(" [required]"); + } out.println(opt.toString()); break; } @@ -165,7 +192,7 @@ public class JadxArgs implements IJadxArgs { } @Override - public List getInput() { + public List getInput() { return input; } diff --git a/jadx-cli/src/main/java/jadx/cli/JadxCLI.java b/jadx-cli/src/main/java/jadx/cli/JadxCLI.java new file mode 100644 index 000000000..7e34da717 --- /dev/null +++ b/jadx-cli/src/main/java/jadx/cli/JadxCLI.java @@ -0,0 +1,18 @@ +package jadx.cli; + +import jadx.api.Decompiler; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class JadxCLI { + private static final Logger LOG = LoggerFactory.getLogger(JadxCLI.class); + + public static void main(String[] args) { + JadxArgs jadxArgs = new JadxArgs(args, true); + Decompiler jadx = new Decompiler(jadxArgs); + jadx.processAndSaveAll(); + LOG.info("done"); + System.exit(jadx.getErrorsCount()); + } +} diff --git a/jadx-core/src/main/java/jadx/api/Decompiler.java b/jadx-core/src/main/java/jadx/api/Decompiler.java new file mode 100644 index 000000000..986ab0f79 --- /dev/null +++ b/jadx-core/src/main/java/jadx/api/Decompiler.java @@ -0,0 +1,150 @@ +package jadx.api; + +import jadx.core.Jadx; +import jadx.core.ProcessClass; +import jadx.core.dex.info.ClassInfo; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.RootNode; +import jadx.core.dex.visitors.IDexTreeVisitor; +import jadx.core.dex.visitors.SaveCode; +import jadx.core.utils.ErrorsCounter; +import jadx.core.utils.exceptions.CodegenException; +import jadx.core.utils.exceptions.DecodeException; +import jadx.core.utils.files.InputFile; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class Decompiler { + private static final Logger LOG = LoggerFactory.getLogger(Decompiler.class); + + private final IJadxArgs args; + private final List inputFiles = new ArrayList(); + + private RootNode root; + private List passes; + private int errorsCount; + + public Decompiler(IJadxArgs jadxArgs) { + this.args = jadxArgs; + this.passes = Jadx.getPassesList(args); + } + + public void processAndSaveAll() { + try { + loadInput(); + parseDex(); + saveAll(); + } catch (Throwable e) { + LOG.error("jadx error:", e); + } finally { + errorsCount = ErrorsCounter.getErrorCount(); + if (errorsCount != 0) + ErrorsCounter.printReport(); + } + } + + public void loadFile(File file) throws IOException, DecodeException { + List files = args.getInput(); + files.clear(); + files.add(file); + + loadInput(); + parseDex(); + } + + public List getClasses() { + List classes = new ArrayList(root.getClasses().size()); + for (ClassNode classNode : root.getClasses()) { + classes.add(new JavaClass(this, classNode)); + } + return classes; + } + + public List getPackages() { + List classes = getClasses(); + Map> map = new HashMap>(); + for (JavaClass javaClass : classes) { + String pkg = javaClass.getPackage(); + List clsList = map.get(pkg); + if (clsList == null) { + clsList = new ArrayList(); + map.put(pkg, clsList); + } + clsList.add(javaClass); + } + List packages = new ArrayList(map.size()); + for (Map.Entry> entry : map.entrySet()) { + packages.add(new JavaPackage(entry.getKey(), entry.getValue())); + } + Collections.sort(packages); + return packages; + } + + public void saveAll() throws InterruptedException { + int threadsCount = args.getThreadsCount(); + LOG.debug("processing threads count: {}", threadsCount); + + ArrayList passList = new ArrayList(passes); + SaveCode savePass = new SaveCode(args); + passList.add(savePass); + + LOG.info("processing ..."); + ExecutorService executor = Executors.newFixedThreadPool(threadsCount); + for (ClassNode cls : root.getClasses()) { + if (cls.getCode() == null) { + ProcessClass job = new ProcessClass(cls, passList); + executor.execute(job); + } else { + try { + savePass.visit(cls); + } catch (CodegenException e) { + LOG.error("Can't save class {}", cls, e); + } + } + } + executor.shutdown(); + executor.awaitTermination(100, TimeUnit.DAYS); + } + + private void loadInput() throws IOException, DecodeException { + for (File file : args.getInput()) { + inputFiles.add(new InputFile(file)); + } + } + + private void parseDex() throws DecodeException { + ClassInfo.clearCache(); + ErrorsCounter.reset(); + + root = new RootNode(args, inputFiles); + LOG.info("loading ..."); + root.load(); + root.init(); + } + + void processClass(ClassNode cls) { + try { + ProcessClass job = new ProcessClass(cls, passes); + LOG.info("processing class {} ...", cls); + job.run(); + } catch (Throwable e) { + LOG.error("Process class error", e); + } + } + + public int getErrorsCount() { + return errorsCount; + } +} diff --git a/src/main/java/jadx/IJadxArgs.java b/jadx-core/src/main/java/jadx/api/IJadxArgs.java similarity index 76% rename from src/main/java/jadx/IJadxArgs.java rename to jadx-core/src/main/java/jadx/api/IJadxArgs.java index 4f2d6667f..a21f38a0c 100644 --- a/src/main/java/jadx/IJadxArgs.java +++ b/jadx-core/src/main/java/jadx/api/IJadxArgs.java @@ -1,11 +1,11 @@ -package jadx; - -import jadx.utils.files.InputFile; +package jadx.api; import java.io.File; import java.util.List; public interface IJadxArgs { + List getInput(); + File getOutDir(); int getThreadsCount(); @@ -14,8 +14,6 @@ public interface IJadxArgs { boolean isRawCFGOutput(); - List getInput(); - boolean isFallbackMode(); boolean isVerbose(); diff --git a/jadx-core/src/main/java/jadx/api/JavaClass.java b/jadx-core/src/main/java/jadx/api/JavaClass.java new file mode 100644 index 000000000..4a986db87 --- /dev/null +++ b/jadx-core/src/main/java/jadx/api/JavaClass.java @@ -0,0 +1,41 @@ +package jadx.api; + +import jadx.core.codegen.CodeWriter; +import jadx.core.dex.nodes.ClassNode; + +public final class JavaClass { + + private final Decompiler decompiler; + private final ClassNode cls; + + JavaClass(Decompiler decompiler, ClassNode classNode) { + this.decompiler = decompiler; + this.cls = classNode; + } + + public String getCode() { + CodeWriter code = cls.getCode(); + if(code == null) { + decompiler.processClass(cls); + code = cls.getCode(); + } + return code != null ? code.toString() : "error processing class"; + } + + public String getFullName() { + return cls.getFullName(); + } + + public String getShortName() { + return cls.getShortName(); + } + + public String getPackage() { + return cls.getPackage(); + } + + @Override + public String toString() { + return getFullName(); + } +} diff --git a/jadx-core/src/main/java/jadx/api/JavaPackage.java b/jadx-core/src/main/java/jadx/api/JavaPackage.java new file mode 100644 index 000000000..5b534c8f0 --- /dev/null +++ b/jadx-core/src/main/java/jadx/api/JavaPackage.java @@ -0,0 +1,31 @@ +package jadx.api; + +import java.util.List; + +public final class JavaPackage implements Comparable { + private final String name; + private final List classes; + + JavaPackage(String name, List classes) { + this.name = name; + this.classes = classes; + } + + public String getName() { + return name; + } + + public List getClasses() { + return classes; + } + + @Override + public String toString() { + return name; + } + + @Override + public int compareTo(JavaPackage o) { + return name.compareTo(o.name); + } +} diff --git a/src/main/java/jadx/Consts.java b/jadx-core/src/main/java/jadx/core/Consts.java similarity index 95% rename from src/main/java/jadx/Consts.java rename to jadx-core/src/main/java/jadx/core/Consts.java index acf8ea0aa..3b61400b5 100644 --- a/src/main/java/jadx/Consts.java +++ b/jadx-core/src/main/java/jadx/core/Consts.java @@ -1,6 +1,6 @@ -package jadx; +package jadx.core; -import jadx.utils.Utils; +import jadx.core.utils.Utils; public class Consts { public static final String JADX_VERSION = Utils.getJadxVersion(); diff --git a/jadx-core/src/main/java/jadx/core/Jadx.java b/jadx-core/src/main/java/jadx/core/Jadx.java new file mode 100644 index 000000000..27ead0533 --- /dev/null +++ b/jadx-core/src/main/java/jadx/core/Jadx.java @@ -0,0 +1,75 @@ +package jadx.core; + +import jadx.api.IJadxArgs; +import jadx.core.codegen.CodeGen; +import jadx.core.dex.visitors.BlockMakerVisitor; +import jadx.core.dex.visitors.ClassModifier; +import jadx.core.dex.visitors.CodeShrinker; +import jadx.core.dex.visitors.ConstInlinerVisitor; +import jadx.core.dex.visitors.DotGraphVisitor; +import jadx.core.dex.visitors.EnumVisitor; +import jadx.core.dex.visitors.FallbackModeVisitor; +import jadx.core.dex.visitors.IDexTreeVisitor; +import jadx.core.dex.visitors.MethodInlinerVisitor; +import jadx.core.dex.visitors.ModVisitor; +import jadx.core.dex.visitors.regions.CheckRegions; +import jadx.core.dex.visitors.regions.CleanRegions; +import jadx.core.dex.visitors.regions.PostRegionVisitor; +import jadx.core.dex.visitors.regions.ProcessVariables; +import jadx.core.dex.visitors.regions.RegionMakerVisitor; +import jadx.core.dex.visitors.typeresolver.FinishTypeResolver; +import jadx.core.dex.visitors.typeresolver.TypeResolver; + +import java.util.ArrayList; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Jadx { + private static final Logger LOG = LoggerFactory.getLogger(Jadx.class); + + static { + if (Consts.DEBUG) + LOG.info("debug enabled"); + if (Jadx.class.desiredAssertionStatus()) + LOG.info("assertions enabled"); + } + + public static List getPassesList(IJadxArgs args) { + List passes = new ArrayList(); + if (args.isFallbackMode()) { + passes.add(new FallbackModeVisitor()); + } else { + passes.add(new BlockMakerVisitor()); + + passes.add(new TypeResolver()); + passes.add(new ConstInlinerVisitor()); + passes.add(new FinishTypeResolver()); + + if (args.isRawCFGOutput()) + passes.add(new DotGraphVisitor(args.getOutDir(), false, true)); + + passes.add(new ModVisitor()); + passes.add(new EnumVisitor()); + + if (args.isCFGOutput()) + passes.add(new DotGraphVisitor(args.getOutDir(), false)); + + passes.add(new RegionMakerVisitor()); + passes.add(new PostRegionVisitor()); + + passes.add(new CodeShrinker()); + passes.add(new ProcessVariables()); + passes.add(new CheckRegions()); + if (args.isCFGOutput()) + passes.add(new DotGraphVisitor(args.getOutDir(), true)); + + passes.add(new MethodInlinerVisitor()); + passes.add(new ClassModifier()); + passes.add(new CleanRegions()); + } + passes.add(new CodeGen(args)); + return passes; + } +} diff --git a/src/main/java/jadx/ProcessClass.java b/jadx-core/src/main/java/jadx/core/ProcessClass.java similarity index 62% rename from src/main/java/jadx/ProcessClass.java rename to jadx-core/src/main/java/jadx/core/ProcessClass.java index e12f48b1e..4f53a59fa 100644 --- a/src/main/java/jadx/ProcessClass.java +++ b/jadx-core/src/main/java/jadx/core/ProcessClass.java @@ -1,22 +1,22 @@ -package jadx; +package jadx.core; -import jadx.dex.nodes.ClassNode; -import jadx.dex.visitors.DepthTraverser; -import jadx.dex.visitors.IDexTreeVisitor; -import jadx.utils.exceptions.DecodeException; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.visitors.DepthTraverser; +import jadx.core.dex.visitors.IDexTreeVisitor; +import jadx.core.utils.exceptions.DecodeException; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class ProcessClass implements Runnable { +public final class ProcessClass implements Runnable { private static final Logger LOG = LoggerFactory.getLogger(ProcessClass.class); private final ClassNode cls; private final List passes; - ProcessClass(ClassNode cls, List passes) { + public ProcessClass(ClassNode cls, List passes) { this.cls = cls; this.passes = passes; } diff --git a/src/main/java/jadx/codegen/AnnotationGen.java b/jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java similarity index 88% rename from src/main/java/jadx/codegen/AnnotationGen.java rename to jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java index fcb0597a6..ea78487d1 100644 --- a/src/main/java/jadx/codegen/AnnotationGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java @@ -1,18 +1,18 @@ -package jadx.codegen; +package jadx.core.codegen; -import jadx.Consts; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.IAttributeNode; -import jadx.dex.attributes.annotations.Annotation; -import jadx.dex.attributes.annotations.AnnotationsList; -import jadx.dex.attributes.annotations.MethodParameters; -import jadx.dex.info.FieldInfo; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.FieldNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.StringUtils; -import jadx.utils.exceptions.JadxRuntimeException; +import jadx.core.Consts; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.IAttributeNode; +import jadx.core.dex.attributes.annotations.Annotation; +import jadx.core.dex.attributes.annotations.AnnotationsList; +import jadx.core.dex.attributes.annotations.MethodParameters; +import jadx.core.dex.info.FieldInfo; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.FieldNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.StringUtils; +import jadx.core.utils.exceptions.JadxRuntimeException; import java.util.Iterator; import java.util.List; diff --git a/src/main/java/jadx/codegen/ClassGen.java b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java similarity index 92% rename from src/main/java/jadx/codegen/ClassGen.java rename to jadx-core/src/main/java/jadx/core/codegen/ClassGen.java index 5d69861e1..58754e6bf 100644 --- a/src/main/java/jadx/codegen/ClassGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java @@ -1,24 +1,24 @@ -package jadx.codegen; +package jadx.core.codegen; -import jadx.Consts; -import jadx.dex.attributes.AttrNode; -import jadx.dex.attributes.AttributeFlag; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.EnumClassAttr; -import jadx.dex.attributes.EnumClassAttr.EnumField; -import jadx.dex.attributes.IAttribute; -import jadx.dex.attributes.SourceFileAttr; -import jadx.dex.info.AccessInfo; -import jadx.dex.info.ClassInfo; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.FieldNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.nodes.parser.FieldValueAttr; -import jadx.utils.ErrorsCounter; -import jadx.utils.Utils; -import jadx.utils.exceptions.CodegenException; +import jadx.core.Consts; +import jadx.core.dex.attributes.AttrNode; +import jadx.core.dex.attributes.AttributeFlag; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.EnumClassAttr; +import jadx.core.dex.attributes.EnumClassAttr.EnumField; +import jadx.core.dex.attributes.IAttribute; +import jadx.core.dex.attributes.SourceFileAttr; +import jadx.core.dex.info.AccessInfo; +import jadx.core.dex.info.ClassInfo; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.FieldNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.nodes.parser.FieldValueAttr; +import jadx.core.utils.ErrorsCounter; +import jadx.core.utils.Utils; +import jadx.core.utils.exceptions.CodegenException; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/jadx/codegen/CodeGen.java b/jadx-core/src/main/java/jadx/core/codegen/CodeGen.java similarity index 57% rename from src/main/java/jadx/codegen/CodeGen.java rename to jadx-core/src/main/java/jadx/core/codegen/CodeGen.java index 833060ceb..aeb4fc813 100644 --- a/src/main/java/jadx/codegen/CodeGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/CodeGen.java @@ -1,9 +1,9 @@ -package jadx.codegen; +package jadx.core.codegen; -import jadx.IJadxArgs; -import jadx.dex.nodes.ClassNode; -import jadx.dex.visitors.AbstractVisitor; -import jadx.utils.exceptions.CodegenException; +import jadx.api.IJadxArgs; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.visitors.AbstractVisitor; +import jadx.core.utils.exceptions.CodegenException; import java.io.File; @@ -21,10 +21,14 @@ public class CodeGen extends AbstractVisitor { public boolean visit(ClassNode cls) throws CodegenException { ClassGen clsGen = new ClassGen(cls, null, isFallbackMode()); CodeWriter clsCode = clsGen.makeClass(); - String fileName = cls.getClassInfo().getFullPath() + ".java"; - if (isFallbackMode()) - fileName += ".jadx"; - clsCode.save(dir, fileName); + + cls.setCode(clsCode); + +// String fileName = cls.getClassInfo().getFullPath() + ".java"; +// if (isFallbackMode()) +// fileName += ".jadx"; +// clsCode.save(dir, fileName); + return false; } diff --git a/src/main/java/jadx/codegen/CodeWriter.java b/jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java similarity index 97% rename from src/main/java/jadx/codegen/CodeWriter.java rename to jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java index 319b1dfa7..cda2a444e 100644 --- a/src/main/java/jadx/codegen/CodeWriter.java +++ b/jadx-core/src/main/java/jadx/core/codegen/CodeWriter.java @@ -1,6 +1,6 @@ -package jadx.codegen; +package jadx.core.codegen; -import jadx.utils.exceptions.JadxRuntimeException; +import jadx.core.utils.exceptions.JadxRuntimeException; import java.io.File; import java.io.PrintWriter; diff --git a/src/main/java/jadx/codegen/InsnGen.java b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java similarity index 92% rename from src/main/java/jadx/codegen/InsnGen.java rename to jadx-core/src/main/java/jadx/core/codegen/InsnGen.java index 71b077136..2d1d0973b 100644 --- a/src/main/java/jadx/codegen/InsnGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java @@ -1,33 +1,33 @@ -package jadx.codegen; +package jadx.core.codegen; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.IAttribute; -import jadx.dex.attributes.MethodInlineAttr; -import jadx.dex.info.ClassInfo; -import jadx.dex.info.FieldInfo; -import jadx.dex.info.MethodInfo; -import jadx.dex.instructions.ArithNode; -import jadx.dex.instructions.ArithOp; -import jadx.dex.instructions.FillArrayOp; -import jadx.dex.instructions.GotoNode; -import jadx.dex.instructions.IfNode; -import jadx.dex.instructions.IndexInsnNode; -import jadx.dex.instructions.InvokeNode; -import jadx.dex.instructions.InvokeType; -import jadx.dex.instructions.SwitchNode; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.InsnWrapArg; -import jadx.dex.instructions.args.LiteralArg; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.instructions.mods.ConstructorInsn; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.FieldNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.nodes.RootNode; -import jadx.utils.StringUtils; -import jadx.utils.exceptions.CodegenException; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.IAttribute; +import jadx.core.dex.attributes.MethodInlineAttr; +import jadx.core.dex.info.ClassInfo; +import jadx.core.dex.info.FieldInfo; +import jadx.core.dex.info.MethodInfo; +import jadx.core.dex.instructions.ArithNode; +import jadx.core.dex.instructions.ArithOp; +import jadx.core.dex.instructions.FillArrayOp; +import jadx.core.dex.instructions.GotoNode; +import jadx.core.dex.instructions.IfNode; +import jadx.core.dex.instructions.IndexInsnNode; +import jadx.core.dex.instructions.InvokeNode; +import jadx.core.dex.instructions.InvokeType; +import jadx.core.dex.instructions.SwitchNode; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.InsnWrapArg; +import jadx.core.dex.instructions.args.LiteralArg; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.instructions.mods.ConstructorInsn; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.FieldNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.nodes.RootNode; +import jadx.core.utils.StringUtils; +import jadx.core.utils.exceptions.CodegenException; import java.util.ArrayList; import java.util.EnumSet; diff --git a/src/main/java/jadx/codegen/MethodGen.java b/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java similarity index 89% rename from src/main/java/jadx/codegen/MethodGen.java rename to jadx-core/src/main/java/jadx/core/codegen/MethodGen.java index 86edd44ba..c1d7d8315 100644 --- a/src/main/java/jadx/codegen/MethodGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java @@ -1,24 +1,24 @@ -package jadx.codegen; +package jadx.core.codegen; -import jadx.Consts; -import jadx.dex.attributes.AttributeFlag; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.AttributesList; -import jadx.dex.attributes.JadxErrorAttr; -import jadx.dex.attributes.annotations.MethodParameters; -import jadx.dex.info.AccessInfo; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.trycatch.CatchAttr; -import jadx.dex.visitors.DepthTraverser; -import jadx.dex.visitors.FallbackModeVisitor; -import jadx.utils.ErrorsCounter; -import jadx.utils.InsnUtils; -import jadx.utils.Utils; -import jadx.utils.exceptions.CodegenException; -import jadx.utils.exceptions.DecodeException; +import jadx.core.Consts; +import jadx.core.dex.attributes.AttributeFlag; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.AttributesList; +import jadx.core.dex.attributes.JadxErrorAttr; +import jadx.core.dex.attributes.annotations.MethodParameters; +import jadx.core.dex.info.AccessInfo; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.trycatch.CatchAttr; +import jadx.core.dex.visitors.DepthTraverser; +import jadx.core.dex.visitors.FallbackModeVisitor; +import jadx.core.utils.ErrorsCounter; +import jadx.core.utils.InsnUtils; +import jadx.core.utils.Utils; +import jadx.core.utils.exceptions.CodegenException; +import jadx.core.utils.exceptions.DecodeException; import java.util.HashSet; import java.util.Iterator; @@ -177,7 +177,7 @@ public class MethodGen { /** * Put variable declaration and return variable name (used for assignments) - * + * * @param arg * register variable * @return variable name @@ -264,13 +264,13 @@ public class MethodGen { private void makeFallbackMethod(CodeWriter code, MethodNode mth) { if (mth.getInstructions() == null) { - // load original instructions + // loadFile original instructions try { mth.load(); DepthTraverser.visit(new FallbackModeVisitor(), mth); } catch (DecodeException e) { // ignore - code.startLine("Can't load method instructions"); + code.startLine("Can't loadFile method instructions"); return; } } diff --git a/src/main/java/jadx/codegen/RegionGen.java b/jadx-core/src/main/java/jadx/core/codegen/RegionGen.java similarity index 85% rename from src/main/java/jadx/codegen/RegionGen.java rename to jadx-core/src/main/java/jadx/core/codegen/RegionGen.java index 7fc582638..5b0a75e5a 100644 --- a/src/main/java/jadx/codegen/RegionGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/RegionGen.java @@ -1,33 +1,33 @@ -package jadx.codegen; +package jadx.core.codegen; -import jadx.dex.attributes.AttributeFlag; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.DeclareVariableAttr; -import jadx.dex.attributes.ForceReturnAttr; -import jadx.dex.attributes.IAttribute; -import jadx.dex.instructions.IfOp; -import jadx.dex.instructions.SwitchNode; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.LiteralArg; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.IBlock; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.regions.IfCondition; -import jadx.dex.regions.IfRegion; -import jadx.dex.regions.LoopRegion; -import jadx.dex.regions.Region; -import jadx.dex.regions.SwitchRegion; -import jadx.dex.regions.SynchronizedRegion; -import jadx.dex.trycatch.CatchAttr; -import jadx.dex.trycatch.ExceptionHandler; -import jadx.dex.trycatch.TryCatchBlock; -import jadx.utils.ErrorsCounter; -import jadx.utils.RegionUtils; -import jadx.utils.exceptions.CodegenException; +import jadx.core.dex.attributes.AttributeFlag; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.DeclareVariableAttr; +import jadx.core.dex.attributes.ForceReturnAttr; +import jadx.core.dex.attributes.IAttribute; +import jadx.core.dex.instructions.IfOp; +import jadx.core.dex.instructions.SwitchNode; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.LiteralArg; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.IBlock; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.regions.IfCondition; +import jadx.core.dex.regions.IfRegion; +import jadx.core.dex.regions.LoopRegion; +import jadx.core.dex.regions.Region; +import jadx.core.dex.regions.SwitchRegion; +import jadx.core.dex.regions.SynchronizedRegion; +import jadx.core.dex.trycatch.CatchAttr; +import jadx.core.dex.trycatch.ExceptionHandler; +import jadx.core.dex.trycatch.TryCatchBlock; +import jadx.core.utils.ErrorsCounter; +import jadx.core.utils.RegionUtils; +import jadx.core.utils.exceptions.CodegenException; import java.util.List; diff --git a/src/main/java/jadx/codegen/TypeGen.java b/jadx-core/src/main/java/jadx/core/codegen/TypeGen.java similarity index 91% rename from src/main/java/jadx/codegen/TypeGen.java rename to jadx-core/src/main/java/jadx/core/codegen/TypeGen.java index 45a8f0371..5e02b4f39 100644 --- a/src/main/java/jadx/codegen/TypeGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/TypeGen.java @@ -1,10 +1,10 @@ -package jadx.codegen; +package jadx.core.codegen; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.PrimitiveType; -import jadx.utils.StringUtils; -import jadx.utils.Utils; -import jadx.utils.exceptions.JadxRuntimeException; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.PrimitiveType; +import jadx.core.utils.StringUtils; +import jadx.core.utils.Utils; +import jadx.core.utils.exceptions.JadxRuntimeException; public class TypeGen { @@ -35,7 +35,7 @@ public class TypeGen { /** * Convert literal value to string according to value type - * + * * @throws JadxRuntimeException * for incorrect type or literal value */ diff --git a/src/main/java/jadx/deobf/NameMapper.java b/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java similarity index 97% rename from src/main/java/jadx/deobf/NameMapper.java rename to jadx-core/src/main/java/jadx/core/deobf/NameMapper.java index 365dd7074..37d29fcee 100644 --- a/src/main/java/jadx/deobf/NameMapper.java +++ b/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java @@ -1,4 +1,4 @@ -package jadx.deobf; +package jadx.core.deobf; import java.util.Arrays; import java.util.HashSet; diff --git a/src/main/java/jadx/dex/attributes/AttrNode.java b/jadx-core/src/main/java/jadx/core/dex/attributes/AttrNode.java similarity index 88% rename from src/main/java/jadx/dex/attributes/AttrNode.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/AttrNode.java index 27e03600c..47e134d9a 100644 --- a/src/main/java/jadx/dex/attributes/AttrNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/AttrNode.java @@ -1,4 +1,4 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; public abstract class AttrNode implements IAttributeNode { diff --git a/src/main/java/jadx/dex/attributes/AttributeFlag.java b/jadx-core/src/main/java/jadx/core/dex/attributes/AttributeFlag.java similarity index 88% rename from src/main/java/jadx/dex/attributes/AttributeFlag.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/AttributeFlag.java index ffadfe840..a06bee1e0 100644 --- a/src/main/java/jadx/dex/attributes/AttributeFlag.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/AttributeFlag.java @@ -1,4 +1,4 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; public enum AttributeFlag { TRY_ENTER, diff --git a/src/main/java/jadx/dex/attributes/AttributeType.java b/jadx-core/src/main/java/jadx/core/dex/attributes/AttributeType.java similarity index 96% rename from src/main/java/jadx/dex/attributes/AttributeType.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/AttributeType.java index 4717e4c3d..dfea207c7 100644 --- a/src/main/java/jadx/dex/attributes/AttributeType.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/AttributeType.java @@ -1,4 +1,4 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; public enum AttributeType { diff --git a/src/main/java/jadx/dex/attributes/AttributesList.java b/jadx-core/src/main/java/jadx/core/dex/attributes/AttributesList.java similarity index 96% rename from src/main/java/jadx/dex/attributes/AttributesList.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/AttributesList.java index 825ff0c75..666120662 100644 --- a/src/main/java/jadx/dex/attributes/AttributesList.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/AttributesList.java @@ -1,8 +1,8 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; -import jadx.dex.attributes.annotations.Annotation; -import jadx.dex.attributes.annotations.AnnotationsList; -import jadx.utils.Utils; +import jadx.core.dex.attributes.annotations.Annotation; +import jadx.core.dex.attributes.annotations.AnnotationsList; +import jadx.core.utils.Utils; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/jadx/dex/attributes/BlockRegState.java b/jadx-core/src/main/java/jadx/core/dex/attributes/BlockRegState.java similarity index 86% rename from src/main/java/jadx/dex/attributes/BlockRegState.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/BlockRegState.java index 35729c56d..8b01f0643 100644 --- a/src/main/java/jadx/dex/attributes/BlockRegState.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/BlockRegState.java @@ -1,8 +1,8 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.instructions.args.TypedVar; -import jadx.dex.nodes.MethodNode; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.instructions.args.TypedVar; +import jadx.core.dex.nodes.MethodNode; public final class BlockRegState { diff --git a/src/main/java/jadx/dex/attributes/DeclareVariableAttr.java b/jadx-core/src/main/java/jadx/core/dex/attributes/DeclareVariableAttr.java similarity index 86% rename from src/main/java/jadx/dex/attributes/DeclareVariableAttr.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/DeclareVariableAttr.java index 0f26fb2cb..2a500d455 100644 --- a/src/main/java/jadx/dex/attributes/DeclareVariableAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/DeclareVariableAttr.java @@ -1,7 +1,7 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; -import jadx.dex.instructions.args.RegisterArg; -import jadx.utils.Utils; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.utils.Utils; import java.util.List; diff --git a/src/main/java/jadx/dex/attributes/EnumClassAttr.java b/jadx-core/src/main/java/jadx/core/dex/attributes/EnumClassAttr.java similarity index 87% rename from src/main/java/jadx/dex/attributes/EnumClassAttr.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/EnumClassAttr.java index b5cf0224d..353fc5115 100644 --- a/src/main/java/jadx/dex/attributes/EnumClassAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/EnumClassAttr.java @@ -1,9 +1,9 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.Utils; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.Utils; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/jadx/dex/attributes/ForceReturnAttr.java b/jadx-core/src/main/java/jadx/core/dex/attributes/ForceReturnAttr.java similarity index 81% rename from src/main/java/jadx/dex/attributes/ForceReturnAttr.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/ForceReturnAttr.java index 516aa3396..b0579368f 100644 --- a/src/main/java/jadx/dex/attributes/ForceReturnAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/ForceReturnAttr.java @@ -1,7 +1,7 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; -import jadx.dex.nodes.InsnNode; -import jadx.utils.Utils; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.utils.Utils; public class ForceReturnAttr implements IAttribute { diff --git a/src/main/java/jadx/dex/attributes/IAttribute.java b/jadx-core/src/main/java/jadx/core/dex/attributes/IAttribute.java similarity index 64% rename from src/main/java/jadx/dex/attributes/IAttribute.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/IAttribute.java index c70aede31..a968d723e 100644 --- a/src/main/java/jadx/dex/attributes/IAttribute.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/IAttribute.java @@ -1,4 +1,4 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; public interface IAttribute { diff --git a/src/main/java/jadx/dex/attributes/IAttributeNode.java b/jadx-core/src/main/java/jadx/core/dex/attributes/IAttributeNode.java similarity index 67% rename from src/main/java/jadx/dex/attributes/IAttributeNode.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/IAttributeNode.java index a04f4116b..885e19f76 100644 --- a/src/main/java/jadx/dex/attributes/IAttributeNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/IAttributeNode.java @@ -1,4 +1,4 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; public interface IAttributeNode { diff --git a/src/main/java/jadx/dex/attributes/JadxErrorAttr.java b/jadx-core/src/main/java/jadx/core/dex/attributes/JadxErrorAttr.java similarity index 91% rename from src/main/java/jadx/dex/attributes/JadxErrorAttr.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/JadxErrorAttr.java index 222aee99e..69d6f7de5 100644 --- a/src/main/java/jadx/dex/attributes/JadxErrorAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/JadxErrorAttr.java @@ -1,6 +1,6 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; -import jadx.utils.Utils; +import jadx.core.utils.Utils; public class JadxErrorAttr implements IAttribute { diff --git a/src/main/java/jadx/dex/attributes/JumpAttribute.java b/jadx-core/src/main/java/jadx/core/dex/attributes/JumpAttribute.java similarity index 93% rename from src/main/java/jadx/dex/attributes/JumpAttribute.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/JumpAttribute.java index 147988bfe..ff9fb0e81 100644 --- a/src/main/java/jadx/dex/attributes/JumpAttribute.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/JumpAttribute.java @@ -1,6 +1,6 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; -import jadx.utils.InsnUtils; +import jadx.core.utils.InsnUtils; public class JumpAttribute implements IAttribute { diff --git a/src/main/java/jadx/dex/attributes/LoopAttr.java b/jadx-core/src/main/java/jadx/core/dex/attributes/LoopAttr.java similarity index 92% rename from src/main/java/jadx/dex/attributes/LoopAttr.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/LoopAttr.java index 515f92930..fe1e60398 100644 --- a/src/main/java/jadx/dex/attributes/LoopAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/LoopAttr.java @@ -1,7 +1,7 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; -import jadx.dex.nodes.BlockNode; -import jadx.utils.BlockUtils; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.utils.BlockUtils; import java.util.Collections; import java.util.HashSet; diff --git a/src/main/java/jadx/dex/attributes/MethodInlineAttr.java b/jadx-core/src/main/java/jadx/core/dex/attributes/MethodInlineAttr.java similarity index 83% rename from src/main/java/jadx/dex/attributes/MethodInlineAttr.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/MethodInlineAttr.java index d91c95cf0..32939b91d 100644 --- a/src/main/java/jadx/dex/attributes/MethodInlineAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/MethodInlineAttr.java @@ -1,6 +1,6 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; -import jadx.dex.nodes.InsnNode; +import jadx.core.dex.nodes.InsnNode; public class MethodInlineAttr implements IAttribute { diff --git a/src/main/java/jadx/dex/attributes/SourceFileAttr.java b/jadx-core/src/main/java/jadx/core/dex/attributes/SourceFileAttr.java similarity index 91% rename from src/main/java/jadx/dex/attributes/SourceFileAttr.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/SourceFileAttr.java index 7fa052421..0eace7489 100644 --- a/src/main/java/jadx/dex/attributes/SourceFileAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/SourceFileAttr.java @@ -1,4 +1,4 @@ -package jadx.dex.attributes; +package jadx.core.dex.attributes; public class SourceFileAttr implements IAttribute { diff --git a/src/main/java/jadx/dex/attributes/annotations/Annotation.java b/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/Annotation.java similarity index 89% rename from src/main/java/jadx/dex/attributes/annotations/Annotation.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/annotations/Annotation.java index 68bd291cb..20e0a2033 100644 --- a/src/main/java/jadx/dex/attributes/annotations/Annotation.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/Annotation.java @@ -1,6 +1,6 @@ -package jadx.dex.attributes.annotations; +package jadx.core.dex.attributes.annotations; -import jadx.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.ArgType; import java.util.Map; diff --git a/src/main/java/jadx/dex/attributes/annotations/AnnotationsList.java b/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java similarity index 81% rename from src/main/java/jadx/dex/attributes/annotations/AnnotationsList.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java index 70113be27..02a77ed78 100644 --- a/src/main/java/jadx/dex/attributes/annotations/AnnotationsList.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/AnnotationsList.java @@ -1,8 +1,8 @@ -package jadx.dex.attributes.annotations; +package jadx.core.dex.attributes.annotations; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.IAttribute; -import jadx.utils.Utils; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.IAttribute; +import jadx.core.utils.Utils; import java.util.Collection; import java.util.HashMap; diff --git a/src/main/java/jadx/dex/attributes/annotations/MethodParameters.java b/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/MethodParameters.java similarity index 75% rename from src/main/java/jadx/dex/attributes/annotations/MethodParameters.java rename to jadx-core/src/main/java/jadx/core/dex/attributes/annotations/MethodParameters.java index 514de8770..4624f8fb8 100644 --- a/src/main/java/jadx/dex/attributes/annotations/MethodParameters.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/annotations/MethodParameters.java @@ -1,8 +1,8 @@ -package jadx.dex.attributes.annotations; +package jadx.core.dex.attributes.annotations; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.IAttribute; -import jadx.utils.Utils; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.IAttribute; +import jadx.core.utils.Utils; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/jadx/dex/info/AccessInfo.java b/jadx-core/src/main/java/jadx/core/dex/info/AccessInfo.java similarity index 98% rename from src/main/java/jadx/dex/info/AccessInfo.java rename to jadx-core/src/main/java/jadx/core/dex/info/AccessInfo.java index a3196e418..1935bd39f 100644 --- a/src/main/java/jadx/dex/info/AccessInfo.java +++ b/jadx-core/src/main/java/jadx/core/dex/info/AccessInfo.java @@ -1,6 +1,6 @@ -package jadx.dex.info; +package jadx.core.dex.info; -import jadx.Consts; +import jadx.core.Consts; import com.android.dx.rop.code.AccessFlags; diff --git a/src/main/java/jadx/dex/info/ClassInfo.java b/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java similarity index 95% rename from src/main/java/jadx/dex/info/ClassInfo.java rename to jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java index 9f9d08ba1..3ae67143f 100644 --- a/src/main/java/jadx/dex/info/ClassInfo.java +++ b/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java @@ -1,9 +1,9 @@ -package jadx.dex.info; +package jadx.core.dex.info; -import jadx.Consts; -import jadx.deobf.NameMapper; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.nodes.DexNode; +import jadx.core.Consts; +import jadx.core.deobf.NameMapper; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.nodes.DexNode; import java.io.File; import java.util.Map; diff --git a/src/main/java/jadx/dex/info/FieldInfo.java b/jadx-core/src/main/java/jadx/core/dex/info/FieldInfo.java similarity index 88% rename from src/main/java/jadx/dex/info/FieldInfo.java rename to jadx-core/src/main/java/jadx/core/dex/info/FieldInfo.java index 26b0f6fae..2bf4a9ac8 100644 --- a/src/main/java/jadx/dex/info/FieldInfo.java +++ b/jadx-core/src/main/java/jadx/core/dex/info/FieldInfo.java @@ -1,7 +1,7 @@ -package jadx.dex.info; +package jadx.core.dex.info; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.nodes.DexNode; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.nodes.DexNode; import com.android.dx.io.FieldId; diff --git a/src/main/java/jadx/dex/info/MethodInfo.java b/jadx-core/src/main/java/jadx/core/dex/info/MethodInfo.java similarity index 93% rename from src/main/java/jadx/dex/info/MethodInfo.java rename to jadx-core/src/main/java/jadx/core/dex/info/MethodInfo.java index ee8831b95..010c852b2 100644 --- a/src/main/java/jadx/dex/info/MethodInfo.java +++ b/jadx-core/src/main/java/jadx/core/dex/info/MethodInfo.java @@ -1,9 +1,9 @@ -package jadx.dex.info; +package jadx.core.dex.info; -import jadx.codegen.TypeGen; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.nodes.DexNode; -import jadx.utils.Utils; +import jadx.core.codegen.TypeGen; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.nodes.DexNode; +import jadx.core.utils.Utils; import java.util.List; diff --git a/src/main/java/jadx/dex/instructions/ArithNode.java b/jadx-core/src/main/java/jadx/core/dex/instructions/ArithNode.java similarity index 84% rename from src/main/java/jadx/dex/instructions/ArithNode.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/ArithNode.java index faa8d00a3..e24af8762 100644 --- a/src/main/java/jadx/dex/instructions/ArithNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/ArithNode.java @@ -1,10 +1,10 @@ -package jadx.dex.instructions; +package jadx.core.dex.instructions; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.InsnNode; -import jadx.utils.InsnUtils; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.utils.InsnUtils; import com.android.dx.io.instructions.DecodedInstruction; diff --git a/src/main/java/jadx/dex/instructions/ArithOp.java b/jadx-core/src/main/java/jadx/core/dex/instructions/ArithOp.java similarity index 89% rename from src/main/java/jadx/dex/instructions/ArithOp.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/ArithOp.java index efd40c27d..fab5fb6bf 100644 --- a/src/main/java/jadx/dex/instructions/ArithOp.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/ArithOp.java @@ -1,4 +1,4 @@ -package jadx.dex.instructions; +package jadx.core.dex.instructions; public enum ArithOp { ADD("+"), diff --git a/src/main/java/jadx/dex/instructions/FillArrayOp.java b/jadx-core/src/main/java/jadx/core/dex/instructions/FillArrayOp.java similarity index 80% rename from src/main/java/jadx/dex/instructions/FillArrayOp.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/FillArrayOp.java index 34dd18704..48959ba79 100644 --- a/src/main/java/jadx/dex/instructions/FillArrayOp.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/FillArrayOp.java @@ -1,9 +1,9 @@ -package jadx.dex.instructions; +package jadx.core.dex.instructions; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.PrimitiveType; -import jadx.dex.nodes.InsnNode; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.PrimitiveType; +import jadx.core.dex.nodes.InsnNode; import com.android.dx.io.instructions.FillArrayDataPayloadDecodedInstruction; diff --git a/src/main/java/jadx/dex/instructions/GotoNode.java b/jadx-core/src/main/java/jadx/core/dex/instructions/GotoNode.java similarity index 78% rename from src/main/java/jadx/dex/instructions/GotoNode.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/GotoNode.java index 883d0c1e4..9a0f3f13d 100644 --- a/src/main/java/jadx/dex/instructions/GotoNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/GotoNode.java @@ -1,7 +1,7 @@ -package jadx.dex.instructions; +package jadx.core.dex.instructions; -import jadx.dex.nodes.InsnNode; -import jadx.utils.InsnUtils; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.utils.InsnUtils; public class GotoNode extends InsnNode { diff --git a/src/main/java/jadx/dex/instructions/IfNode.java b/jadx-core/src/main/java/jadx/core/dex/instructions/IfNode.java similarity index 84% rename from src/main/java/jadx/dex/instructions/IfNode.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/IfNode.java index 66b63e88c..b8f812b2c 100644 --- a/src/main/java/jadx/dex/instructions/IfNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/IfNode.java @@ -1,10 +1,10 @@ -package jadx.dex.instructions; +package jadx.core.dex.instructions; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.LiteralArg; -import jadx.dex.instructions.args.PrimitiveType; -import jadx.utils.InsnUtils; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.LiteralArg; +import jadx.core.dex.instructions.args.PrimitiveType; +import jadx.core.utils.InsnUtils; import com.android.dx.io.instructions.DecodedInstruction; diff --git a/src/main/java/jadx/dex/instructions/IfOp.java b/jadx-core/src/main/java/jadx/core/dex/instructions/IfOp.java similarity index 85% rename from src/main/java/jadx/dex/instructions/IfOp.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/IfOp.java index 55372c3b2..12aff8644 100644 --- a/src/main/java/jadx/dex/instructions/IfOp.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/IfOp.java @@ -1,6 +1,6 @@ -package jadx.dex.instructions; +package jadx.core.dex.instructions; -import jadx.utils.exceptions.JadxRuntimeException; +import jadx.core.utils.exceptions.JadxRuntimeException; public enum IfOp { EQ("=="), diff --git a/src/main/java/jadx/dex/instructions/IndexInsnNode.java b/jadx-core/src/main/java/jadx/core/dex/instructions/IndexInsnNode.java similarity index 76% rename from src/main/java/jadx/dex/instructions/IndexInsnNode.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/IndexInsnNode.java index 62ee6c38d..a6a3f74c5 100644 --- a/src/main/java/jadx/dex/instructions/IndexInsnNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/IndexInsnNode.java @@ -1,7 +1,7 @@ -package jadx.dex.instructions; +package jadx.core.dex.instructions; -import jadx.dex.nodes.InsnNode; -import jadx.utils.InsnUtils; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.utils.InsnUtils; public class IndexInsnNode extends InsnNode { diff --git a/src/main/java/jadx/dex/instructions/InsnDecoder.java b/jadx-core/src/main/java/jadx/core/dex/instructions/InsnDecoder.java similarity index 97% rename from src/main/java/jadx/dex/instructions/InsnDecoder.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/InsnDecoder.java index b387ee48b..5afabc4b8 100644 --- a/src/main/java/jadx/dex/instructions/InsnDecoder.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/InsnDecoder.java @@ -1,15 +1,15 @@ -package jadx.dex.instructions; +package jadx.core.dex.instructions; -import jadx.dex.info.FieldInfo; -import jadx.dex.info.MethodInfo; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.PrimitiveType; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.DexNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.exceptions.DecodeException; +import jadx.core.dex.info.FieldInfo; +import jadx.core.dex.info.MethodInfo; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.PrimitiveType; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.DexNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.exceptions.DecodeException; import com.android.dx.io.Code; import com.android.dx.io.OpcodeInfo; diff --git a/src/main/java/jadx/dex/instructions/InsnType.java b/jadx-core/src/main/java/jadx/core/dex/instructions/InsnType.java similarity index 94% rename from src/main/java/jadx/dex/instructions/InsnType.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/InsnType.java index 4684c8519..8331b834e 100644 --- a/src/main/java/jadx/dex/instructions/InsnType.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/InsnType.java @@ -1,4 +1,4 @@ -package jadx.dex.instructions; +package jadx.core.dex.instructions; public enum InsnType { NOP, // replacement for removed instructions diff --git a/src/main/java/jadx/dex/instructions/InvokeNode.java b/jadx-core/src/main/java/jadx/core/dex/instructions/InvokeNode.java similarity index 81% rename from src/main/java/jadx/dex/instructions/InvokeNode.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/InvokeNode.java index f9d5822ef..0339dab7b 100644 --- a/src/main/java/jadx/dex/instructions/InvokeNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/InvokeNode.java @@ -1,11 +1,11 @@ -package jadx.dex.instructions; +package jadx.core.dex.instructions; -import jadx.dex.info.MethodInfo; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.nodes.InsnNode; -import jadx.utils.InsnUtils; -import jadx.utils.Utils; +import jadx.core.dex.info.MethodInfo; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.utils.InsnUtils; +import jadx.core.utils.Utils; import com.android.dx.io.instructions.DecodedInstruction; diff --git a/src/main/java/jadx/dex/instructions/InvokeType.java b/jadx-core/src/main/java/jadx/core/dex/instructions/InvokeType.java similarity index 67% rename from src/main/java/jadx/dex/instructions/InvokeType.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/InvokeType.java index 726d491ee..44ac02514 100644 --- a/src/main/java/jadx/dex/instructions/InvokeType.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/InvokeType.java @@ -1,4 +1,4 @@ -package jadx.dex.instructions; +package jadx.core.dex.instructions; public enum InvokeType { STATIC, diff --git a/src/main/java/jadx/dex/instructions/SwitchNode.java b/jadx-core/src/main/java/jadx/core/dex/instructions/SwitchNode.java similarity index 85% rename from src/main/java/jadx/dex/instructions/SwitchNode.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/SwitchNode.java index febfbbc09..82cd9b648 100644 --- a/src/main/java/jadx/dex/instructions/SwitchNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/SwitchNode.java @@ -1,8 +1,8 @@ -package jadx.dex.instructions; +package jadx.core.dex.instructions; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.nodes.InsnNode; -import jadx.utils.InsnUtils; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.utils.InsnUtils; import java.util.Arrays; diff --git a/src/main/java/jadx/dex/instructions/args/ArgType.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java similarity index 99% rename from src/main/java/jadx/dex/instructions/args/ArgType.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java index ab3838d63..795b87138 100644 --- a/src/main/java/jadx/dex/instructions/args/ArgType.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java @@ -1,7 +1,7 @@ -package jadx.dex.instructions.args; +package jadx.core.dex.instructions.args; -import jadx.Consts; -import jadx.utils.Utils; +import jadx.core.Consts; +import jadx.core.utils.Utils; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/jadx/dex/instructions/args/InsnArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java similarity index 93% rename from src/main/java/jadx/dex/instructions/args/InsnArg.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java index 1ad168aa2..f47eb74f1 100644 --- a/src/main/java/jadx/dex/instructions/args/InsnArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java @@ -1,7 +1,7 @@ -package jadx.dex.instructions.args; +package jadx.core.dex.instructions.args; -import jadx.dex.nodes.InsnNode; -import jadx.utils.InsnUtils; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.utils.InsnUtils; import com.android.dx.io.instructions.DecodedInstruction; diff --git a/src/main/java/jadx/dex/instructions/args/InsnWrapArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnWrapArg.java similarity index 89% rename from src/main/java/jadx/dex/instructions/args/InsnWrapArg.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnWrapArg.java index 1c38e01e7..d1a615644 100644 --- a/src/main/java/jadx/dex/instructions/args/InsnWrapArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnWrapArg.java @@ -1,6 +1,6 @@ -package jadx.dex.instructions.args; +package jadx.core.dex.instructions.args; -import jadx.dex.nodes.InsnNode; +import jadx.core.dex.nodes.InsnNode; public class InsnWrapArg extends InsnArg { diff --git a/src/main/java/jadx/dex/instructions/args/LiteralArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/LiteralArg.java similarity index 87% rename from src/main/java/jadx/dex/instructions/args/LiteralArg.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/args/LiteralArg.java index 1ced310dd..5ef70ffbe 100644 --- a/src/main/java/jadx/dex/instructions/args/LiteralArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/LiteralArg.java @@ -1,7 +1,7 @@ -package jadx.dex.instructions.args; +package jadx.core.dex.instructions.args; -import jadx.codegen.TypeGen; -import jadx.utils.exceptions.JadxRuntimeException; +import jadx.core.codegen.TypeGen; +import jadx.core.utils.exceptions.JadxRuntimeException; public class LiteralArg extends InsnArg { diff --git a/src/main/java/jadx/dex/instructions/args/PrimitiveType.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/PrimitiveType.java similarity index 95% rename from src/main/java/jadx/dex/instructions/args/PrimitiveType.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/args/PrimitiveType.java index dca48f734..a43549bfd 100644 --- a/src/main/java/jadx/dex/instructions/args/PrimitiveType.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/PrimitiveType.java @@ -1,4 +1,4 @@ -package jadx.dex.instructions.args; +package jadx.core.dex.instructions.args; public enum PrimitiveType { BOOLEAN("Z", "boolean"), diff --git a/src/main/java/jadx/dex/instructions/args/RegisterArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java similarity index 90% rename from src/main/java/jadx/dex/instructions/args/RegisterArg.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java index 51b603ec3..4e8585859 100644 --- a/src/main/java/jadx/dex/instructions/args/RegisterArg.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/RegisterArg.java @@ -1,9 +1,9 @@ -package jadx.dex.instructions.args; +package jadx.core.dex.instructions.args; -import jadx.dex.instructions.IndexInsnNode; -import jadx.dex.instructions.InsnType; -import jadx.dex.nodes.InsnNode; -import jadx.dex.visitors.InstructionRemover; +import jadx.core.dex.instructions.IndexInsnNode; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.visitors.InstructionRemover; public class RegisterArg extends InsnArg { protected final int regNum; @@ -42,7 +42,7 @@ public class RegisterArg extends InsnArg { /** * Return constant value from register assign or null if not constant - * + * * @return LiteralArg, String or ArgType */ public Object getConstValue() { diff --git a/src/main/java/jadx/dex/instructions/args/Typed.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/Typed.java similarity index 95% rename from src/main/java/jadx/dex/instructions/args/Typed.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/args/Typed.java index 8496d82e9..bc6815fcd 100644 --- a/src/main/java/jadx/dex/instructions/args/Typed.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/Typed.java @@ -1,4 +1,4 @@ -package jadx.dex.instructions.args; +package jadx.core.dex.instructions.args; public abstract class Typed { diff --git a/src/main/java/jadx/dex/instructions/args/TypedVar.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/TypedVar.java similarity index 97% rename from src/main/java/jadx/dex/instructions/args/TypedVar.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/args/TypedVar.java index 60e65c639..fb44d42a9 100644 --- a/src/main/java/jadx/dex/instructions/args/TypedVar.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/TypedVar.java @@ -1,4 +1,4 @@ -package jadx.dex.instructions.args; +package jadx.core.dex.instructions.args; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/jadx/dex/instructions/mods/ConstructorInsn.java b/jadx-core/src/main/java/jadx/core/dex/instructions/mods/ConstructorInsn.java similarity index 82% rename from src/main/java/jadx/dex/instructions/mods/ConstructorInsn.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/mods/ConstructorInsn.java index 3b9d9fb3e..aff9d8cda 100644 --- a/src/main/java/jadx/dex/instructions/mods/ConstructorInsn.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/mods/ConstructorInsn.java @@ -1,12 +1,12 @@ -package jadx.dex.instructions.mods; +package jadx.core.dex.instructions.mods; -import jadx.dex.info.ClassInfo; -import jadx.dex.info.MethodInfo; -import jadx.dex.instructions.InsnType; -import jadx.dex.instructions.InvokeNode; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; +import jadx.core.dex.info.ClassInfo; +import jadx.core.dex.info.MethodInfo; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.instructions.InvokeNode; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; public class ConstructorInsn extends InsnNode { diff --git a/src/main/java/jadx/dex/instructions/mods/TernaryInsn.java b/jadx-core/src/main/java/jadx/core/dex/instructions/mods/TernaryInsn.java similarity index 58% rename from src/main/java/jadx/dex/instructions/mods/TernaryInsn.java rename to jadx-core/src/main/java/jadx/core/dex/instructions/mods/TernaryInsn.java index b24c77d2c..05d41fe86 100644 --- a/src/main/java/jadx/dex/instructions/mods/TernaryInsn.java +++ b/jadx-core/src/main/java/jadx/core/dex/instructions/mods/TernaryInsn.java @@ -1,12 +1,12 @@ -package jadx.dex.instructions.mods; +package jadx.core.dex.instructions.mods; -import jadx.dex.instructions.IfNode; -import jadx.dex.instructions.IfOp; -import jadx.dex.instructions.InsnType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.nodes.InsnNode; -import jadx.utils.InsnUtils; -import jadx.utils.Utils; +import jadx.core.dex.instructions.IfNode; +import jadx.core.dex.instructions.IfOp; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.utils.InsnUtils; +import jadx.core.utils.Utils; public class TernaryInsn extends IfNode { diff --git a/src/main/java/jadx/dex/nodes/BlockNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/BlockNode.java similarity index 93% rename from src/main/java/jadx/dex/nodes/BlockNode.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/BlockNode.java index 8943d8956..4e69512cf 100644 --- a/src/main/java/jadx/dex/nodes/BlockNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/BlockNode.java @@ -1,10 +1,10 @@ -package jadx.dex.nodes; +package jadx.core.dex.nodes; -import jadx.dex.attributes.AttrNode; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.BlockRegState; -import jadx.dex.attributes.LoopAttr; -import jadx.utils.InsnUtils; +import jadx.core.dex.attributes.AttrNode; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.BlockRegState; +import jadx.core.dex.attributes.LoopAttr; +import jadx.core.utils.InsnUtils; import java.util.ArrayList; import java.util.BitSet; diff --git a/src/main/java/jadx/dex/nodes/ClassNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java similarity index 89% rename from src/main/java/jadx/dex/nodes/ClassNode.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java index 2e0932635..b219be44b 100644 --- a/src/main/java/jadx/dex/nodes/ClassNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java @@ -1,21 +1,22 @@ -package jadx.dex.nodes; +package jadx.core.dex.nodes; -import jadx.Consts; -import jadx.dex.attributes.AttrNode; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.SourceFileAttr; -import jadx.dex.attributes.annotations.Annotation; -import jadx.dex.info.AccessInfo; -import jadx.dex.info.AccessInfo.AFType; -import jadx.dex.info.ClassInfo; -import jadx.dex.info.FieldInfo; -import jadx.dex.info.MethodInfo; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.nodes.parser.AnnotationsParser; -import jadx.dex.nodes.parser.FieldValueAttr; -import jadx.dex.nodes.parser.StaticValuesParser; -import jadx.utils.Utils; -import jadx.utils.exceptions.DecodeException; +import jadx.core.Consts; +import jadx.core.codegen.CodeWriter; +import jadx.core.dex.attributes.AttrNode; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.SourceFileAttr; +import jadx.core.dex.attributes.annotations.Annotation; +import jadx.core.dex.info.AccessInfo; +import jadx.core.dex.info.AccessInfo.AFType; +import jadx.core.dex.info.ClassInfo; +import jadx.core.dex.info.FieldInfo; +import jadx.core.dex.info.MethodInfo; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.nodes.parser.AnnotationsParser; +import jadx.core.dex.nodes.parser.FieldValueAttr; +import jadx.core.dex.nodes.parser.StaticValuesParser; +import jadx.core.utils.Utils; +import jadx.core.utils.exceptions.DecodeException; import java.util.ArrayList; import java.util.Collections; @@ -48,6 +49,8 @@ public class ClassNode extends AttrNode implements ILoadable { private final Map constFields = new HashMap(); + private CodeWriter code; // generated code + public ClassNode(DexNode dex, ClassDef cls) throws DecodeException { this.dex = dex; this.clsInfo = ClassInfo.fromDex(dex, cls.getTypeIndex()); @@ -62,7 +65,7 @@ public class ClassNode extends AttrNode implements ILoadable { } if (cls.getClassDataOffset() == 0) { - // nothing to load + // nothing to loadFile } else { ClassData clsData = dex.readClassData(cls); @@ -326,6 +329,14 @@ public class ClassNode extends AttrNode implements ILoadable { return clsInfo.getPackage(); } + public void setCode(CodeWriter code) { + this.code = code; + } + + public CodeWriter getCode() { + return code; + } + @Override public String toString() { return getFullName(); diff --git a/src/main/java/jadx/dex/nodes/DexNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java similarity index 91% rename from src/main/java/jadx/dex/nodes/DexNode.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java index f3fb1f029..8ba804764 100644 --- a/src/main/java/jadx/dex/nodes/DexNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java @@ -1,10 +1,10 @@ -package jadx.dex.nodes; +package jadx.core.dex.nodes; -import jadx.dex.info.ClassInfo; -import jadx.dex.info.MethodInfo; -import jadx.dex.instructions.args.ArgType; -import jadx.utils.exceptions.DecodeException; -import jadx.utils.files.InputFile; +import jadx.core.dex.info.ClassInfo; +import jadx.core.dex.info.MethodInfo; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.utils.exceptions.DecodeException; +import jadx.core.utils.files.InputFile; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/jadx/dex/nodes/FieldNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/FieldNode.java similarity index 77% rename from src/main/java/jadx/dex/nodes/FieldNode.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/FieldNode.java index d9624307e..daba071c0 100644 --- a/src/main/java/jadx/dex/nodes/FieldNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/FieldNode.java @@ -1,10 +1,10 @@ -package jadx.dex.nodes; +package jadx.core.dex.nodes; -import jadx.dex.attributes.AttrNode; -import jadx.dex.info.AccessInfo; -import jadx.dex.info.AccessInfo.AFType; -import jadx.dex.info.FieldInfo; -import jadx.dex.instructions.args.ArgType; +import jadx.core.dex.attributes.AttrNode; +import jadx.core.dex.info.AccessInfo; +import jadx.core.dex.info.AccessInfo.AFType; +import jadx.core.dex.info.FieldInfo; +import jadx.core.dex.instructions.args.ArgType; import com.android.dx.io.ClassData.Field; diff --git a/src/main/java/jadx/dex/nodes/IBlock.java b/jadx-core/src/main/java/jadx/core/dex/nodes/IBlock.java similarity index 79% rename from src/main/java/jadx/dex/nodes/IBlock.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/IBlock.java index 9368d2e00..50d190ca4 100644 --- a/src/main/java/jadx/dex/nodes/IBlock.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/IBlock.java @@ -1,4 +1,4 @@ -package jadx.dex.nodes; +package jadx.core.dex.nodes; import java.util.List; diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/IContainer.java b/jadx-core/src/main/java/jadx/core/dex/nodes/IContainer.java new file mode 100644 index 000000000..076e5fe48 --- /dev/null +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/IContainer.java @@ -0,0 +1,11 @@ +package jadx.core.dex.nodes; + +import jadx.core.dex.attributes.AttributesList; +import jadx.core.dex.attributes.IAttributeNode; + +public interface IContainer extends IAttributeNode { + + @Override + public AttributesList getAttributes(); + +} diff --git a/src/main/java/jadx/dex/nodes/ILoadable.java b/jadx-core/src/main/java/jadx/core/dex/nodes/ILoadable.java similarity index 69% rename from src/main/java/jadx/dex/nodes/ILoadable.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/ILoadable.java index 729f06331..e7db40c33 100644 --- a/src/main/java/jadx/dex/nodes/ILoadable.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/ILoadable.java @@ -1,12 +1,12 @@ -package jadx.dex.nodes; +package jadx.core.dex.nodes; -import jadx.utils.exceptions.DecodeException; +import jadx.core.utils.exceptions.DecodeException; public interface ILoadable { /** * On demand loading - * + * * @throws DecodeException */ public void load() throws DecodeException; diff --git a/src/main/java/jadx/dex/nodes/IRegion.java b/jadx-core/src/main/java/jadx/core/dex/nodes/IRegion.java similarity index 83% rename from src/main/java/jadx/dex/nodes/IRegion.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/IRegion.java index 6dfe0fd47..fba7129ad 100644 --- a/src/main/java/jadx/dex/nodes/IRegion.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/IRegion.java @@ -1,4 +1,4 @@ -package jadx.dex.nodes; +package jadx.core.dex.nodes; import java.util.List; diff --git a/src/main/java/jadx/dex/nodes/InsnContainer.java b/jadx-core/src/main/java/jadx/core/dex/nodes/InsnContainer.java similarity index 79% rename from src/main/java/jadx/dex/nodes/InsnContainer.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/InsnContainer.java index db481d9fa..24b53a61e 100644 --- a/src/main/java/jadx/dex/nodes/InsnContainer.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/InsnContainer.java @@ -1,6 +1,6 @@ -package jadx.dex.nodes; +package jadx.core.dex.nodes; -import jadx.dex.attributes.AttrNode; +import jadx.core.dex.attributes.AttrNode; import java.util.List; diff --git a/src/main/java/jadx/dex/nodes/InsnNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/InsnNode.java similarity index 90% rename from src/main/java/jadx/dex/nodes/InsnNode.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/InsnNode.java index 92456462c..e6bd0f066 100644 --- a/src/main/java/jadx/dex/nodes/InsnNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/InsnNode.java @@ -1,13 +1,13 @@ -package jadx.dex.nodes; +package jadx.core.dex.nodes; -import jadx.dex.attributes.AttrNode; -import jadx.dex.instructions.InsnType; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.InsnWrapArg; -import jadx.dex.instructions.args.RegisterArg; -import jadx.utils.InsnUtils; -import jadx.utils.Utils; +import jadx.core.dex.attributes.AttrNode; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.InsnWrapArg; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.utils.InsnUtils; +import jadx.core.utils.Utils; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/jadx/dex/nodes/MethodNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java similarity index 91% rename from src/main/java/jadx/dex/nodes/MethodNode.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java index dc9a53ff7..8dc6b19a9 100644 --- a/src/main/java/jadx/dex/nodes/MethodNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java @@ -1,29 +1,29 @@ -package jadx.dex.nodes; +package jadx.core.dex.nodes; -import jadx.Consts; -import jadx.dex.attributes.AttrNode; -import jadx.dex.attributes.AttributeFlag; -import jadx.dex.attributes.JumpAttribute; -import jadx.dex.attributes.LoopAttr; -import jadx.dex.attributes.annotations.Annotation; -import jadx.dex.info.AccessInfo; -import jadx.dex.info.AccessInfo.AFType; -import jadx.dex.info.ClassInfo; -import jadx.dex.info.MethodInfo; -import jadx.dex.instructions.GotoNode; -import jadx.dex.instructions.IfNode; -import jadx.dex.instructions.InsnDecoder; -import jadx.dex.instructions.SwitchNode; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.instructions.mods.ConstructorInsn; -import jadx.dex.nodes.parser.DebugInfoParser; -import jadx.dex.trycatch.ExcHandlerAttr; -import jadx.dex.trycatch.ExceptionHandler; -import jadx.dex.trycatch.TryCatchBlock; -import jadx.utils.Utils; -import jadx.utils.exceptions.DecodeException; +import jadx.core.Consts; +import jadx.core.dex.attributes.AttrNode; +import jadx.core.dex.attributes.AttributeFlag; +import jadx.core.dex.attributes.JumpAttribute; +import jadx.core.dex.attributes.LoopAttr; +import jadx.core.dex.attributes.annotations.Annotation; +import jadx.core.dex.info.AccessInfo; +import jadx.core.dex.info.AccessInfo.AFType; +import jadx.core.dex.info.ClassInfo; +import jadx.core.dex.info.MethodInfo; +import jadx.core.dex.instructions.GotoNode; +import jadx.core.dex.instructions.IfNode; +import jadx.core.dex.instructions.InsnDecoder; +import jadx.core.dex.instructions.SwitchNode; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.instructions.mods.ConstructorInsn; +import jadx.core.dex.nodes.parser.DebugInfoParser; +import jadx.core.dex.trycatch.ExcHandlerAttr; +import jadx.core.dex.trycatch.ExceptionHandler; +import jadx.core.dex.trycatch.TryCatchBlock; +import jadx.core.utils.Utils; +import jadx.core.utils.exceptions.DecodeException; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/jadx/dex/nodes/RootNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java similarity index 83% rename from src/main/java/jadx/dex/nodes/RootNode.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java index fe933e98e..c7670957d 100644 --- a/src/main/java/jadx/dex/nodes/RootNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/RootNode.java @@ -1,9 +1,9 @@ -package jadx.dex.nodes; +package jadx.core.dex.nodes; -import jadx.IJadxArgs; -import jadx.dex.info.ClassInfo; -import jadx.utils.exceptions.DecodeException; -import jadx.utils.files.InputFile; +import jadx.api.IJadxArgs; +import jadx.core.dex.info.ClassInfo; +import jadx.core.utils.exceptions.DecodeException; +import jadx.core.utils.files.InputFile; import java.util.ArrayList; import java.util.HashMap; @@ -16,18 +16,19 @@ import org.slf4j.LoggerFactory; public class RootNode { private static final Logger LOG = LoggerFactory.getLogger(RootNode.class); - private final IJadxArgs IJadxArgs; + private final IJadxArgs args; + private final List dexFiles; private List dexNodes; private final List classes = new ArrayList(); private final Map names = new HashMap(); - public RootNode(IJadxArgs args) { - this.IJadxArgs = args; + public RootNode(IJadxArgs args, List dexFiles) { + this.args = args; + this.dexFiles =dexFiles; } public void load() throws DecodeException { - List dexFiles = IJadxArgs.getInput(); dexNodes = new ArrayList(dexFiles.size()); for (InputFile dex : dexFiles) { DexNode dexNode; @@ -87,6 +88,6 @@ public class RootNode { } public IJadxArgs getJadxArgs() { - return IJadxArgs; + return args; } } diff --git a/src/main/java/jadx/dex/nodes/parser/AnnotationsParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java similarity index 85% rename from src/main/java/jadx/dex/nodes/parser/AnnotationsParser.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java index b7a465c43..b1492438b 100644 --- a/src/main/java/jadx/dex/nodes/parser/AnnotationsParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java @@ -1,14 +1,14 @@ -package jadx.dex.nodes.parser; +package jadx.core.dex.nodes.parser; -import jadx.dex.attributes.annotations.Annotation; -import jadx.dex.attributes.annotations.Annotation.Visibility; -import jadx.dex.attributes.annotations.AnnotationsList; -import jadx.dex.attributes.annotations.MethodParameters; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.DexNode; -import jadx.dex.nodes.FieldNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.exceptions.DecodeException; +import jadx.core.dex.attributes.annotations.Annotation; +import jadx.core.dex.attributes.annotations.Annotation.Visibility; +import jadx.core.dex.attributes.annotations.AnnotationsList; +import jadx.core.dex.attributes.annotations.MethodParameters; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.DexNode; +import jadx.core.dex.nodes.FieldNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.exceptions.DecodeException; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/jadx/dex/nodes/parser/DebugInfoParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/DebugInfoParser.java similarity index 94% rename from src/main/java/jadx/dex/nodes/parser/DebugInfoParser.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/parser/DebugInfoParser.java index 63481c6ca..fa0a7694a 100644 --- a/src/main/java/jadx/dex/nodes/parser/DebugInfoParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/DebugInfoParser.java @@ -1,12 +1,12 @@ -package jadx.dex.nodes.parser; +package jadx.core.dex.nodes.parser; -import jadx.dex.attributes.SourceFileAttr; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.DexNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.exceptions.DecodeException; +import jadx.core.dex.attributes.SourceFileAttr; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.DexNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.exceptions.DecodeException; import java.util.List; diff --git a/src/main/java/jadx/dex/nodes/parser/EncValueParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/EncValueParser.java similarity index 91% rename from src/main/java/jadx/dex/nodes/parser/EncValueParser.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/parser/EncValueParser.java index 167770368..e1ab29e23 100644 --- a/src/main/java/jadx/dex/nodes/parser/EncValueParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/EncValueParser.java @@ -1,9 +1,9 @@ -package jadx.dex.nodes.parser; +package jadx.core.dex.nodes.parser; -import jadx.dex.info.FieldInfo; -import jadx.dex.info.MethodInfo; -import jadx.dex.nodes.DexNode; -import jadx.utils.exceptions.DecodeException; +import jadx.core.dex.info.FieldInfo; +import jadx.core.dex.info.MethodInfo; +import jadx.core.dex.nodes.DexNode; +import jadx.core.utils.exceptions.DecodeException; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/jadx/dex/nodes/parser/FieldValueAttr.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/FieldValueAttr.java similarity index 73% rename from src/main/java/jadx/dex/nodes/parser/FieldValueAttr.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/parser/FieldValueAttr.java index 23e7c3f4a..9523c4a78 100644 --- a/src/main/java/jadx/dex/nodes/parser/FieldValueAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/FieldValueAttr.java @@ -1,7 +1,7 @@ -package jadx.dex.nodes.parser; +package jadx.core.dex.nodes.parser; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.IAttribute; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.IAttribute; public class FieldValueAttr implements IAttribute { diff --git a/src/main/java/jadx/dex/nodes/parser/LocalVar.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/LocalVar.java similarity index 84% rename from src/main/java/jadx/dex/nodes/parser/LocalVar.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/parser/LocalVar.java index fb073bff3..3fbcadf99 100644 --- a/src/main/java/jadx/dex/nodes/parser/LocalVar.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/LocalVar.java @@ -1,10 +1,10 @@ -package jadx.dex.nodes.parser; +package jadx.core.dex.nodes.parser; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.instructions.args.TypedVar; -import jadx.dex.nodes.DexNode; -import jadx.utils.InsnUtils; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.instructions.args.TypedVar; +import jadx.core.dex.nodes.DexNode; +import jadx.core.utils.InsnUtils; final class LocalVar extends RegisterArg { diff --git a/src/main/java/jadx/dex/nodes/parser/StaticValuesParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/StaticValuesParser.java similarity index 76% rename from src/main/java/jadx/dex/nodes/parser/StaticValuesParser.java rename to jadx-core/src/main/java/jadx/core/dex/nodes/parser/StaticValuesParser.java index 774a79ae1..b01c75022 100644 --- a/src/main/java/jadx/dex/nodes/parser/StaticValuesParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/StaticValuesParser.java @@ -1,8 +1,8 @@ -package jadx.dex.nodes.parser; +package jadx.core.dex.nodes.parser; -import jadx.dex.nodes.DexNode; -import jadx.dex.nodes.FieldNode; -import jadx.utils.exceptions.DecodeException; +import jadx.core.dex.nodes.DexNode; +import jadx.core.dex.nodes.FieldNode; +import jadx.core.utils.exceptions.DecodeException; import java.util.List; diff --git a/src/main/java/jadx/dex/regions/AbstractRegion.java b/jadx-core/src/main/java/jadx/core/dex/regions/AbstractRegion.java similarity index 69% rename from src/main/java/jadx/dex/regions/AbstractRegion.java rename to jadx-core/src/main/java/jadx/core/dex/regions/AbstractRegion.java index eeb1124fb..7d51120d1 100644 --- a/src/main/java/jadx/dex/regions/AbstractRegion.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/AbstractRegion.java @@ -1,7 +1,7 @@ -package jadx.dex.regions; +package jadx.core.dex.regions; -import jadx.dex.attributes.AttrNode; -import jadx.dex.nodes.IRegion; +import jadx.core.dex.attributes.AttrNode; +import jadx.core.dex.nodes.IRegion; public abstract class AbstractRegion extends AttrNode implements IRegion { diff --git a/src/main/java/jadx/dex/regions/IfCondition.java b/jadx-core/src/main/java/jadx/core/dex/regions/IfCondition.java similarity index 90% rename from src/main/java/jadx/dex/regions/IfCondition.java rename to jadx-core/src/main/java/jadx/core/dex/regions/IfCondition.java index 2894985c4..a829de649 100644 --- a/src/main/java/jadx/dex/regions/IfCondition.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/IfCondition.java @@ -1,9 +1,9 @@ -package jadx.dex.regions; +package jadx.core.dex.regions; -import jadx.dex.instructions.IfNode; -import jadx.dex.instructions.IfOp; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.nodes.BlockNode; +import jadx.core.dex.instructions.IfNode; +import jadx.core.dex.instructions.IfOp; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.nodes.BlockNode; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/jadx/dex/regions/IfRegion.java b/jadx-core/src/main/java/jadx/core/dex/regions/IfRegion.java similarity index 90% rename from src/main/java/jadx/dex/regions/IfRegion.java rename to jadx-core/src/main/java/jadx/core/dex/regions/IfRegion.java index bf2de11fd..0fcff075e 100644 --- a/src/main/java/jadx/dex/regions/IfRegion.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/IfRegion.java @@ -1,8 +1,8 @@ -package jadx.dex.regions; +package jadx.core.dex.regions; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.IRegion; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.IRegion; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/jadx/dex/regions/LoopRegion.java b/jadx-core/src/main/java/jadx/core/dex/regions/LoopRegion.java similarity index 91% rename from src/main/java/jadx/dex/regions/LoopRegion.java rename to jadx-core/src/main/java/jadx/core/dex/regions/LoopRegion.java index 595a2da44..e5f4e890a 100644 --- a/src/main/java/jadx/dex/regions/LoopRegion.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/LoopRegion.java @@ -1,11 +1,11 @@ -package jadx.dex.regions; +package jadx.core.dex.regions; -import jadx.dex.instructions.IfNode; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.InsnNode; +import jadx.core.dex.instructions.IfNode; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.InsnNode; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/jadx/dex/regions/Region.java b/jadx-core/src/main/java/jadx/core/dex/regions/Region.java similarity index 81% rename from src/main/java/jadx/dex/regions/Region.java rename to jadx-core/src/main/java/jadx/core/dex/regions/Region.java index ee70eb6ba..daae71eb4 100644 --- a/src/main/java/jadx/dex/regions/Region.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/Region.java @@ -1,8 +1,8 @@ -package jadx.dex.regions; +package jadx.core.dex.regions; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.IRegion; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.IRegion; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/jadx/dex/regions/SwitchRegion.java b/jadx-core/src/main/java/jadx/core/dex/regions/SwitchRegion.java similarity index 89% rename from src/main/java/jadx/dex/regions/SwitchRegion.java rename to jadx-core/src/main/java/jadx/core/dex/regions/SwitchRegion.java index 6baef3b19..9eb52d76a 100644 --- a/src/main/java/jadx/dex/regions/SwitchRegion.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/SwitchRegion.java @@ -1,8 +1,8 @@ -package jadx.dex.regions; +package jadx.core.dex.regions; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.IRegion; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.IRegion; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/jadx/dex/regions/SynchronizedRegion.java b/jadx-core/src/main/java/jadx/core/dex/regions/SynchronizedRegion.java similarity index 79% rename from src/main/java/jadx/dex/regions/SynchronizedRegion.java rename to jadx-core/src/main/java/jadx/core/dex/regions/SynchronizedRegion.java index e8e9fc94b..5cd79ed5a 100644 --- a/src/main/java/jadx/dex/regions/SynchronizedRegion.java +++ b/jadx-core/src/main/java/jadx/core/dex/regions/SynchronizedRegion.java @@ -1,8 +1,8 @@ -package jadx.dex.regions; +package jadx.core.dex.regions; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.InsnNode; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.InsnNode; import java.util.List; diff --git a/src/main/java/jadx/dex/trycatch/CatchAttr.java b/jadx-core/src/main/java/jadx/core/dex/trycatch/CatchAttr.java similarity index 75% rename from src/main/java/jadx/dex/trycatch/CatchAttr.java rename to jadx-core/src/main/java/jadx/core/dex/trycatch/CatchAttr.java index dfdc2c604..145e72410 100644 --- a/src/main/java/jadx/dex/trycatch/CatchAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/trycatch/CatchAttr.java @@ -1,7 +1,7 @@ -package jadx.dex.trycatch; +package jadx.core.dex.trycatch; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.IAttribute; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.IAttribute; public class CatchAttr implements IAttribute { diff --git a/src/main/java/jadx/dex/trycatch/ExcHandlerAttr.java b/jadx-core/src/main/java/jadx/core/dex/trycatch/ExcHandlerAttr.java similarity index 83% rename from src/main/java/jadx/dex/trycatch/ExcHandlerAttr.java rename to jadx-core/src/main/java/jadx/core/dex/trycatch/ExcHandlerAttr.java index 6d730ef78..0990b5f35 100644 --- a/src/main/java/jadx/dex/trycatch/ExcHandlerAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/trycatch/ExcHandlerAttr.java @@ -1,7 +1,7 @@ -package jadx.dex.trycatch; +package jadx.core.dex.trycatch; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.IAttribute; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.IAttribute; public class ExcHandlerAttr implements IAttribute { diff --git a/src/main/java/jadx/dex/trycatch/ExceptionHandler.java b/jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java similarity index 88% rename from src/main/java/jadx/dex/trycatch/ExceptionHandler.java rename to jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java index 72dcc25e5..a26054073 100644 --- a/src/main/java/jadx/dex/trycatch/ExceptionHandler.java +++ b/jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java @@ -1,11 +1,11 @@ -package jadx.dex.trycatch; +package jadx.core.dex.trycatch; -import jadx.Consts; -import jadx.dex.info.ClassInfo; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IContainer; -import jadx.utils.InsnUtils; +import jadx.core.Consts; +import jadx.core.dex.info.ClassInfo; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IContainer; +import jadx.core.utils.InsnUtils; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/jadx/dex/trycatch/SplitterBlockAttr.java b/jadx-core/src/main/java/jadx/core/dex/trycatch/SplitterBlockAttr.java similarity index 70% rename from src/main/java/jadx/dex/trycatch/SplitterBlockAttr.java rename to jadx-core/src/main/java/jadx/core/dex/trycatch/SplitterBlockAttr.java index 340c62d41..734617b82 100644 --- a/src/main/java/jadx/dex/trycatch/SplitterBlockAttr.java +++ b/jadx-core/src/main/java/jadx/core/dex/trycatch/SplitterBlockAttr.java @@ -1,8 +1,8 @@ -package jadx.dex.trycatch; +package jadx.core.dex.trycatch; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.IAttribute; -import jadx.dex.nodes.BlockNode; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.IAttribute; +import jadx.core.dex.nodes.BlockNode; public class SplitterBlockAttr implements IAttribute { diff --git a/src/main/java/jadx/dex/trycatch/TryCatchBlock.java b/jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java similarity index 89% rename from src/main/java/jadx/dex/trycatch/TryCatchBlock.java rename to jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java index 059a8661a..e2b7b13d8 100644 --- a/src/main/java/jadx/dex/trycatch/TryCatchBlock.java +++ b/jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java @@ -1,16 +1,16 @@ -package jadx.dex.trycatch; +package jadx.core.dex.trycatch; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.IAttribute; -import jadx.dex.info.ClassInfo; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IBlock; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.InsnContainer; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.visitors.InstructionRemover; -import jadx.utils.Utils; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.IAttribute; +import jadx.core.dex.info.ClassInfo; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IBlock; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.InsnContainer; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.visitors.InstructionRemover; +import jadx.core.utils.Utils; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/jadx/dex/visitors/AbstractVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/AbstractVisitor.java similarity index 58% rename from src/main/java/jadx/dex/visitors/AbstractVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/AbstractVisitor.java index 40bb30941..bc8f4f1b0 100644 --- a/src/main/java/jadx/dex/visitors/AbstractVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/AbstractVisitor.java @@ -1,8 +1,8 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.exceptions.JadxException; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.exceptions.JadxException; public class AbstractVisitor implements IDexTreeVisitor { diff --git a/src/main/java/jadx/dex/visitors/BlockMakerVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/BlockMakerVisitor.java similarity index 93% rename from src/main/java/jadx/dex/visitors/BlockMakerVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/BlockMakerVisitor.java index cd4ba6992..b4d2bfede 100644 --- a/src/main/java/jadx/dex/visitors/BlockMakerVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/BlockMakerVisitor.java @@ -1,22 +1,22 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.dex.attributes.AttributeFlag; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.AttributesList; -import jadx.dex.attributes.IAttribute; -import jadx.dex.attributes.JumpAttribute; -import jadx.dex.attributes.LoopAttr; -import jadx.dex.instructions.IfNode; -import jadx.dex.instructions.InsnType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.trycatch.CatchAttr; -import jadx.dex.trycatch.ExceptionHandler; -import jadx.dex.trycatch.SplitterBlockAttr; -import jadx.utils.exceptions.JadxRuntimeException; +import jadx.core.dex.attributes.AttributeFlag; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.AttributesList; +import jadx.core.dex.attributes.IAttribute; +import jadx.core.dex.attributes.JumpAttribute; +import jadx.core.dex.attributes.LoopAttr; +import jadx.core.dex.instructions.IfNode; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.trycatch.CatchAttr; +import jadx.core.dex.trycatch.ExceptionHandler; +import jadx.core.dex.trycatch.SplitterBlockAttr; +import jadx.core.utils.exceptions.JadxRuntimeException; import java.util.ArrayList; import java.util.BitSet; diff --git a/src/main/java/jadx/dex/visitors/BlockProcessingHelper.java b/jadx-core/src/main/java/jadx/core/dex/visitors/BlockProcessingHelper.java similarity index 87% rename from src/main/java/jadx/dex/visitors/BlockProcessingHelper.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/BlockProcessingHelper.java index ea7c4269b..75a528a94 100644 --- a/src/main/java/jadx/dex/visitors/BlockProcessingHelper.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/BlockProcessingHelper.java @@ -1,17 +1,17 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.dex.attributes.AttributeType; -import jadx.dex.instructions.InsnType; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.trycatch.CatchAttr; -import jadx.dex.trycatch.ExcHandlerAttr; -import jadx.dex.trycatch.ExceptionHandler; -import jadx.dex.trycatch.TryCatchBlock; -import jadx.utils.BlockUtils; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.trycatch.CatchAttr; +import jadx.core.dex.trycatch.ExcHandlerAttr; +import jadx.core.dex.trycatch.ExceptionHandler; +import jadx.core.dex.trycatch.TryCatchBlock; +import jadx.core.utils.BlockUtils; public class BlockProcessingHelper { diff --git a/src/main/java/jadx/dex/visitors/ClassModifier.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ClassModifier.java similarity index 85% rename from src/main/java/jadx/dex/visitors/ClassModifier.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/ClassModifier.java index ca99edc3b..682e89e55 100644 --- a/src/main/java/jadx/dex/visitors/ClassModifier.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ClassModifier.java @@ -1,11 +1,11 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.dex.info.AccessInfo; -import jadx.dex.info.MethodInfo; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.exceptions.JadxException; +import jadx.core.dex.info.AccessInfo; +import jadx.core.dex.info.MethodInfo; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.exceptions.JadxException; import java.util.Iterator; import java.util.List; diff --git a/src/main/java/jadx/dex/visitors/CodeShrinker.java b/jadx-core/src/main/java/jadx/core/dex/visitors/CodeShrinker.java similarity index 88% rename from src/main/java/jadx/dex/visitors/CodeShrinker.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/CodeShrinker.java index a399afb56..3a1afcb84 100644 --- a/src/main/java/jadx/dex/visitors/CodeShrinker.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/CodeShrinker.java @@ -1,23 +1,23 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.Consts; -import jadx.dex.attributes.AttributeFlag; -import jadx.dex.info.MethodInfo; -import jadx.dex.instructions.ArithNode; -import jadx.dex.instructions.ArithOp; -import jadx.dex.instructions.IfNode; -import jadx.dex.instructions.InsnType; -import jadx.dex.instructions.InvokeNode; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.InsnWrapArg; -import jadx.dex.instructions.args.LiteralArg; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.instructions.mods.ConstructorInsn; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.BlockUtils; -import jadx.utils.exceptions.JadxRuntimeException; +import jadx.core.Consts; +import jadx.core.dex.attributes.AttributeFlag; +import jadx.core.dex.info.MethodInfo; +import jadx.core.dex.instructions.ArithNode; +import jadx.core.dex.instructions.ArithOp; +import jadx.core.dex.instructions.IfNode; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.instructions.InvokeNode; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.InsnWrapArg; +import jadx.core.dex.instructions.args.LiteralArg; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.instructions.mods.ConstructorInsn; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.BlockUtils; +import jadx.core.utils.exceptions.JadxRuntimeException; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/jadx/dex/visitors/ConstInlinerVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlinerVisitor.java similarity index 87% rename from src/main/java/jadx/dex/visitors/ConstInlinerVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlinerVisitor.java index bbce02c3c..2c7ab24bd 100644 --- a/src/main/java/jadx/dex/visitors/ConstInlinerVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ConstInlinerVisitor.java @@ -1,18 +1,18 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.dex.info.FieldInfo; -import jadx.dex.instructions.IfNode; -import jadx.dex.instructions.IndexInsnNode; -import jadx.dex.instructions.InsnType; -import jadx.dex.instructions.InvokeNode; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.LiteralArg; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.BlockUtils; -import jadx.utils.exceptions.JadxException; +import jadx.core.dex.info.FieldInfo; +import jadx.core.dex.instructions.IfNode; +import jadx.core.dex.instructions.IndexInsnNode; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.instructions.InvokeNode; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.LiteralArg; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.BlockUtils; +import jadx.core.utils.exceptions.JadxException; import java.util.Iterator; import java.util.List; diff --git a/src/main/java/jadx/dex/visitors/DepthTraverser.java b/jadx-core/src/main/java/jadx/core/dex/visitors/DepthTraverser.java similarity index 82% rename from src/main/java/jadx/dex/visitors/DepthTraverser.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/DepthTraverser.java index c18641762..59fabc535 100644 --- a/src/main/java/jadx/dex/visitors/DepthTraverser.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/DepthTraverser.java @@ -1,8 +1,8 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.ErrorsCounter; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.ErrorsCounter; public class DepthTraverser { diff --git a/src/main/java/jadx/dex/visitors/DotGraphVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/DotGraphVisitor.java similarity index 91% rename from src/main/java/jadx/dex/visitors/DotGraphVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/DotGraphVisitor.java index 8ef7f7baf..d4e1f86ba 100644 --- a/src/main/java/jadx/dex/visitors/DotGraphVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/DotGraphVisitor.java @@ -1,17 +1,17 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.codegen.CodeWriter; -import jadx.codegen.MethodGen; -import jadx.dex.attributes.IAttributeNode; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.trycatch.ExceptionHandler; -import jadx.utils.BlockUtils; -import jadx.utils.InsnUtils; -import jadx.utils.Utils; +import jadx.core.codegen.CodeWriter; +import jadx.core.codegen.MethodGen; +import jadx.core.dex.attributes.IAttributeNode; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.trycatch.ExceptionHandler; +import jadx.core.utils.BlockUtils; +import jadx.core.utils.InsnUtils; +import jadx.core.utils.Utils; import java.io.File; diff --git a/src/main/java/jadx/dex/visitors/EnumVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java similarity index 84% rename from src/main/java/jadx/dex/visitors/EnumVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java index 8bd0868e2..502aec45c 100644 --- a/src/main/java/jadx/dex/visitors/EnumVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java @@ -1,22 +1,22 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.dex.attributes.AttributeFlag; -import jadx.dex.attributes.EnumClassAttr; -import jadx.dex.attributes.EnumClassAttr.EnumField; -import jadx.dex.info.ClassInfo; -import jadx.dex.info.FieldInfo; -import jadx.dex.info.MethodInfo; -import jadx.dex.instructions.IndexInsnNode; -import jadx.dex.instructions.InsnType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.instructions.mods.ConstructorInsn; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.FieldNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.exceptions.JadxException; +import jadx.core.dex.attributes.AttributeFlag; +import jadx.core.dex.attributes.EnumClassAttr; +import jadx.core.dex.attributes.EnumClassAttr.EnumField; +import jadx.core.dex.info.ClassInfo; +import jadx.core.dex.info.FieldInfo; +import jadx.core.dex.info.MethodInfo; +import jadx.core.dex.instructions.IndexInsnNode; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.instructions.mods.ConstructorInsn; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.FieldNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.exceptions.JadxException; import java.util.ArrayList; import java.util.Iterator; diff --git a/src/main/java/jadx/dex/visitors/FallbackModeVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/FallbackModeVisitor.java similarity index 74% rename from src/main/java/jadx/dex/visitors/FallbackModeVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/FallbackModeVisitor.java index c24d045f5..c6ef574a7 100644 --- a/src/main/java/jadx/dex/visitors/FallbackModeVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/FallbackModeVisitor.java @@ -1,10 +1,10 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.dex.attributes.AttributeType; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.trycatch.CatchAttr; -import jadx.utils.exceptions.JadxException; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.trycatch.CatchAttr; +import jadx.core.utils.exceptions.JadxException; public class FallbackModeVisitor extends AbstractVisitor { diff --git a/src/main/java/jadx/dex/visitors/IDexTreeVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/IDexTreeVisitor.java similarity index 69% rename from src/main/java/jadx/dex/visitors/IDexTreeVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/IDexTreeVisitor.java index d5df2acc3..0e194a621 100644 --- a/src/main/java/jadx/dex/visitors/IDexTreeVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/IDexTreeVisitor.java @@ -1,8 +1,8 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.exceptions.JadxException; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.exceptions.JadxException; /** * Visitor interface for traverse dex tree @@ -11,7 +11,7 @@ public interface IDexTreeVisitor { /** * Visit class - * + * * @return false for disable child methods and inner classes traversal * @throws JadxException */ @@ -19,7 +19,7 @@ public interface IDexTreeVisitor { /** * Visit method - * + * * @throws JadxException */ void visit(MethodNode mth) throws JadxException; diff --git a/src/main/java/jadx/dex/visitors/InstructionRemover.java b/jadx-core/src/main/java/jadx/core/dex/visitors/InstructionRemover.java similarity index 93% rename from src/main/java/jadx/dex/visitors/InstructionRemover.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/InstructionRemover.java index f2e87ff40..f6a0168c7 100644 --- a/src/main/java/jadx/dex/visitors/InstructionRemover.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/InstructionRemover.java @@ -1,8 +1,8 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.InsnNode; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.InsnNode; import java.util.ArrayList; import java.util.Iterator; diff --git a/src/main/java/jadx/dex/visitors/MethodInlinerVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/MethodInlinerVisitor.java similarity index 74% rename from src/main/java/jadx/dex/visitors/MethodInlinerVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/MethodInlinerVisitor.java index 854239d3b..b673de78f 100644 --- a/src/main/java/jadx/dex/visitors/MethodInlinerVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/MethodInlinerVisitor.java @@ -1,14 +1,14 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.dex.attributes.AttributeFlag; -import jadx.dex.attributes.IAttribute; -import jadx.dex.attributes.MethodInlineAttr; -import jadx.dex.info.AccessInfo; -import jadx.dex.instructions.InsnType; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.exceptions.JadxException; +import jadx.core.dex.attributes.AttributeFlag; +import jadx.core.dex.attributes.IAttribute; +import jadx.core.dex.attributes.MethodInlineAttr; +import jadx.core.dex.info.AccessInfo; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.exceptions.JadxException; public class MethodInlinerVisitor extends AbstractVisitor { diff --git a/src/main/java/jadx/dex/visitors/ModVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java similarity index 87% rename from src/main/java/jadx/dex/visitors/ModVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java index d3b23d82f..fcd3433dd 100644 --- a/src/main/java/jadx/dex/visitors/ModVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java @@ -1,27 +1,27 @@ -package jadx.dex.visitors; +package jadx.core.dex.visitors; -import jadx.Consts; -import jadx.deobf.NameMapper; -import jadx.dex.attributes.AttributeType; -import jadx.dex.info.MethodInfo; -import jadx.dex.instructions.IndexInsnNode; -import jadx.dex.instructions.InsnType; -import jadx.dex.instructions.InvokeNode; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.LiteralArg; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.instructions.mods.ConstructorInsn; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.FieldNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.trycatch.ExcHandlerAttr; -import jadx.dex.trycatch.ExceptionHandler; -import jadx.dex.trycatch.TryCatchBlock; -import jadx.utils.BlockUtils; -import jadx.utils.exceptions.JadxRuntimeException; +import jadx.core.Consts; +import jadx.core.deobf.NameMapper; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.info.MethodInfo; +import jadx.core.dex.instructions.IndexInsnNode; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.instructions.InvokeNode; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.LiteralArg; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.instructions.mods.ConstructorInsn; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.FieldNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.trycatch.ExcHandlerAttr; +import jadx.core.dex.trycatch.ExceptionHandler; +import jadx.core.dex.trycatch.TryCatchBlock; +import jadx.core.utils.BlockUtils; +import jadx.core.utils.exceptions.JadxRuntimeException; import java.util.List; diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/SaveCode.java b/jadx-core/src/main/java/jadx/core/dex/visitors/SaveCode.java new file mode 100644 index 000000000..170d7cd22 --- /dev/null +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/SaveCode.java @@ -0,0 +1,34 @@ +package jadx.core.dex.visitors; + +import jadx.api.IJadxArgs; +import jadx.core.codegen.CodeWriter; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.utils.exceptions.CodegenException; + +import java.io.File; + +public class SaveCode extends AbstractVisitor { + + private final File dir; + private final IJadxArgs args; + + public SaveCode(IJadxArgs args) { + this.args = args; + this.dir = args.getOutDir(); + } + + @Override + public boolean visit(ClassNode cls) throws CodegenException { + CodeWriter clsCode = cls.getCode(); + + String fileName = cls.getClassInfo().getFullPath() + ".java"; + if (isFallbackMode()) + fileName += ".jadx"; + clsCode.save(dir, fileName); + return false; + } + + public boolean isFallbackMode() { + return args.isFallbackMode(); + } +} diff --git a/src/main/java/jadx/dex/visitors/regions/AbstractRegionVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/AbstractRegionVisitor.java similarity index 66% rename from src/main/java/jadx/dex/visitors/regions/AbstractRegionVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/AbstractRegionVisitor.java index ac2d41067..2e8e67b50 100644 --- a/src/main/java/jadx/dex/visitors/regions/AbstractRegionVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/AbstractRegionVisitor.java @@ -1,8 +1,8 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.dex.nodes.IBlock; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.MethodNode; +import jadx.core.dex.nodes.IBlock; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.MethodNode; public abstract class AbstractRegionVisitor implements IRegionVisitor { diff --git a/src/main/java/jadx/dex/visitors/regions/CheckRegions.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/CheckRegions.java similarity index 81% rename from src/main/java/jadx/dex/visitors/regions/CheckRegions.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/CheckRegions.java index d96fb6e2b..a28dee782 100644 --- a/src/main/java/jadx/dex/visitors/regions/CheckRegions.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/CheckRegions.java @@ -1,15 +1,15 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.Consts; -import jadx.dex.attributes.AttributeFlag; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IBlock; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.MethodNode; -import jadx.dex.regions.LoopRegion; -import jadx.dex.visitors.AbstractVisitor; -import jadx.utils.ErrorsCounter; -import jadx.utils.exceptions.JadxException; +import jadx.core.Consts; +import jadx.core.dex.attributes.AttributeFlag; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IBlock; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.regions.LoopRegion; +import jadx.core.dex.visitors.AbstractVisitor; +import jadx.core.utils.ErrorsCounter; +import jadx.core.utils.exceptions.JadxException; import java.util.HashSet; import java.util.Set; diff --git a/src/main/java/jadx/dex/visitors/regions/CleanRegions.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/CleanRegions.java similarity index 76% rename from src/main/java/jadx/dex/visitors/regions/CleanRegions.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/CleanRegions.java index bd47be336..3006bc006 100644 --- a/src/main/java/jadx/dex/visitors/regions/CleanRegions.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/CleanRegions.java @@ -1,12 +1,12 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.MethodNode; -import jadx.dex.regions.Region; -import jadx.dex.visitors.AbstractVisitor; -import jadx.utils.exceptions.JadxException; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.regions.Region; +import jadx.core.dex.visitors.AbstractVisitor; +import jadx.core.utils.exceptions.JadxException; import java.util.Iterator; diff --git a/src/main/java/jadx/dex/visitors/regions/DepthRegionTraverser.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/DepthRegionTraverser.java similarity index 76% rename from src/main/java/jadx/dex/visitors/regions/DepthRegionTraverser.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/DepthRegionTraverser.java index 151fa999d..142bade2f 100644 --- a/src/main/java/jadx/dex/visitors/regions/DepthRegionTraverser.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/DepthRegionTraverser.java @@ -1,10 +1,10 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.dex.nodes.IBlock; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.MethodNode; -import jadx.dex.trycatch.ExceptionHandler; +import jadx.core.dex.nodes.IBlock; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.trycatch.ExceptionHandler; public class DepthRegionTraverser { diff --git a/src/main/java/jadx/dex/visitors/regions/FinishRegions.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/FinishRegions.java similarity index 78% rename from src/main/java/jadx/dex/visitors/regions/FinishRegions.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/FinishRegions.java index 4de1aba56..1c1644782 100644 --- a/src/main/java/jadx/dex/visitors/regions/FinishRegions.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/FinishRegions.java @@ -1,13 +1,13 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.dex.instructions.InsnType; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IBlock; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.regions.LoopRegion; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IBlock; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.regions.LoopRegion; import java.util.Iterator; import java.util.List; diff --git a/src/main/java/jadx/dex/visitors/regions/IRegionVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IRegionVisitor.java similarity index 59% rename from src/main/java/jadx/dex/visitors/regions/IRegionVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/IRegionVisitor.java index 9bc6580ee..6b1bdb81f 100644 --- a/src/main/java/jadx/dex/visitors/regions/IRegionVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IRegionVisitor.java @@ -1,8 +1,8 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.dex.nodes.IBlock; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.MethodNode; +import jadx.core.dex.nodes.IBlock; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.MethodNode; public interface IRegionVisitor { diff --git a/src/main/java/jadx/dex/visitors/regions/MarkTryCatchRegions.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/MarkTryCatchRegions.java similarity index 88% rename from src/main/java/jadx/dex/visitors/regions/MarkTryCatchRegions.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/MarkTryCatchRegions.java index 19a59b566..c2aa1c203 100644 --- a/src/main/java/jadx/dex/visitors/regions/MarkTryCatchRegions.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/MarkTryCatchRegions.java @@ -1,17 +1,17 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.dex.attributes.AttributeType; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.MethodNode; -import jadx.dex.regions.Region; -import jadx.dex.trycatch.CatchAttr; -import jadx.dex.trycatch.ExceptionHandler; -import jadx.dex.trycatch.TryCatchBlock; -import jadx.utils.BlockUtils; -import jadx.utils.RegionUtils; -import jadx.utils.exceptions.JadxRuntimeException; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.regions.Region; +import jadx.core.dex.trycatch.CatchAttr; +import jadx.core.dex.trycatch.ExceptionHandler; +import jadx.core.dex.trycatch.TryCatchBlock; +import jadx.core.utils.BlockUtils; +import jadx.core.utils.RegionUtils; +import jadx.core.utils.exceptions.JadxRuntimeException; import java.util.BitSet; import java.util.HashMap; diff --git a/src/main/java/jadx/dex/visitors/regions/PostRegionVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/PostRegionVisitor.java similarity index 72% rename from src/main/java/jadx/dex/visitors/regions/PostRegionVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/PostRegionVisitor.java index 2f44220b2..9e0466b53 100644 --- a/src/main/java/jadx/dex/visitors/regions/PostRegionVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/PostRegionVisitor.java @@ -1,14 +1,14 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.dex.instructions.InsnType; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.regions.Region; -import jadx.dex.visitors.AbstractVisitor; -import jadx.utils.exceptions.JadxException; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.regions.Region; +import jadx.core.dex.visitors.AbstractVisitor; +import jadx.core.utils.exceptions.JadxException; import java.util.List; diff --git a/src/main/java/jadx/dex/visitors/regions/ProcessVariables.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessVariables.java similarity index 89% rename from src/main/java/jadx/dex/visitors/regions/ProcessVariables.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessVariables.java index 1f7291354..c1a22ea91 100644 --- a/src/main/java/jadx/dex/visitors/regions/ProcessVariables.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/ProcessVariables.java @@ -1,16 +1,16 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.DeclareVariableAttr; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.IBlock; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.visitors.AbstractVisitor; -import jadx.utils.RegionUtils; -import jadx.utils.exceptions.JadxException; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.DeclareVariableAttr; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.IBlock; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.visitors.AbstractVisitor; +import jadx.core.utils.RegionUtils; +import jadx.core.utils.exceptions.JadxException; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/jadx/dex/visitors/regions/RegionMaker.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java similarity index 93% rename from src/main/java/jadx/dex/visitors/regions/RegionMaker.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java index c953e6990..f7115441f 100644 --- a/src/main/java/jadx/dex/visitors/regions/RegionMaker.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java @@ -1,30 +1,30 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.dex.attributes.AttributeFlag; -import jadx.dex.attributes.AttributeType; -import jadx.dex.attributes.AttributesList; -import jadx.dex.attributes.ForceReturnAttr; -import jadx.dex.attributes.IAttribute; -import jadx.dex.attributes.LoopAttr; -import jadx.dex.instructions.IfNode; -import jadx.dex.instructions.InsnType; -import jadx.dex.instructions.SwitchNode; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.regions.IfCondition; -import jadx.dex.regions.IfRegion; -import jadx.dex.regions.LoopRegion; -import jadx.dex.regions.Region; -import jadx.dex.regions.SwitchRegion; -import jadx.dex.regions.SynchronizedRegion; -import jadx.dex.trycatch.ExceptionHandler; -import jadx.dex.visitors.InstructionRemover; -import jadx.utils.BlockUtils; -import jadx.utils.ErrorsCounter; -import jadx.utils.RegionUtils; +import jadx.core.dex.attributes.AttributeFlag; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.attributes.AttributesList; +import jadx.core.dex.attributes.ForceReturnAttr; +import jadx.core.dex.attributes.IAttribute; +import jadx.core.dex.attributes.LoopAttr; +import jadx.core.dex.instructions.IfNode; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.instructions.SwitchNode; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.regions.IfCondition; +import jadx.core.dex.regions.IfRegion; +import jadx.core.dex.regions.LoopRegion; +import jadx.core.dex.regions.Region; +import jadx.core.dex.regions.SwitchRegion; +import jadx.core.dex.regions.SynchronizedRegion; +import jadx.core.dex.trycatch.ExceptionHandler; +import jadx.core.dex.visitors.InstructionRemover; +import jadx.core.utils.BlockUtils; +import jadx.core.utils.ErrorsCounter; +import jadx.core.utils.RegionUtils; import java.util.ArrayList; import java.util.BitSet; diff --git a/src/main/java/jadx/dex/visitors/regions/RegionMakerVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMakerVisitor.java similarity index 72% rename from src/main/java/jadx/dex/visitors/regions/RegionMakerVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMakerVisitor.java index 9eff8e231..12a291abb 100644 --- a/src/main/java/jadx/dex/visitors/regions/RegionMakerVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMakerVisitor.java @@ -1,9 +1,9 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.dex.nodes.MethodNode; -import jadx.dex.trycatch.ExceptionHandler; -import jadx.dex.visitors.AbstractVisitor; -import jadx.utils.exceptions.JadxException; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.trycatch.ExceptionHandler; +import jadx.core.dex.visitors.AbstractVisitor; +import jadx.core.utils.exceptions.JadxException; /** * Pack blocks into regions for code generation diff --git a/src/main/java/jadx/dex/visitors/regions/RegionStack.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionStack.java similarity index 92% rename from src/main/java/jadx/dex/visitors/regions/RegionStack.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionStack.java index 0c5fc58e7..6e0f6f1b1 100644 --- a/src/main/java/jadx/dex/visitors/regions/RegionStack.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionStack.java @@ -1,8 +1,8 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.MethodNode; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.MethodNode; import java.util.ArrayDeque; import java.util.Deque; @@ -72,7 +72,7 @@ final class RegionStack { /** * Add boundary(exit) node for current stack frame - * + * * @param exit * boundary node, null will be ignored */ diff --git a/src/main/java/jadx/dex/visitors/regions/TracedRegionVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/TracedRegionVisitor.java similarity index 81% rename from src/main/java/jadx/dex/visitors/regions/TracedRegionVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/regions/TracedRegionVisitor.java index 1e71e2a42..0ae4e10d3 100644 --- a/src/main/java/jadx/dex/visitors/regions/TracedRegionVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/TracedRegionVisitor.java @@ -1,8 +1,8 @@ -package jadx.dex.visitors.regions; +package jadx.core.dex.visitors.regions; -import jadx.dex.nodes.IBlock; -import jadx.dex.nodes.IRegion; -import jadx.dex.nodes.MethodNode; +import jadx.core.dex.nodes.IBlock; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.nodes.MethodNode; import java.util.ArrayDeque; import java.util.Deque; diff --git a/src/main/java/jadx/dex/visitors/typeresolver/FinishTypeResolver.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/FinishTypeResolver.java similarity index 65% rename from src/main/java/jadx/dex/visitors/typeresolver/FinishTypeResolver.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/FinishTypeResolver.java index 6276a916c..2b7a934c5 100644 --- a/src/main/java/jadx/dex/visitors/typeresolver/FinishTypeResolver.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/FinishTypeResolver.java @@ -1,12 +1,12 @@ -package jadx.dex.visitors.typeresolver; +package jadx.core.dex.visitors.typeresolver; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.visitors.AbstractVisitor; -import jadx.dex.visitors.typeresolver.finish.CheckTypeVisitor; -import jadx.dex.visitors.typeresolver.finish.PostTypeResolver; -import jadx.dex.visitors.typeresolver.finish.SelectTypeVisitor; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.visitors.AbstractVisitor; +import jadx.core.dex.visitors.typeresolver.finish.CheckTypeVisitor; +import jadx.core.dex.visitors.typeresolver.finish.PostTypeResolver; +import jadx.core.dex.visitors.typeresolver.finish.SelectTypeVisitor; public class FinishTypeResolver extends AbstractVisitor { diff --git a/src/main/java/jadx/dex/visitors/typeresolver/TypeResolver.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/TypeResolver.java similarity index 85% rename from src/main/java/jadx/dex/visitors/typeresolver/TypeResolver.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/TypeResolver.java index 17b1156a0..1c162717f 100644 --- a/src/main/java/jadx/dex/visitors/typeresolver/TypeResolver.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/TypeResolver.java @@ -1,12 +1,12 @@ -package jadx.dex.visitors.typeresolver; +package jadx.core.dex.visitors.typeresolver; -import jadx.dex.attributes.BlockRegState; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.dex.visitors.AbstractVisitor; +import jadx.core.dex.attributes.BlockRegState; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.dex.visitors.AbstractVisitor; import java.util.List; diff --git a/src/main/java/jadx/dex/visitors/typeresolver/finish/CheckTypeVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/finish/CheckTypeVisitor.java similarity index 70% rename from src/main/java/jadx/dex/visitors/typeresolver/finish/CheckTypeVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/finish/CheckTypeVisitor.java index 3cb218b9e..937ca41e1 100644 --- a/src/main/java/jadx/dex/visitors/typeresolver/finish/CheckTypeVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/finish/CheckTypeVisitor.java @@ -1,9 +1,9 @@ -package jadx.dex.visitors.typeresolver.finish; +package jadx.core.dex.visitors.typeresolver.finish; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.ErrorsCounter; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.ErrorsCounter; public class CheckTypeVisitor { diff --git a/src/main/java/jadx/dex/visitors/typeresolver/finish/PostTypeResolver.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/finish/PostTypeResolver.java similarity index 84% rename from src/main/java/jadx/dex/visitors/typeresolver/finish/PostTypeResolver.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/finish/PostTypeResolver.java index efaa0c6b6..0b92a8b71 100644 --- a/src/main/java/jadx/dex/visitors/typeresolver/finish/PostTypeResolver.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/finish/PostTypeResolver.java @@ -1,11 +1,11 @@ -package jadx.dex.visitors.typeresolver.finish; +package jadx.core.dex.visitors.typeresolver.finish; -import jadx.dex.instructions.IfNode; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.instructions.args.LiteralArg; -import jadx.dex.instructions.args.RegisterArg; -import jadx.dex.nodes.InsnNode; +import jadx.core.dex.instructions.IfNode; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.instructions.args.LiteralArg; +import jadx.core.dex.instructions.args.RegisterArg; +import jadx.core.dex.nodes.InsnNode; public class PostTypeResolver { diff --git a/src/main/java/jadx/dex/visitors/typeresolver/finish/SelectTypeVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/finish/SelectTypeVisitor.java similarity index 70% rename from src/main/java/jadx/dex/visitors/typeresolver/finish/SelectTypeVisitor.java rename to jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/finish/SelectTypeVisitor.java index 8dd2ab373..4031c688b 100644 --- a/src/main/java/jadx/dex/visitors/typeresolver/finish/SelectTypeVisitor.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeresolver/finish/SelectTypeVisitor.java @@ -1,8 +1,8 @@ -package jadx.dex.visitors.typeresolver.finish; +package jadx.core.dex.visitors.typeresolver.finish; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.InsnArg; -import jadx.dex.nodes.InsnNode; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.InsnArg; +import jadx.core.dex.nodes.InsnNode; public class SelectTypeVisitor { diff --git a/src/main/java/jadx/utils/BlockUtils.java b/jadx-core/src/main/java/jadx/core/utils/BlockUtils.java similarity index 95% rename from src/main/java/jadx/utils/BlockUtils.java rename to jadx-core/src/main/java/jadx/core/utils/BlockUtils.java index efa4b2f70..b9c53dc69 100644 --- a/src/main/java/jadx/utils/BlockUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/BlockUtils.java @@ -1,11 +1,11 @@ -package jadx.utils; +package jadx.core.utils; -import jadx.dex.attributes.AttributeType; -import jadx.dex.instructions.InsnType; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.InsnNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.exceptions.JadxRuntimeException; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.instructions.InsnType; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.InsnNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.exceptions.JadxRuntimeException; import java.util.ArrayList; import java.util.BitSet; diff --git a/src/main/java/jadx/utils/ErrorsCounter.java b/jadx-core/src/main/java/jadx/core/utils/ErrorsCounter.java similarity index 92% rename from src/main/java/jadx/utils/ErrorsCounter.java rename to jadx-core/src/main/java/jadx/core/utils/ErrorsCounter.java index 4e0b9f8b6..bc94ad3f5 100644 --- a/src/main/java/jadx/utils/ErrorsCounter.java +++ b/jadx-core/src/main/java/jadx/core/utils/ErrorsCounter.java @@ -1,9 +1,9 @@ -package jadx.utils; +package jadx.core.utils; -import jadx.dex.attributes.IAttributeNode; -import jadx.dex.attributes.JadxErrorAttr; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.MethodNode; +import jadx.core.dex.attributes.IAttributeNode; +import jadx.core.dex.attributes.JadxErrorAttr; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.MethodNode; import java.util.HashSet; import java.util.Set; diff --git a/src/main/java/jadx/utils/InsnUtils.java b/jadx-core/src/main/java/jadx/core/utils/InsnUtils.java similarity index 92% rename from src/main/java/jadx/utils/InsnUtils.java rename to jadx-core/src/main/java/jadx/core/utils/InsnUtils.java index 2cf2a4c27..2e9b06fef 100644 --- a/src/main/java/jadx/utils/InsnUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/InsnUtils.java @@ -1,6 +1,6 @@ -package jadx.utils; +package jadx.core.utils; -import jadx.dex.instructions.InsnType; +import jadx.core.dex.instructions.InsnType; import com.android.dx.io.instructions.DecodedInstruction; diff --git a/src/main/java/jadx/utils/RegionUtils.java b/jadx-core/src/main/java/jadx/core/utils/RegionUtils.java similarity index 92% rename from src/main/java/jadx/utils/RegionUtils.java rename to jadx-core/src/main/java/jadx/core/utils/RegionUtils.java index 39d6a266e..2c659b2da 100644 --- a/src/main/java/jadx/utils/RegionUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/RegionUtils.java @@ -1,13 +1,13 @@ -package jadx.utils; +package jadx.core.utils; -import jadx.dex.attributes.AttributeType; -import jadx.dex.nodes.BlockNode; -import jadx.dex.nodes.IContainer; -import jadx.dex.nodes.IRegion; -import jadx.dex.trycatch.CatchAttr; -import jadx.dex.trycatch.ExceptionHandler; -import jadx.dex.trycatch.TryCatchBlock; -import jadx.utils.exceptions.JadxRuntimeException; +import jadx.core.dex.attributes.AttributeType; +import jadx.core.dex.nodes.BlockNode; +import jadx.core.dex.nodes.IContainer; +import jadx.core.dex.nodes.IRegion; +import jadx.core.dex.trycatch.CatchAttr; +import jadx.core.dex.trycatch.ExceptionHandler; +import jadx.core.dex.trycatch.TryCatchBlock; +import jadx.core.utils.exceptions.JadxRuntimeException; import java.util.List; diff --git a/src/main/java/jadx/utils/StringUtils.java b/jadx-core/src/main/java/jadx/core/utils/StringUtils.java similarity index 97% rename from src/main/java/jadx/utils/StringUtils.java rename to jadx-core/src/main/java/jadx/core/utils/StringUtils.java index b2ad0c103..b427629aa 100644 --- a/src/main/java/jadx/utils/StringUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/StringUtils.java @@ -1,4 +1,4 @@ -package jadx.utils; +package jadx.core.utils; public class StringUtils { diff --git a/src/main/java/jadx/utils/Utils.java b/jadx-core/src/main/java/jadx/core/utils/Utils.java similarity index 99% rename from src/main/java/jadx/utils/Utils.java rename to jadx-core/src/main/java/jadx/core/utils/Utils.java index 20b9d2ac0..3e0cfd90f 100644 --- a/src/main/java/jadx/utils/Utils.java +++ b/jadx-core/src/main/java/jadx/core/utils/Utils.java @@ -1,4 +1,4 @@ -package jadx.utils; +package jadx.core.utils; import java.io.IOException; import java.io.PrintWriter; diff --git a/src/main/java/jadx/utils/exceptions/CodegenException.java b/jadx-core/src/main/java/jadx/core/utils/exceptions/CodegenException.java similarity index 84% rename from src/main/java/jadx/utils/exceptions/CodegenException.java rename to jadx-core/src/main/java/jadx/core/utils/exceptions/CodegenException.java index 4cf00a45b..a67d6e1a8 100644 --- a/src/main/java/jadx/utils/exceptions/CodegenException.java +++ b/jadx-core/src/main/java/jadx/core/utils/exceptions/CodegenException.java @@ -1,7 +1,7 @@ -package jadx.utils.exceptions; +package jadx.core.utils.exceptions; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.MethodNode; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.MethodNode; public class CodegenException extends JadxException { diff --git a/src/main/java/jadx/utils/exceptions/DecodeException.java b/jadx-core/src/main/java/jadx/core/utils/exceptions/DecodeException.java similarity index 85% rename from src/main/java/jadx/utils/exceptions/DecodeException.java rename to jadx-core/src/main/java/jadx/core/utils/exceptions/DecodeException.java index 1aa575f2e..2ab85f912 100644 --- a/src/main/java/jadx/utils/exceptions/DecodeException.java +++ b/jadx-core/src/main/java/jadx/core/utils/exceptions/DecodeException.java @@ -1,6 +1,6 @@ -package jadx.utils.exceptions; +package jadx.core.utils.exceptions; -import jadx.dex.nodes.MethodNode; +import jadx.core.dex.nodes.MethodNode; public class DecodeException extends JadxException { diff --git a/src/main/java/jadx/utils/exceptions/JadxException.java b/jadx-core/src/main/java/jadx/core/utils/exceptions/JadxException.java similarity index 77% rename from src/main/java/jadx/utils/exceptions/JadxException.java rename to jadx-core/src/main/java/jadx/core/utils/exceptions/JadxException.java index 1cfdbaef3..69c7b7b0d 100644 --- a/src/main/java/jadx/utils/exceptions/JadxException.java +++ b/jadx-core/src/main/java/jadx/core/utils/exceptions/JadxException.java @@ -1,8 +1,8 @@ -package jadx.utils.exceptions; +package jadx.core.utils.exceptions; -import jadx.dex.nodes.ClassNode; -import jadx.dex.nodes.MethodNode; -import jadx.utils.ErrorsCounter; +import jadx.core.dex.nodes.ClassNode; +import jadx.core.dex.nodes.MethodNode; +import jadx.core.utils.ErrorsCounter; public class JadxException extends Exception { diff --git a/src/main/java/jadx/utils/exceptions/JadxRuntimeException.java b/jadx-core/src/main/java/jadx/core/utils/exceptions/JadxRuntimeException.java similarity index 84% rename from src/main/java/jadx/utils/exceptions/JadxRuntimeException.java rename to jadx-core/src/main/java/jadx/core/utils/exceptions/JadxRuntimeException.java index 602cdbf35..a36f17864 100644 --- a/src/main/java/jadx/utils/exceptions/JadxRuntimeException.java +++ b/jadx-core/src/main/java/jadx/core/utils/exceptions/JadxRuntimeException.java @@ -1,4 +1,4 @@ -package jadx.utils.exceptions; +package jadx.core.utils.exceptions; public class JadxRuntimeException extends RuntimeException { diff --git a/src/main/java/jadx/utils/files/InputFile.java b/jadx-core/src/main/java/jadx/core/utils/files/InputFile.java similarity index 94% rename from src/main/java/jadx/utils/files/InputFile.java rename to jadx-core/src/main/java/jadx/core/utils/files/InputFile.java index 7472c6385..0f35f94d2 100644 --- a/src/main/java/jadx/utils/files/InputFile.java +++ b/jadx-core/src/main/java/jadx/core/utils/files/InputFile.java @@ -1,7 +1,7 @@ -package jadx.utils.files; +package jadx.core.utils.files; -import jadx.utils.exceptions.DecodeException; -import jadx.utils.exceptions.JadxException; +import jadx.core.utils.exceptions.DecodeException; +import jadx.core.utils.exceptions.JadxException; import java.io.ByteArrayOutputStream; import java.io.File; diff --git a/src/main/java/jadx/utils/files/JavaToDex.java b/jadx-core/src/main/java/jadx/core/utils/files/JavaToDex.java similarity index 94% rename from src/main/java/jadx/utils/files/JavaToDex.java rename to jadx-core/src/main/java/jadx/core/utils/files/JavaToDex.java index c3d746fb1..098d8ca9c 100644 --- a/src/main/java/jadx/utils/files/JavaToDex.java +++ b/jadx-core/src/main/java/jadx/core/utils/files/JavaToDex.java @@ -1,6 +1,6 @@ -package jadx.utils.files; +package jadx.core.utils.files; -import jadx.utils.exceptions.JadxException; +import jadx.core.utils.exceptions.JadxException; import java.io.ByteArrayOutputStream; import java.io.PrintStream; diff --git a/src/main/resources/logback.xml b/jadx-core/src/main/resources/logback.xml similarity index 100% rename from src/main/resources/logback.xml rename to jadx-core/src/main/resources/logback.xml diff --git a/src/test/java/jadx/tests/StringUtilsTest.java b/jadx-core/src/test/java/jadx/tests/StringUtilsTest.java similarity index 95% rename from src/test/java/jadx/tests/StringUtilsTest.java rename to jadx-core/src/test/java/jadx/tests/StringUtilsTest.java index 48d660c94..05f2676ad 100644 --- a/src/test/java/jadx/tests/StringUtilsTest.java +++ b/jadx-core/src/test/java/jadx/tests/StringUtilsTest.java @@ -1,6 +1,6 @@ package jadx.tests; -import jadx.utils.StringUtils; +import jadx.core.utils.StringUtils; import junit.framework.TestCase; public class StringUtilsTest extends TestCase { diff --git a/src/test/java/jadx/tests/TypeMergeTest.java b/jadx-core/src/test/java/jadx/tests/TypeMergeTest.java similarity index 69% rename from src/test/java/jadx/tests/TypeMergeTest.java rename to jadx-core/src/test/java/jadx/tests/TypeMergeTest.java index 346f0a610..041cd4aac 100644 --- a/src/test/java/jadx/tests/TypeMergeTest.java +++ b/jadx-core/src/test/java/jadx/tests/TypeMergeTest.java @@ -1,19 +1,20 @@ package jadx.tests; -import static jadx.dex.instructions.args.ArgType.BOOLEAN; -import static jadx.dex.instructions.args.ArgType.CHAR; -import static jadx.dex.instructions.args.ArgType.INT; -import static jadx.dex.instructions.args.ArgType.LONG; -import static jadx.dex.instructions.args.ArgType.NARROW; -import static jadx.dex.instructions.args.ArgType.OBJECT; -import static jadx.dex.instructions.args.ArgType.UNKNOWN; -import static jadx.dex.instructions.args.ArgType.UNKNOWN_OBJECT; -import static jadx.dex.instructions.args.ArgType.object; -import static jadx.dex.instructions.args.ArgType.unknown; -import jadx.dex.instructions.args.ArgType; -import jadx.dex.instructions.args.PrimitiveType; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.dex.instructions.args.PrimitiveType; import junit.framework.TestCase; +import static jadx.core.dex.instructions.args.ArgType.BOOLEAN; +import static jadx.core.dex.instructions.args.ArgType.CHAR; +import static jadx.core.dex.instructions.args.ArgType.INT; +import static jadx.core.dex.instructions.args.ArgType.LONG; +import static jadx.core.dex.instructions.args.ArgType.NARROW; +import static jadx.core.dex.instructions.args.ArgType.OBJECT; +import static jadx.core.dex.instructions.args.ArgType.UNKNOWN; +import static jadx.core.dex.instructions.args.ArgType.UNKNOWN_OBJECT; +import static jadx.core.dex.instructions.args.ArgType.object; +import static jadx.core.dex.instructions.args.ArgType.unknown; + public class TypeMergeTest extends TestCase { public void testMerge() { diff --git a/jadx-gui/src/main/java/jadx/gui/JadxGUI.java b/jadx-gui/src/main/java/jadx/gui/JadxGUI.java new file mode 100644 index 000000000..b7c401a80 --- /dev/null +++ b/jadx-gui/src/main/java/jadx/gui/JadxGUI.java @@ -0,0 +1,35 @@ +package jadx.gui; + +import jadx.cli.JadxArgs; + +import javax.swing.*; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class JadxGUI { + private static final Logger LOG = LoggerFactory.getLogger(JadxGUI.class); + + public static void main(String[] args) { + final JadxArgs jadxArgs = new JadxArgs(args, false); + + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Throwable e) { + LOG.error("Error: " + e.getMessage()); + System.exit(1); + } + + SwingUtilities.invokeLater(new Runnable() { + public void run() { + MainWindow mainWindow = new MainWindow(jadxArgs); + mainWindow.setVisible(true); + + if(!jadxArgs.getInput().isEmpty()) { + mainWindow.openFile(jadxArgs.getInput().get(0)); + } + } + }); + } +} + diff --git a/jadx-gui/src/main/java/jadx/gui/JadxWrapper.java b/jadx-gui/src/main/java/jadx/gui/JadxWrapper.java new file mode 100644 index 000000000..82af2864f --- /dev/null +++ b/jadx-gui/src/main/java/jadx/gui/JadxWrapper.java @@ -0,0 +1,38 @@ +package jadx.gui; + +import jadx.api.IJadxArgs; +import jadx.api.Decompiler; +import jadx.api.JavaClass; +import jadx.api.JavaPackage; +import jadx.core.utils.exceptions.DecodeException; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +public class JadxWrapper { + private final Decompiler decompiler; + + public JadxWrapper(IJadxArgs jadxArgs) { + this.decompiler = new Decompiler(jadxArgs); + } + + public void openFile(File file) { + try { + this.decompiler.loadFile(file); + } catch (IOException e) { + e.printStackTrace(); + } catch (DecodeException e) { + e.printStackTrace(); + } + } + + public List getClasses() { + return decompiler.getClasses(); + } + + public List getPackages() { + return decompiler.getPackages(); + } + +} diff --git a/jadx-gui/src/main/java/jadx/gui/MainWindow.java b/jadx-gui/src/main/java/jadx/gui/MainWindow.java new file mode 100644 index 000000000..61bb664e0 --- /dev/null +++ b/jadx-gui/src/main/java/jadx/gui/MainWindow.java @@ -0,0 +1,164 @@ +package jadx.gui; + +import jadx.api.JavaClass; +import jadx.api.JavaPackage; +import jadx.cli.JadxArgs; +import jadx.gui.model.JClass; +import jadx.core.utils.exceptions.JadxRuntimeException; + +import javax.swing.*; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; +import javax.swing.filechooser.FileFilter; +import javax.swing.filechooser.FileNameExtensionFilter; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.MutableTreeNode; +import javax.swing.tree.TreeSelectionModel; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.io.File; +import java.net.URL; + +import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; +import org.fife.ui.rsyntaxtextarea.SyntaxConstants; +import org.fife.ui.rtextarea.RTextScrollPane; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class MainWindow extends JFrame { + private static final Logger LOG = LoggerFactory.getLogger(MainWindow.class); + + public static final String DEFAULT_TITLE = "jadx-gui"; + public static final Color BACKGROUND = new Color(0xf7f7f7); + + private final JadxWrapper wrapper; + private JPanel mainPanel; + private DefaultMutableTreeNode treeRoot; + private JTree tree; + private RSyntaxTextArea textArea; + + public MainWindow(JadxArgs jadxArgs) { + this.wrapper = new JadxWrapper(jadxArgs); + + initUI(); + initMenu(); + } + + private void initMenu() { + JMenuBar menuBar = new JMenuBar(); + + JMenu file = new JMenu("File"); + file.setMnemonic(KeyEvent.VK_F); + + JMenuItem exit = new JMenuItem("Exit", openIcon("application-exit")); + exit.setMnemonic(KeyEvent.VK_E); + exit.setToolTipText("Exit application"); + exit.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent event) { + System.exit(0); + } + }); + + JMenuItem open = new JMenuItem("Open", openIcon("document-open-5")); + open.setMnemonic(KeyEvent.VK_E); + open.setToolTipText("Open file"); + open.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent event) { + JFileChooser fileChooser = new JFileChooser(); + FileFilter filter = new FileNameExtensionFilter("dex files", "dex", "apk", "jar"); + fileChooser.addChoosableFileFilter(filter); + int ret = fileChooser.showDialog(mainPanel, "Open file"); + if (ret == JFileChooser.APPROVE_OPTION) { + File file = fileChooser.getSelectedFile(); + openFile(file); + } + } + }); + + file.add(open); + file.addSeparator(); + file.add(exit); + + menuBar.add(file); + setJMenuBar(menuBar); + } + + public void openFile(File file) { + wrapper.openFile(file); + initTree(); + setTitle(DEFAULT_TITLE + " - " + file.getName()); + } + + private void initTree() { + treeRoot.removeAllChildren(); + for (JavaPackage pkg : wrapper.getPackages()) { + MutableTreeNode child = new DefaultMutableTreeNode(pkg); + int i = 0; + for (JavaClass javaClass : pkg.getClasses()) { + MutableTreeNode cls = new DefaultMutableTreeNode(new JClass(javaClass)); + child.insert(cls, i++); + } + treeRoot.add(child); + } + tree.expandRow(0); + } + + private ImageIcon openIcon(String name) { + String iconPath = "/icons-16/" + name + ".png"; + URL resource = getClass().getResource(iconPath); + if (resource == null) { + throw new JadxRuntimeException("Icon not found: " + iconPath); + } + return new ImageIcon(resource); + } + + private void initUI() { + mainPanel = new JPanel(new BorderLayout()); + JSplitPane splitPane = new JSplitPane(); + mainPanel.add(splitPane); + + treeRoot = new DefaultMutableTreeNode("Please open file"); + tree = new JTree(treeRoot); +// tree.setRootVisible(false); +// tree.setBackground(BACKGROUND); + tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); + tree.addTreeSelectionListener(new TreeSelectionListener() { + @Override + public void valueChanged(TreeSelectionEvent e) { + Object node = tree.getLastSelectedPathComponent(); + if (node instanceof DefaultMutableTreeNode) { + Object obj = ((DefaultMutableTreeNode) node).getUserObject(); + if (obj instanceof JClass) { + JavaClass jc = ((JClass) obj).getCls(); + String code = jc.getCode(); + textArea.setText(code); + textArea.setCaretPosition(0); + } + } + } + }); + + JScrollPane treeScrollPane = new JScrollPane(tree); + splitPane.setLeftComponent(treeScrollPane); + + textArea = new RSyntaxTextArea(20, 60); + textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA); + textArea.setMarkOccurrences(true); + textArea.setBackground(BACKGROUND); + textArea.setCodeFoldingEnabled(true); + textArea.setAntiAliasingEnabled(true); + // textArea.setHyperlinksEnabled(true); + textArea.setTabSize(4); + RTextScrollPane scrollPane = new RTextScrollPane(textArea); + scrollPane.setFoldIndicatorEnabled(true); + splitPane.setRightComponent(scrollPane); + + setContentPane(mainPanel); + setTitle(DEFAULT_TITLE); + setDefaultCloseOperation(DISPOSE_ON_CLOSE); + pack(); + setLocationRelativeTo(null); + } +} diff --git a/jadx-gui/src/main/java/jadx/gui/model/JClass.java b/jadx-gui/src/main/java/jadx/gui/model/JClass.java new file mode 100644 index 000000000..39a0adf7f --- /dev/null +++ b/jadx-gui/src/main/java/jadx/gui/model/JClass.java @@ -0,0 +1,21 @@ +package jadx.gui.model; + +import jadx.api.JavaClass; + +public class JClass { + + private final JavaClass cls; + + public JClass(JavaClass cls) { + this.cls = cls; + } + + public JavaClass getCls() { + return cls; + } + + @Override + public String toString() { + return cls.getShortName(); + } +} diff --git a/jadx-gui/src/main/resources/icons-16/application-exit.png b/jadx-gui/src/main/resources/icons-16/application-exit.png new file mode 100644 index 0000000000000000000000000000000000000000..fc8ab3008468a8297b2b0a9e8b43690955ff9365 GIT binary patch literal 931 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE!)l?6A%7zXe;;g{c@`q6t3NL zzCM>Hj72+vwQ29~tY@DtD(83>U!S>7tZcjOlAWe3E1zx1o#@6O|8!43pEER_mR3{N_344dwv|hlDTVa2seO8P$U#}P z_UL?{^h-8#<}NER_P%h%D^*v1-Tm(ms>{taT7yi4$6CLVbt^1x< zy7%kF$LWo~zU{2>bZ4%O>ApO1!`0ZA4%xEo0ln8OXG+!G6zh-ItiG3UFZRb#!H?p4 zkAAU6@Vkiu(}rq^YeY#(Vo9o1a#1RfVlXl=G|)9L)ip8+F)+6>wy*-S4a}?z41_lA z{fD9b88S*r3as??!FFYqr6%X+=H}-W>*W`v z>*qj}6zeBd>J}&J8|xY9C%#!92sA+wWI}L$T1k0gQ7S`udAVL@UUqSEVnHfM^WdhX(n8-BJv6Oj>G6eo}b@(E4+OP4TST(*3{(uK}eE=TPhLpr*w7WJ;_VA9wiqUqvj#3Gb*T=Cn_oV@pW z``ZqsPhQ|*vggveWtH=0#_~E(G~f|D{_*P6sZ(!H^*XAobj;HJJHvy&b@l2zhkXUx z9%gNg%4OK#C~zk>I=Whhg>n0}CPOxcgvmbH9EvWhuU7FT1e-|pF8^Bfx6$xe=Gw@e zG2hw`D{j)U)@5M$v9CXCYgf=pmgF84C604HI}FvfT>D_dpE*mZOGzR*?Lo*P%l05H zCyp;wd-tYo=3F?%N=fNb)aIzQZ5mPuHge1fGd}U~BuqXP#jN@CLBjvv#~0^`E1mx= zCn%ZRbACsEetT_1`tloFY%QKYnAaW=_2&PJH~U`e_CCEc^|aFIP05-|Kec}N9m#q8 znNZ6E3t6TEG7RhjjH|Yl{5`jK=ht`Vcj$hyd9Us{Nnc+-USdP#8Qr)RX6B15s0vlGgq{-M)#%olnC-kg8fDZHW2p=4EYVj+u#yFpo!k=NWgJd^pIG^cvZJTl+zz2dq%4etfllokY^e8Xun z`&9A)jg#fyteayErFw&=KEL?wy4J8JOrAm|Gbb$ns6jgJ}S%w1VgYYA`g=H89dOG6*p;wlXra zGBkx~V6%>CMA49&pOTqY3DsbzYh)H;Xl`X{0<;98K|Ox998iN1$Von#$*Fn8sSFt< zB?VUc`l)$(<(b);1*s{SiF)}(>G~j^en4qbPG)j^N`7u)W}f}uSLb2YL2M%6A*cOM zqktMDLDmK5r9)Ra9Z S)?Nde!r passes = getPassesList(args); - if (threadsCount == 1) { - for (ClassNode cls : root.getClasses()) { - ProcessClass job = new ProcessClass(cls, passes); - job.run(); - } - } else { - ExecutorService executor = Executors.newFixedThreadPool(threadsCount); - for (ClassNode cls : root.getClasses()) { - ProcessClass job = new ProcessClass(cls, passes); - executor.execute(job); - } - executor.shutdown(); - executor.awaitTermination(100, TimeUnit.DAYS); - } - } catch (Throwable e) { - LOG.error("jadx error:", e); - } finally { - errorsCount = ErrorsCounter.getErrorCount(); - if (errorsCount != 0) - ErrorsCounter.printReport(); - - // clear resources if we use jadx as a library - ClassInfo.clearCache(); - ErrorsCounter.reset(); - } - LOG.info("done"); - } - - private static List getPassesList(IJadxArgs args) { - List passes = new ArrayList(); - if (args.isFallbackMode()) { - passes.add(new FallbackModeVisitor()); - } else { - passes.add(new BlockMakerVisitor()); - - passes.add(new TypeResolver()); - passes.add(new ConstInlinerVisitor()); - passes.add(new FinishTypeResolver()); - - if (args.isRawCFGOutput()) - passes.add(new DotGraphVisitor(args.getOutDir(), false, true)); - - passes.add(new ModVisitor()); - passes.add(new EnumVisitor()); - - if (args.isCFGOutput()) - passes.add(new DotGraphVisitor(args.getOutDir(), false)); - - passes.add(new RegionMakerVisitor()); - passes.add(new PostRegionVisitor()); - - passes.add(new CodeShrinker()); - passes.add(new ProcessVariables()); - passes.add(new CheckRegions()); - if (args.isCFGOutput()) - passes.add(new DotGraphVisitor(args.getOutDir(), true)); - - passes.add(new MethodInlinerVisitor()); - passes.add(new ClassModifier()); - passes.add(new CleanRegions()); - } - passes.add(new CodeGen(args)); - return passes; - } - - public int getErrorsCount() { - return errorsCount; - } -} diff --git a/src/main/java/jadx/Main.java b/src/main/java/jadx/Main.java deleted file mode 100644 index 88ddf46ea..000000000 --- a/src/main/java/jadx/Main.java +++ /dev/null @@ -1,35 +0,0 @@ -package jadx; - -import jadx.utils.exceptions.JadxException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class Main { - private static final Logger LOG = LoggerFactory.getLogger(Main.class); - - public static void main(String[] args) { - JadxArgs jadxArgs = new JadxArgs(); - jadxArgs.parse(args); - if (jadxArgs.isPrintHelp()) { - jadxArgs.printUsage(); - System.exit(0); - } - - if (jadxArgs.isVerbose()) { - ch.qos.logback.classic.Logger rootLogger = - (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); - rootLogger.setLevel(ch.qos.logback.classic.Level.DEBUG); - } - - try { - jadxArgs.processArgs(); - } catch (JadxException e) { - LOG.error("Error: " + e.getMessage()); - System.exit(1); - } - - Jadx jadx = new Jadx(jadxArgs); - jadx.run(); - System.exit(jadx.getErrorsCount()); - } -} diff --git a/src/main/java/jadx/dex/nodes/IContainer.java b/src/main/java/jadx/dex/nodes/IContainer.java deleted file mode 100644 index dcb971df6..000000000 --- a/src/main/java/jadx/dex/nodes/IContainer.java +++ /dev/null @@ -1,11 +0,0 @@ -package jadx.dex.nodes; - -import jadx.dex.attributes.AttributesList; -import jadx.dex.attributes.IAttributeNode; - -public interface IContainer extends IAttributeNode { - - @Override - public AttributesList getAttributes(); - -}