Skip to content

Commit 8ab6965

Browse files
committed
Bump ASM version to 8.0.1
1 parent 0017ae8 commit 8ab6965

File tree

6 files changed

+30
-15
lines changed

6 files changed

+30
-15
lines changed

pom.xml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<version>1.0.0</version>
77
<properties>
88
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
9-
<version.asm>6.0</version.asm>
9+
<version.asm>8.0.1</version.asm>
1010
</properties>
1111
<build>
1212
<sourceDirectory>src/main/java</sourceDirectory>
@@ -142,11 +142,6 @@
142142
<version>4.12</version>
143143
<scope>test</scope>
144144
</dependency>
145-
<dependency>
146-
<groupId>com.javadeobfuscator</groupId>
147-
<artifactId>javavm</artifactId>
148-
<version>3.0.0</version>
149-
</dependency>
150145

151146
<!-- ASM related dependencies -->
152147
<dependency>
@@ -174,5 +169,11 @@
174169
<artifactId>asm-analysis</artifactId>
175170
<version>${version.asm}</version>
176171
</dependency>
172+
173+
<dependency>
174+
<groupId>com.javadeobfuscator</groupId>
175+
<artifactId>javavm</artifactId>
176+
<version>3.0.0</version>
177+
</dependency>
177178
</dependencies>
178179
</project>

src/main/java/com/javadeobfuscator/deobfuscator/executor/MethodExecutor.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,9 +1706,15 @@ else if(argumentTypes[i + 3].getSort() == Type.DOUBLE)
17061706
case CHECKCAST: {
17071707
TypeInsnNode cast = (TypeInsnNode) now;
17081708
JavaValue obj = stack.get(0);
1709+
Type type;
1710+
try {
1711+
type = Type.getType(cast.desc);
1712+
} catch (Throwable ignored) {
1713+
type = Type.getObjectType(cast.desc);
1714+
}
17091715
if (obj.value() != null) {
1710-
if (context.provider.canCheckcast(obj, Type.getType(cast.desc), context)) {
1711-
if (!context.provider.checkcast(obj, Type.getType(cast.desc), context)) {
1716+
if (context.provider.canCheckcast(obj, type, context)) {
1717+
if (!context.provider.checkcast(obj, type, context)) {
17121718
throw new ClassCastException(cast.desc);
17131719
}
17141720
} else {
@@ -1720,8 +1726,14 @@ else if(argumentTypes[i + 3].getSort() == Type.DOUBLE)
17201726
case INSTANCEOF: {
17211727
TypeInsnNode cast = (TypeInsnNode) now;
17221728
JavaValue obj = stack.remove(0);
1723-
if (context.provider.canCheckInstanceOf(obj, Type.getType(cast.desc), context)) {
1724-
boolean is = context.provider.instanceOf(obj, Type.getType(cast.desc), context);
1729+
Type type;
1730+
try {
1731+
type = Type.getType(cast.desc);
1732+
} catch (Throwable ignored) {
1733+
type = Type.getObjectType(cast.desc);
1734+
}
1735+
if (context.provider.canCheckInstanceOf(obj, type, context)) {
1736+
boolean is = context.provider.instanceOf(obj, type, context);
17251737
stack.add(0, new JavaInteger(is ? 1 : 0));
17261738
} else {
17271739
throw new NoSuchComparisonHandlerException("No comparator found for " + cast.desc);

src/main/java/com/javadeobfuscator/deobfuscator/executor/defined/JVMMethodProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ public class JVMMethodProvider extends MethodProvider {
256256
targetObject.initialize(new String(args.get(0).as(byte[].class), args.get(1).as(String.class)));
257257
return null;
258258
});
259+
put("getBytes()[B", (targetObject, args, context) -> targetObject.as(String.class).getBytes());
259260
put("getBytes(Ljava/nio/charset/Charset;)[B", (targetObject, args, context) -> targetObject.as(String.class).getBytes(args.get(0).as(Charset.class)));
260261
put("toString()Ljava/lang/String;", (targetObject, args, context) -> targetObject.as(String.class).toString());
261262
put("intern()Ljava/lang/String;", (targetObject, args, context) -> targetObject.as(String.class).intern());
@@ -674,6 +675,7 @@ public class JVMMethodProvider extends MethodProvider {
674675
return null;
675676
});
676677
put("parseInt(Ljava/lang/String;)I", (targetObject, args, context) -> Integer.parseInt(args.get(0).as(String.class)));
678+
put("parseInt(Ljava/lang/String;I)I", (targetObject, args, context) -> Integer.parseInt(args.get(0).as(String.class), args.get(1).intValue()));
677679
put("valueOf(Ljava/lang/String;)Ljava/lang/Integer;", (targetObject, args, context) -> Integer.valueOf(args.get(0).as(String.class)));
678680
put("valueOf(Ljava/lang/String;I)Ljava/lang/Integer;", (targetObject, args, context) -> Integer.valueOf(args.get(0).as(String.class), args.get(1).intValue()));
679681
put("valueOf(I)Ljava/lang/Integer;", (targetObject, args, context) -> Integer.valueOf(args.get(0).intValue()));

src/main/java/com/javadeobfuscator/deobfuscator/transformers/special/ParamorphismTransformer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public boolean transform()
6262
provider.register(new ComparisonProvider() {
6363
@Override
6464
public boolean instanceOf(JavaValue target, Type type, Context context) {
65-
if(target.type().equals("java/lang/Class")
65+
if(target.type().equals("Ljava/lang/Class;")
6666
&& type.getDescriptor().equals("Ljava/lang/Class;"))
6767
return true;
6868
return false;
@@ -85,7 +85,7 @@ public boolean checkEquality(JavaValue first, JavaValue second, Context context)
8585

8686
@Override
8787
public boolean canCheckInstanceOf(JavaValue target, Type type, Context context) {
88-
if(type.getDescriptor().equals("java/lang/Class"))
88+
if(type.getDescriptor().equals("Ljava/lang/Class;"))
8989
return true;
9090
return false;
9191
}

src/main/java/com/javadeobfuscator/deobfuscator/transformers/stringer/HideAccessObfuscationTransformer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ private class MyInterpreter extends BasicInterpreter
594594
public BasicValue newValue(final Type type)
595595
{
596596
if(type == null)
597-
return new BasicValue(Type.getType("java/lang/Object"));
597+
return new BasicValue(Type.getType("Ljava/lang/Object;"));
598598
switch(type.getSort())
599599
{
600600
case Type.VOID:
@@ -633,7 +633,7 @@ public BasicValue binaryOperation(final AbstractInsnNode insn,
633633
public BasicValue merge(final BasicValue v, final BasicValue w)
634634
{
635635
if(!v.equals(w))
636-
return new BasicValue(Type.getType("java/lang/Object"));
636+
return new BasicValue(Type.getType("Ljava/lang/Object;"));
637637
return v;
638638
}
639639
}

src/main/java/com/javadeobfuscator/deobfuscator/transformers/zelix/ReflectionObfuscationTransformer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public int inlineReflection(int expected) throws Throwable {
8181
provider.register(new ComparisonProvider() {
8282
@Override
8383
public boolean instanceOf(JavaValue target, Type type, Context context) {
84-
return type.getDescriptor().equals("java/lang/String") && target.value() instanceof String;
84+
return type.getDescriptor().equals("Ljava/lang/String;") && target.value() instanceof String;
8585
}
8686

8787
@Override

0 commit comments

Comments
 (0)