Merge branch 'Konloch:master' into master
This commit is contained in:
commit
f8f0aea158
2 changed files with 15 additions and 12 deletions
6
pom.xml
6
pom.xml
|
@ -43,12 +43,12 @@
|
||||||
<smali.version>2.5.2</smali.version>
|
<smali.version>2.5.2</smali.version>
|
||||||
<snakeyaml.version>1.29</snakeyaml.version>
|
<snakeyaml.version>1.29</snakeyaml.version>
|
||||||
<xpp3.version>1.1.4c</xpp3.version>
|
<xpp3.version>1.1.4c</xpp3.version>
|
||||||
<jadx.version>f681c89</jadx.version>
|
<jadx.version>8e89a2e</jadx.version>
|
||||||
<dex2jar.version>v24</dex2jar.version>
|
<dex2jar.version>v26</dex2jar.version>
|
||||||
<darklaf.version>2.7.2</darklaf.version>
|
<darklaf.version>2.7.2</darklaf.version>
|
||||||
<darklaf-extensions-rsta.version>0.3.4</darklaf-extensions-rsta.version>
|
<darklaf-extensions-rsta.version>0.3.4</darklaf-extensions-rsta.version>
|
||||||
<webp-imageio.version>0.2.2</webp-imageio.version>
|
<webp-imageio.version>0.2.2</webp-imageio.version>
|
||||||
<semantic-version.version>2.1.0</semantic-version.version>
|
<semantic-version.version>2.1.1</semantic-version.version>
|
||||||
<treelayout.version>1.0.3</treelayout.version>
|
<treelayout.version>1.0.3</treelayout.version>
|
||||||
<antlr4.version>4.9.2</antlr4.version>
|
<antlr4.version>4.9.2</antlr4.version>
|
||||||
<js.version>21.2.0</js.version>
|
<js.version>21.2.0</js.version>
|
||||||
|
|
|
@ -5,7 +5,6 @@ import java.io.DataInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Objects;
|
|
||||||
import org.jd.core.v1.model.classfile.constant.Constant;
|
import org.jd.core.v1.model.classfile.constant.Constant;
|
||||||
import org.jd.core.v1.model.classfile.constant.ConstantClass;
|
import org.jd.core.v1.model.classfile.constant.ConstantClass;
|
||||||
import org.jd.core.v1.model.classfile.constant.ConstantUtf8;
|
import org.jd.core.v1.model.classfile.constant.ConstantUtf8;
|
||||||
|
@ -29,8 +28,9 @@ public class JDGUIClassFileUtil
|
||||||
BufferedInputStream bis = new BufferedInputStream(fis);
|
BufferedInputStream bis = new BufferedInputStream(fis);
|
||||||
DataInputStream dis = new DataInputStream(bis)) {
|
DataInputStream dis = new DataInputStream(bis)) {
|
||||||
int magic = dis.readInt();
|
int magic = dis.readInt();
|
||||||
if (magic != ClassFileReader.JAVA_MAGIC_NUMBER)
|
if (magic != ClassFileReader.JAVA_MAGIC_NUMBER) {
|
||||||
throw new ClassFileFormatException("Invalid Java .class file");
|
throw new ClassFileFormatException("Invalid Java .class file");
|
||||||
|
}
|
||||||
|
|
||||||
/* int minor_version = */
|
/* int minor_version = */
|
||||||
dis.readUnsignedShort();
|
dis.readUnsignedShort();
|
||||||
|
@ -43,16 +43,18 @@ public class JDGUIClassFileUtil
|
||||||
dis.readUnsignedShort();
|
dis.readUnsignedShort();
|
||||||
int this_class = dis.readUnsignedShort();
|
int this_class = dis.readUnsignedShort();
|
||||||
|
|
||||||
if (this_class > Objects.requireNonNull(constants).length) {
|
if (this_class > constants.length) {
|
||||||
throw new ClassFileFormatException("Unknown Java structure");
|
throw new ClassFileFormatException("Unknown Java structure");
|
||||||
}
|
}
|
||||||
Constant c = constants[this_class];
|
Constant c = constants[this_class];
|
||||||
if ((c == null) || (c.getTag() != Constant.CONSTANT_Class))
|
if ((c == null) || (c.getTag() != Constant.CONSTANT_Class)) {
|
||||||
throw new ClassFileFormatException("Invalid constant pool");
|
throw new ClassFileFormatException("Invalid constant pool");
|
||||||
|
}
|
||||||
|
|
||||||
c = constants[((ConstantClass) c).getNameIndex()];
|
c = constants[((ConstantClass) c).getNameIndex()];
|
||||||
if ((c == null) || (c.getTag() != Constant.CONSTANT_Utf8))
|
if ((c == null) || (c.getTag() != Constant.CONSTANT_Utf8)) {
|
||||||
throw new ClassFileFormatException("Invalid constant pool");
|
throw new ClassFileFormatException("Invalid constant pool");
|
||||||
|
}
|
||||||
|
|
||||||
String internalClassName = ((ConstantUtf8) c).getValue();
|
String internalClassName = ((ConstantUtf8) c).getValue();
|
||||||
String pathSuffix = internalClassName.replace(
|
String pathSuffix = internalClassName.replace(
|
||||||
|
@ -61,8 +63,9 @@ public class JDGUIClassFileUtil
|
||||||
|
|
||||||
int index = pathToClass.indexOf(pathSuffix);
|
int index = pathToClass.indexOf(pathSuffix);
|
||||||
|
|
||||||
if (index < 0)
|
if (index < 0) {
|
||||||
throw new ClassFileFormatException("Invalid internal class name");
|
throw new ClassFileFormatException("Invalid internal class name");
|
||||||
|
}
|
||||||
|
|
||||||
directoryPath = pathToClass.substring(0, index);
|
directoryPath = pathToClass.substring(0, index);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
@ -87,9 +90,6 @@ public class JDGUIClassFileUtil
|
||||||
private static Constant[] DeserializeConstants(DataInputStream dis)
|
private static Constant[] DeserializeConstants(DataInputStream dis)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
int count = dis.readUnsignedShort();
|
int count = dis.readUnsignedShort();
|
||||||
if (count == 0)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
Constant[] constants = new Constant[count];
|
Constant[] constants = new Constant[count];
|
||||||
|
|
||||||
for (int i = 1; i < count; i++) {
|
for (int i = 1; i < count; i++) {
|
||||||
|
@ -112,12 +112,15 @@ public class JDGUIClassFileUtil
|
||||||
case Constant.CONSTANT_FieldRef:
|
case Constant.CONSTANT_FieldRef:
|
||||||
case Constant.CONSTANT_MethodRef:
|
case Constant.CONSTANT_MethodRef:
|
||||||
case Constant.CONSTANT_InterfaceMethodRef:
|
case Constant.CONSTANT_InterfaceMethodRef:
|
||||||
|
case Constant.CONSTANT_InvokeDynamic:
|
||||||
case Constant.CONSTANT_NameAndType:
|
case Constant.CONSTANT_NameAndType:
|
||||||
case Constant.CONSTANT_Integer:
|
case Constant.CONSTANT_Integer:
|
||||||
case Constant.CONSTANT_Float:
|
case Constant.CONSTANT_Float:
|
||||||
dis.read();
|
dis.read();
|
||||||
|
case Constant.CONSTANT_MethodHandle:
|
||||||
dis.read();
|
dis.read();
|
||||||
case Constant.CONSTANT_String:
|
case Constant.CONSTANT_String:
|
||||||
|
case Constant.CONSTANT_MethodType:
|
||||||
dis.read();
|
dis.read();
|
||||||
dis.read();
|
dis.read();
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue