diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java index c9aae57a4..cac26a3b2 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java @@ -18,11 +18,11 @@ import com.android.dex.ClassData.Method; import com.android.dex.ClassDef; import com.android.dex.Code; import com.android.dex.Dex; +import com.android.dex.Dex.Section; import com.android.dex.FieldId; import com.android.dex.MethodId; import com.android.dex.ProtoId; import com.android.dex.TypeList; -import com.android.dex.TableOfContents; public class DexNode { @@ -116,7 +116,7 @@ public class DexNode { return dexBuf.readCode(mth); } - public Dex.Section openSection(int offset) { + public Section openSection(int offset) { return dexBuf.open(offset); } diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java index 395b93982..fee9cb01f 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java @@ -238,24 +238,10 @@ public class MethodNode extends LineAttrNode implements ILoadable { return genericMap; } - // TODO: move to external class private void initTryCatches(Code mthCode, InsnNode[] insnByOffset) { CatchHandler[] catchBlocks = mthCode.getCatchHandlers(); Try[] tries = mthCode.getTries(); - // Bug in dx library already fixed (Try.getHandlerOffset() replaced by Try.getCatchHandlerIndex()) - // and we don't need this mapping anymore, - // but in maven repository still old version - Set handlerSet = new HashSet(tries.length); - for (Try aTry : tries) { - handlerSet.add(aTry.getCatchHandlerIndex()); - } - List handlerList = new ArrayList(catchBlocks.length); - handlerList.addAll(handlerSet); - Collections.sort(handlerList); - handlerSet = null; - // ------------------- - int hc = 0; Set addrs = new HashSet(); List catches = new ArrayList(catchBlocks.length); @@ -306,7 +292,7 @@ public class MethodNode extends LineAttrNode implements ILoadable { // attach TRY_ENTER, TRY_LEAVE attributes to instructions for (Try aTry : tries) { - int catchNum = handlerList.indexOf(aTry.getCatchHandlerIndex()); + int catchNum = aTry.getCatchHandlerIndex(); TryCatchBlock block = catches.get(catchNum); int offset = aTry.getStartAddress(); int end = offset + aTry.getInstructionCount() - 1; diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java index c2fcbe1a5..2b10d0d82 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/AnnotationsParser.java @@ -16,7 +16,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import com.android.dex.Dex; +import com.android.dex.Dex.Section; public class AnnotationsParser { @@ -35,7 +35,7 @@ public class AnnotationsParser { } public void parse(int offset) throws DecodeException { - Dex.Section section = dex.openSection(offset); + Section section = dex.openSection(offset); // TODO read as unsigned int int classAnnotationsOffset = section.readInt(); @@ -60,7 +60,7 @@ public class AnnotationsParser { for (int i = 0; i < annotatedParametersCount; i++) { MethodNode mth = cls.searchMethodById(section.readInt()); // read annotation ref list - Dex.Section ss = dex.openSection(section.readInt()); + Section ss = dex.openSection(section.readInt()); int size = ss.readInt(); MethodParameters params = new MethodParameters(size); for (int j = 0; j < size; j++) { @@ -71,18 +71,18 @@ public class AnnotationsParser { } private AnnotationsList readAnnotationSet(int offset) throws DecodeException { - Dex.Section section = dex.openSection(offset); + Section section = dex.openSection(offset); int size = section.readInt(); List list = new ArrayList(size); for (int i = 0; i < size; i++) { - Dex.Section anSection = dex.openSection(section.readInt()); + Section anSection = dex.openSection(section.readInt()); Annotation a = readAnnotation(dex, anSection, true); list.add(a); } return new AnnotationsList(list); } - public static Annotation readAnnotation(DexNode dex, Dex.Section s, boolean readVisibility) throws DecodeException { + public static Annotation readAnnotation(DexNode dex, Section s, boolean readVisibility) throws DecodeException { EncValueParser parser = new EncValueParser(dex, s); Visibility visibility = null; if (readVisibility) { diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/DebugInfoParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/DebugInfoParser.java index 715f73cc8..476f69df4 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/DebugInfoParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/DebugInfoParser.java @@ -10,7 +10,7 @@ import jadx.core.utils.exceptions.DecodeException; import java.util.List; -import com.android.dex.Dex; +import com.android.dex.Dex.Section; public class DebugInfoParser { @@ -33,7 +33,7 @@ public class DebugInfoParser { private static final int DBG_LINE_RANGE = 15; private final MethodNode mth; - private final Dex.Section section; + private final Section section; private final DexNode dex; private final LocalVar[] locals; diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/EncValueParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/EncValueParser.java index e453fef25..3a2ec8255 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/EncValueParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/EncValueParser.java @@ -8,37 +8,33 @@ import jadx.core.utils.exceptions.DecodeException; import java.util.ArrayList; import java.util.List; -import com.android.dex.Dex; -import com.android.dex.EncodedValue; -import com.android.dex.EncodedValueReader; +import com.android.dex.Dex.Section; import com.android.dex.Leb128; -import com.android.dex.util.ByteInput; public class EncValueParser { public static final int ENCODED_BYTE = 0x00; - public static final int ENCODED_SHORT = 0x02; - public static final int ENCODED_CHAR = 0x03; - public static final int ENCODED_INT = 0x04; - public static final int ENCODED_LONG = 0x06; - public static final int ENCODED_FLOAT = 0x10; - public static final int ENCODED_DOUBLE = 0x11; - public static final int ENCODED_STRING = 0x17; - public static final int ENCODED_TYPE = 0x18; - public static final int ENCODED_FIELD = 0x19; - public static final int ENCODED_ENUM = 0x1b; - public static final int ENCODED_METHOD = 0x1a; - public static final int ENCODED_ARRAY = 0x1c; - public static final int ENCODED_ANNOTATION = 0x1d; - public static final int ENCODED_NULL = 0x1e; - public static final int ENCODED_BOOLEAN = 0x1f; - - protected final Dex.Section in; - + public static final int ENCODED_SHORT = 0x02; + public static final int ENCODED_CHAR = 0x03; + public static final int ENCODED_INT = 0x04; + public static final int ENCODED_LONG = 0x06; + public static final int ENCODED_FLOAT = 0x10; + public static final int ENCODED_DOUBLE = 0x11; + public static final int ENCODED_STRING = 0x17; + public static final int ENCODED_TYPE = 0x18; + public static final int ENCODED_FIELD = 0x19; + public static final int ENCODED_ENUM = 0x1b; + public static final int ENCODED_METHOD = 0x1a; + public static final int ENCODED_ARRAY = 0x1c; + public static final int ENCODED_ANNOTATION = 0x1d; + public static final int ENCODED_NULL = 0x1e; + public static final int ENCODED_BOOLEAN = 0x1f; + + protected final Section in; + private final DexNode dex; - public EncValueParser(DexNode dex, Dex.Section in) { - //super(in); + public EncValueParser(DexNode dex, Section in) { this.in = in; this.dex = dex; } @@ -94,7 +90,7 @@ public class EncValueParser { return values; case ENCODED_ANNOTATION: - return AnnotationsParser.readAnnotation(dex, (Dex.Section) in, false); + return AnnotationsParser.readAnnotation(dex, in, false); } throw new DecodeException("Unknown encoded value type: 0x" + Integer.toHexString(type)); } diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/StaticValuesParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/StaticValuesParser.java index 42ecb09b5..e68271631 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/StaticValuesParser.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/StaticValuesParser.java @@ -6,12 +6,12 @@ import jadx.core.utils.exceptions.DecodeException; import java.util.List; -import com.android.dex.Dex; +import com.android.dex.Dex.Section; import com.android.dex.Leb128; public class StaticValuesParser extends EncValueParser { - public StaticValuesParser(DexNode dex, Dex.Section in) { + public StaticValuesParser(DexNode dex, Section in) { super(dex, in); } diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/PrepareForCodeGen.java b/jadx-core/src/main/java/jadx/core/dex/visitors/PrepareForCodeGen.java index 3611aaaff..218ff79bf 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/PrepareForCodeGen.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/PrepareForCodeGen.java @@ -66,7 +66,7 @@ public class PrepareForCodeGen extends AbstractVisitor { if (insn.getType() == InsnType.MOVE && insn.getArg(0).isInsnWrap() && !insn.getAttributes().contains(AttributeFlag.DECLARE_VAR)) { - InsnNode wrapInsn = ((InsnWrapArg)insn.getArg(0)).getWrapInsn(); + InsnNode wrapInsn = ((InsnWrapArg) insn.getArg(0)).getWrapInsn(); wrapInsn.setResult(insn.getResult()); list.set(i, wrapInsn); } diff --git a/jadx-core/src/test/java/jadx/api/InternalJadxTest.java b/jadx-core/src/test/java/jadx/api/InternalJadxTest.java index 2cf323947..7fe343a3e 100644 --- a/jadx-core/src/test/java/jadx/api/InternalJadxTest.java +++ b/jadx-core/src/test/java/jadx/api/InternalJadxTest.java @@ -18,12 +18,12 @@ import java.util.List; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.fail; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.not; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; public abstract class InternalJadxTest extends TestUtils { diff --git a/jadx-core/src/test/java/jadx/core/dex/nodes/parser/TestSignatureParser.java b/jadx-core/src/test/java/jadx/core/dex/nodes/parser/TestSignatureParser.java index 9834ebbb9..631007b60 100644 --- a/jadx-core/src/test/java/jadx/core/dex/nodes/parser/TestSignatureParser.java +++ b/jadx-core/src/test/java/jadx/core/dex/nodes/parser/TestSignatureParser.java @@ -37,7 +37,8 @@ public class TestSignatureParser { assertEquals(p("La;>;").consumeType(), ArgType.generic("La;", new ArgType[]{ ArgType.generic("Lb;", new ArgType[]{ - ArgType.object("Lc;")})})); + ArgType.object("Lc;")})}) + ); } @Test @@ -47,7 +48,8 @@ public class TestSignatureParser { assertEquals(p("La.c;").consumeType(), ArgType.genericInner(ArgType.generic("La;", new ArgType[]{ArgType.object("Lb;")}), - "c", new ArgType[]{ArgType.genericType("V")})); + "c", new ArgType[]{ArgType.genericType("V")}) + ); assertEquals(p("La.LinkedHashIterator;>;").consumeType().getObject(), "a$LinkedHashIterator"); diff --git a/jadx-core/src/test/java/jadx/tests/internal/conditions/TestConditions5.java b/jadx-core/src/test/java/jadx/tests/internal/conditions/TestConditions5.java index 083f6cd89..40b09602c 100644 --- a/jadx-core/src/test/java/jadx/tests/internal/conditions/TestConditions5.java +++ b/jadx-core/src/test/java/jadx/tests/internal/conditions/TestConditions5.java @@ -14,8 +14,9 @@ public class TestConditions5 extends InternalJadxTest { public static class TestCls { public static void assertEquals(Object a1, Object a2) { if (a1 == null) { - if (a2 != null) + if (a2 != null) { throw new AssertionError(a1 + " != " + a2); + } } else if (!a1.equals(a2)) { throw new AssertionError(a1 + " != " + a2); }