mirror of
https://github.com/revanced/smali.git
synced 2025-05-03 08:04:28 +02:00
Remove the DexBuffer wrapper methods from DexReader
This commit is contained in:
parent
982e9f614f
commit
fd26bc6062
@ -38,16 +38,16 @@ import org.jf.dexlib2.iface.value.EncodedValue;
|
|||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
public class DexBackedAnnotationElement extends BaseAnnotationElement {
|
public class DexBackedAnnotationElement extends BaseAnnotationElement {
|
||||||
@Nonnull private final DexBuffer dexBuffer;
|
@Nonnull private final DexBuffer dexBuf;
|
||||||
public final int nameIndex;
|
public final int nameIndex;
|
||||||
@Nonnull public final EncodedValue value;
|
@Nonnull public final EncodedValue value;
|
||||||
|
|
||||||
public DexBackedAnnotationElement(@Nonnull DexReader reader) {
|
public DexBackedAnnotationElement(@Nonnull DexReader reader) {
|
||||||
this.dexBuffer = reader.getDexBuffer();
|
this.dexBuf = reader.dexBuf;
|
||||||
this.nameIndex = reader.readSmallUleb128();
|
this.nameIndex = reader.readSmallUleb128();
|
||||||
this.value = DexBackedEncodedValue.readFrom(reader);
|
this.value = DexBackedEncodedValue.readFrom(reader);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull @Override public String getName() { return dexBuffer.getString(nameIndex); }
|
@Nonnull @Override public String getName() { return dexBuf.getString(nameIndex); }
|
||||||
@Nonnull @Override public EncodedValue getValue() { return value; }
|
@Nonnull @Override public EncodedValue getValue() { return value; }
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ public class DexBackedExceptionHandler extends BaseExceptionHandler implements E
|
|||||||
|
|
||||||
public DexBackedExceptionHandler(@Nonnull DexReader reader) {
|
public DexBackedExceptionHandler(@Nonnull DexReader reader) {
|
||||||
// TODO: verify dalvik doesn't accept an exception handler that points in the middle of an instruction
|
// TODO: verify dalvik doesn't accept an exception handler that points in the middle of an instruction
|
||||||
this.dexBuf = reader.getDexBuffer();
|
this.dexBuf = reader.dexBuf;
|
||||||
this.typeId = reader.readSmallUleb128();
|
this.typeId = reader.readSmallUleb128();
|
||||||
this.handlerCodeAddress = reader.readSmallUleb128();
|
this.handlerCodeAddress = reader.readSmallUleb128();
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ public class DexBackedField extends BaseFieldReference implements Field {
|
|||||||
int previousFieldIndex,
|
int previousFieldIndex,
|
||||||
@Nonnull StaticInitialValueIterator staticInitialValueIterator,
|
@Nonnull StaticInitialValueIterator staticInitialValueIterator,
|
||||||
@Nonnull AnnotationsDirectory.AnnotationIterator annotationIterator) {
|
@Nonnull AnnotationsDirectory.AnnotationIterator annotationIterator) {
|
||||||
this.dexBuf = reader.getDexBuffer();
|
this.dexBuf = reader.dexBuf;
|
||||||
this.classDef = classDef;
|
this.classDef = classDef;
|
||||||
|
|
||||||
int fieldIndexDiff = reader.readSmallUleb128();
|
int fieldIndexDiff = reader.readSmallUleb128();
|
||||||
|
@ -73,7 +73,7 @@ public class DexBackedMethod extends BaseMethodReference implements Method {
|
|||||||
public DexBackedMethod(@Nonnull DexReader reader,
|
public DexBackedMethod(@Nonnull DexReader reader,
|
||||||
@Nonnull DexBackedClassDef classDef,
|
@Nonnull DexBackedClassDef classDef,
|
||||||
int previousMethodIndex) {
|
int previousMethodIndex) {
|
||||||
this.dexBuf = reader.getDexBuffer();
|
this.dexBuf = reader.dexBuf;
|
||||||
this.classDef = classDef;
|
this.classDef = classDef;
|
||||||
|
|
||||||
int methodIndexDiff = reader.readSmallUleb128();
|
int methodIndexDiff = reader.readSmallUleb128();
|
||||||
@ -90,7 +90,7 @@ public class DexBackedMethod extends BaseMethodReference implements Method {
|
|||||||
int previousMethodIndex,
|
int previousMethodIndex,
|
||||||
@Nonnull AnnotationsDirectory.AnnotationIterator methodAnnotationIterator,
|
@Nonnull AnnotationsDirectory.AnnotationIterator methodAnnotationIterator,
|
||||||
@Nonnull AnnotationsDirectory.AnnotationIterator paramaterAnnotationIterator) {
|
@Nonnull AnnotationsDirectory.AnnotationIterator paramaterAnnotationIterator) {
|
||||||
this.dexBuf = reader.getDexBuffer();
|
this.dexBuf = reader.dexBuf;
|
||||||
this.classDef = classDef;
|
this.classDef = classDef;
|
||||||
|
|
||||||
int methodIndexDiff = reader.readSmallUleb128();
|
int methodIndexDiff = reader.readSmallUleb128();
|
||||||
|
@ -36,7 +36,7 @@ import org.jf.util.ExceptionWithContext;
|
|||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
public class DexReader {
|
public class DexReader {
|
||||||
@Nonnull private final DexBuffer dexBuf;
|
@Nonnull public final DexBuffer dexBuf;
|
||||||
private int offset;
|
private int offset;
|
||||||
|
|
||||||
public DexReader(@Nonnull DexBuffer dexBuf, int offset) {
|
public DexReader(@Nonnull DexBuffer dexBuf, int offset) {
|
||||||
@ -44,24 +44,9 @@ public class DexReader {
|
|||||||
this.offset = offset;
|
this.offset = offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull public DexBuffer getDexBuffer() { return dexBuf; }
|
|
||||||
public int getOffset() { return offset; }
|
public int getOffset() { return offset; }
|
||||||
public void setOffset(int offset) { this.offset = offset; }
|
public void setOffset(int offset) { this.offset = offset; }
|
||||||
|
|
||||||
public int getStringIdItemOffset(int stringIndex) { return dexBuf.getStringIdItemOffset(stringIndex); }
|
|
||||||
public int getTypeIdItemOffset(int typeIndex) { return dexBuf.getTypeIdItemOffset(typeIndex); }
|
|
||||||
public int getFieldIdItemOffset(int fieldIndex) { return dexBuf.getFieldIdItemOffset(fieldIndex); }
|
|
||||||
public int getMethodIdItemOffset(int methodIndex) { return dexBuf.getMethodIdItemOffset(methodIndex); }
|
|
||||||
public int getProtoIdItemOffset(int methodIndex) { return dexBuf.getProtoIdItemOffset(methodIndex); }
|
|
||||||
public int getClassDefItemOffset(int classIndex) { return dexBuf.getClassDefItemOffset(classIndex); }
|
|
||||||
public String getString(int stringIndex) { return dexBuf.getString(stringIndex); }
|
|
||||||
public String getOptionalString(int stringIndex) { return dexBuf.getOptionalString(stringIndex); }
|
|
||||||
public String getType(int typeIndex) { return dexBuf.getType(typeIndex); }
|
|
||||||
public String getOptionalType(int typeIndex) { return dexBuf.getOptionalType(typeIndex); }
|
|
||||||
public String getField(int fieldIndex) { return dexBuf.getField(fieldIndex); }
|
|
||||||
public String getMethod(int methodIndex) { return dexBuf.getMethod(methodIndex); }
|
|
||||||
public String getReference(int type, int index) { return dexBuf.getReference(type, index); }
|
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
public int readSleb128() {
|
public int readSleb128() {
|
||||||
int end = offset;
|
int end = offset;
|
||||||
|
@ -66,7 +66,7 @@ public abstract class DexBackedInstruction implements Instruction {
|
|||||||
Opcode opcode = Opcode.getOpcodeByValue(opcodeValue);
|
Opcode opcode = Opcode.getOpcodeByValue(opcodeValue);
|
||||||
|
|
||||||
//TODO: handle unexpected/unknown opcodes
|
//TODO: handle unexpected/unknown opcodes
|
||||||
Instruction instruction = buildInstruction(reader.getDexBuffer(), opcode, reader.getOffset());
|
Instruction instruction = buildInstruction(reader.dexBuf, opcode, reader.getOffset());
|
||||||
reader.moveRelative(instruction.getCodeUnits()*2);
|
reader.moveRelative(instruction.getCodeUnits()*2);
|
||||||
return instruction;
|
return instruction;
|
||||||
}
|
}
|
||||||
|
@ -247,7 +247,7 @@ public abstract class DebugInfo implements Iterable<DebugItem> {
|
|||||||
final MethodParameter methodParameter = methodParametersWithoutNames.get(index);
|
final MethodParameter methodParameter = methodParametersWithoutNames.get(index);
|
||||||
String _name = null;
|
String _name = null;
|
||||||
if (index < parameterNameCount) {
|
if (index < parameterNameCount) {
|
||||||
_name = reader.getOptionalString(reader.readSmallUleb128() - 1);
|
_name = dexBuf.getOptionalString(reader.readSmallUleb128() - 1);
|
||||||
}
|
}
|
||||||
final String name = _name;
|
final String name = _name;
|
||||||
|
|
||||||
|
@ -48,8 +48,8 @@ public class DexBackedAnnotationEncodedValue extends BaseAnnotationEncodedValue
|
|||||||
private final int elementsOffset;
|
private final int elementsOffset;
|
||||||
|
|
||||||
public DexBackedAnnotationEncodedValue(@Nonnull DexReader reader) {
|
public DexBackedAnnotationEncodedValue(@Nonnull DexReader reader) {
|
||||||
this.dexBuf = reader.getDexBuffer();
|
this.dexBuf = reader.dexBuf;
|
||||||
this.type = reader.getType(reader.readSmallUleb128());
|
this.type = dexBuf.getType(reader.readSmallUleb128());
|
||||||
this.elementCount = reader.readSmallUleb128();
|
this.elementCount = reader.readSmallUleb128();
|
||||||
this.elementsOffset = reader.getOffset();
|
this.elementsOffset = reader.getOffset();
|
||||||
skipElements(reader, elementCount);
|
skipElements(reader, elementCount);
|
||||||
|
@ -47,7 +47,7 @@ public class DexBackedArrayEncodedValue extends BaseArrayEncodedValue implements
|
|||||||
private final int encodedArrayOffset;
|
private final int encodedArrayOffset;
|
||||||
|
|
||||||
public DexBackedArrayEncodedValue(@Nonnull DexReader reader) {
|
public DexBackedArrayEncodedValue(@Nonnull DexReader reader) {
|
||||||
this.dexBuf = reader.getDexBuffer();
|
this.dexBuf = reader.dexBuf;
|
||||||
this.elementCount = reader.readSmallUleb128();
|
this.elementCount = reader.readSmallUleb128();
|
||||||
this.encodedArrayOffset = reader.getOffset();
|
this.encodedArrayOffset = reader.getOffset();
|
||||||
skipElementsFrom(reader, elementCount);
|
skipElementsFrom(reader, elementCount);
|
||||||
|
@ -79,7 +79,8 @@ public abstract class DexBackedEncodedValue {
|
|||||||
return new DexBackedStringEncodedValue(reader, valueArg);
|
return new DexBackedStringEncodedValue(reader, valueArg);
|
||||||
case ValueType.TYPE:
|
case ValueType.TYPE:
|
||||||
Preconditions.checkValueArg(valueArg, 3);
|
Preconditions.checkValueArg(valueArg, 3);
|
||||||
return new ImmutableTypeEncodedValue(reader.getType(reader.readSizedSmallUint(valueArg + 1)));
|
return new ImmutableTypeEncodedValue(reader.dexBuf.getType(
|
||||||
|
reader.readSizedSmallUint(valueArg + 1)));
|
||||||
case ValueType.FIELD:
|
case ValueType.FIELD:
|
||||||
Preconditions.checkValueArg(valueArg, 3);
|
Preconditions.checkValueArg(valueArg, 3);
|
||||||
return new DexBackedFieldEncodedValue(reader, valueArg);
|
return new DexBackedFieldEncodedValue(reader, valueArg);
|
||||||
|
@ -44,7 +44,7 @@ public class DexBackedEnumEncodedValue extends BaseEnumEncodedValue {
|
|||||||
private final int fieldIndex;
|
private final int fieldIndex;
|
||||||
|
|
||||||
public DexBackedEnumEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
public DexBackedEnumEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
||||||
this.dexBuf = reader.getDexBuffer();
|
this.dexBuf = reader.dexBuf;
|
||||||
fieldIndex = reader.readSizedSmallUint(valueArg + 1);
|
fieldIndex = reader.readSizedSmallUint(valueArg + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ public class DexBackedFieldEncodedValue extends BaseFieldEncodedValue {
|
|||||||
private final int fieldIndex;
|
private final int fieldIndex;
|
||||||
|
|
||||||
public DexBackedFieldEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
public DexBackedFieldEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
||||||
this.dexBuf = reader.getDexBuffer();
|
this.dexBuf = reader.dexBuf;
|
||||||
fieldIndex = reader.readSizedSmallUint(valueArg + 1);
|
fieldIndex = reader.readSizedSmallUint(valueArg + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ public class DexBackedMethodEncodedValue extends BaseMethodEncodedValue {
|
|||||||
private final int MethodIndex;
|
private final int MethodIndex;
|
||||||
|
|
||||||
public DexBackedMethodEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
public DexBackedMethodEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
||||||
this.dexBuf = reader.getDexBuffer();
|
this.dexBuf = reader.dexBuf;
|
||||||
MethodIndex = reader.readSizedSmallUint(valueArg + 1);
|
MethodIndex = reader.readSizedSmallUint(valueArg + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ public class DexBackedStringEncodedValue extends BaseStringEncodedValue {
|
|||||||
private final int stringIndex;
|
private final int stringIndex;
|
||||||
|
|
||||||
public DexBackedStringEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
public DexBackedStringEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
||||||
this.dexBuf = reader.getDexBuffer();
|
this.dexBuf = reader.dexBuf;
|
||||||
stringIndex = reader.readSizedSmallUint(valueArg + 1);
|
stringIndex = reader.readSizedSmallUint(valueArg + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ public class DexBackedTypeEncodedValue extends BaseTypeEncodedValue {
|
|||||||
private final int typeIndex;
|
private final int typeIndex;
|
||||||
|
|
||||||
public DexBackedTypeEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
public DexBackedTypeEncodedValue(@Nonnull DexReader reader, int valueArg) {
|
||||||
this.dexBuf = reader.getDexBuffer();
|
this.dexBuf = reader.dexBuf;
|
||||||
typeIndex = reader.readSizedSmallUint(valueArg + 1);
|
typeIndex = reader.readSizedSmallUint(valueArg + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user