public static String getReferenceAnnotation(@Nonnull DexBackedDexFile dexFile, int stringIndex, boolean quote) { try { String string = dexFile.getString(stringIndex); if (quote) { string = String.format("\"%s\"", StringUtils.escapeString(string)); } return String.format("string_id_item[%d]: %s", stringIndex, string); } catch (Exception ex) { ex.printStackTrace(System.err); } return String.format("string_id_item[%d]", stringIndex); }
@Override public void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) { int stringDataOffset = dexFile.readSmallUint(out.getCursor()); try { String stringValue = dexFile.getString(itemIndex); out.annotate(4, "string_data_item[0x%x]: \"%s\"", stringDataOffset, StringUtils.escapeString(stringValue)); return; } catch (Exception ex) { System.err.print("Error while resolving string value at index: "); System.err.print(itemIndex); ex.printStackTrace(System.err); } out.annotate(4, "string_id_item[0x%x]", stringDataOffset); } };
out.annotate(8, "magic: %s", StringUtils.escapeString(magicBuilder.toString())); out.annotate(4, "checksum"); out.annotate(20, "signature");
public static String getReferenceAnnotation(@Nonnull DexBackedDexFile dexFile, int stringIndex, boolean quote) { try { String string = dexFile.getString(stringIndex); if (quote) { string = String.format("\"%s\"", StringUtils.escapeString(string)); } return String.format("string_id_item[%d]: %s", stringIndex, string); } catch (Exception ex) { ex.printStackTrace(System.err); } return String.format("string_id_item[%d]", stringIndex); }
public static String getReferenceAnnotation(@Nonnull DexBackedDexFile dexFile, int stringIndex, boolean quote) { try { String string = dexFile.getString(stringIndex); if (quote) { string = String.format("\"%s\"", StringUtils.escapeString(string)); } return String.format("string_id_item[%d]: %s", stringIndex, string); } catch (Exception ex) { ex.printStackTrace(System.err); } return String.format("string_id_item[%d]", stringIndex); }
@Override public void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) { int stringDataOffset = dexFile.readSmallUint(out.getCursor()); try { String stringValue = dexFile.getString(itemIndex); out.annotate(4, "string_data_item[0x%x]: \"%s\"", stringDataOffset, StringUtils.escapeString(stringValue)); return; } catch (Exception ex) { System.err.print("Error while resolving string value at index: "); System.err.print(itemIndex); ex.printStackTrace(System.err); } out.annotate(4, "string_id_item[0x%x]", stringDataOffset); } };
@Override public void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) { int stringDataOffset = dexFile.readSmallUint(out.getCursor()); try { String stringValue = dexFile.getString(itemIndex); out.annotate(4, "string_data_item[0x%x]: \"%s\"", stringDataOffset, StringUtils.escapeString(stringValue)); return; } catch (Exception ex) { System.err.print("Error while resolving string value at index: "); System.err.print(itemIndex); ex.printStackTrace(System.err); } out.annotate(4, "string_id_item[0x%x]", stringDataOffset); } };
@Nullable public static String getReferenceString(Reference reference) { if (reference instanceof StringReference) { return String.format("\"%s\"", StringUtils.escapeString(((StringReference)reference).getString())); } if (reference instanceof TypeReference) { return ((TypeReference)reference).getType(); } if (reference instanceof FieldReference) { return getFieldDescriptor((FieldReference)reference); } if (reference instanceof MethodReference) { return getMethodDescriptor((MethodReference)reference); } return null; }
@Nullable public static String getReferenceString(@Nonnull Reference reference, @Nullable String containingClass) { if (reference instanceof StringReference) { return String.format("\"%s\"", StringUtils.escapeString(((StringReference) reference).getString())); } if (reference instanceof TypeReference) { String clazz = ((TypeReference) reference).getType(); //TypeGenUtil.newType(((TypeReference)reference).getType()); return clazz; } if (reference instanceof FieldReference) { FieldReference fieldReference = (FieldReference) reference; boolean useImplicitReference = fieldReference.getDefiningClass().equals(containingClass); return getFieldDescriptor((FieldReference) reference, useImplicitReference); } if (reference instanceof MethodReference) { MethodReference methodReference = (MethodReference) reference; boolean useImplicitReference = methodReference.getDefiningClass().equals(containingClass); return getMethodDescriptor((MethodReference) reference, useImplicitReference); } return null; }
@Override protected void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) { DexReader reader = dexFile.readerAt(out.getCursor()); int utf16Length = reader.readSmallUleb128(); out.annotateTo(reader.getOffset(), "utf16_size = %d", utf16Length); String value = reader.readString(utf16Length); out.annotateTo(reader.getOffset() + 1, "data = \"%s\"", StringUtils.escapeString(value)); } };
@Override protected void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) { DexReader reader = dexFile.readerAt(out.getCursor()); int utf16Length = reader.readSmallUleb128(); out.annotateTo(reader.getOffset(), "utf16_size = %d", utf16Length); String value = reader.readString(utf16Length); out.annotateTo(reader.getOffset() + 1, "data = \"%s\"", StringUtils.escapeString(value)); } };
@Override protected void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) { DexReader reader = dexFile.readerAt(out.getCursor()); int utf16Length = reader.readSmallUleb128(); out.annotateTo(reader.getOffset(), "utf16_size = %d", utf16Length); String value = reader.readString(utf16Length); out.annotateTo(reader.getOffset() + 1, "data = \"%s\"", StringUtils.escapeString(value)); } };
@Nullable public static String getReferenceString(@Nonnull Reference reference, @Nullable String containingClass) { if (reference instanceof StringReference) { return String.format("\"%s\"", StringUtils.escapeString(((StringReference)reference).getString()));
@Nullable public static String getReferenceString(@Nonnull Reference reference, @Nullable String containingClass) { if (reference instanceof StringReference) { return String.format("\"%s\"", StringUtils.escapeString(((StringReference)reference).getString()));
out.annotate(8, "magic: %s", StringUtils.escapeString(magicBuilder.toString())); out.annotate(4, "checksum"); out.annotate(20, "signature");
out.annotate(8, "magic: %s", StringUtils.escapeString(magicBuilder.toString())); out.annotate(4, "checksum"); out.annotate(20, "signature");