Package jadx.core.dex.info

Examples of jadx.core.dex.info.FieldInfo


    InsnNode get = ((InsnWrapArg) wrap.getArg(0)).getWrapInsn();
    InsnType getType = get.getType();
    if (getType != InsnType.IGET && getType != InsnType.SGET) {
      return null;
    }
    FieldInfo field = (FieldInfo) ((IndexInsnNode) insn).getIndex();
    FieldInfo innerField = (FieldInfo) ((IndexInsnNode) get).getIndex();
    if (!field.equals(innerField)) {
      return null;
    }
    try {
      InsnArg reg = null;
View Full Code Here


    for (int i = 0; i < size; i++) {
      InsnNode insn = list.get(i);
      insns.add(insn);
      if (insn.getType() == InsnType.SPUT) {
        IndexInsnNode fp = (IndexInsnNode) insn;
        FieldInfo f = (FieldInfo) fp.getIndex();
        if (f.getName().equals("$VALUES")) {
          if (i == size - 1) {
            cls.getMethods().remove(staticMethod);
          } else {
            list.subList(0, i + 1).clear();
          }
View Full Code Here

            if (removeFieldUsageFromConstructor(mth, field, fieldsCls)) {
              found++;
            }
          }
          if (found != 0) {
            FieldInfo replace = new FieldInfo(parentClass, "this", parentClass.getType());
            field.addAttr(new FieldReplaceAttr(replace, true));
            field.add(AFlag.DONT_GENERATE);
          }
        }
      }
View Full Code Here

    InsnNode insn = instructions.get(0);
    if (insn.getType() != InsnType.IPUT) {
      return false;
    }
    IndexInsnNode putInsn = (IndexInsnNode) insn;
    FieldInfo fieldInfo = (FieldInfo) putInsn.getIndex();
    if (!fieldInfo.equals(field.getFieldInfo()) || !putInsn.getArg(0).equals(arg)) {
      return false;
    }
    mth.removeFirstArgument();
    InstructionRemover.remove(mth, block, insn);
    // other arg usage -> wrap with IGET insn
View Full Code Here

  /**
   * Remove field initialization if it assign in "<clinit>" method
   */
  private static void processStaticFieldAssign(ClassNode cls, IndexInsnNode insn) {
    FieldInfo field = (FieldInfo) insn.getIndex();
    String thisClass = cls.getFullName();
    if (field.getDeclClass().getFullName().equals(thisClass)) {
      FieldNode fn = cls.searchField(field);
      if (fn != null && fn.getAccessFlags().isFinal()) {
        fn.remove(AType.FIELD_VALUE);
      }
    }
View Full Code Here

      case CONST_STR:
        return ((ConstStringNode) parInsn).getString();
      case CONST_CLASS:
        return ((ConstClassNode) parInsn).getClsType();
      case SGET:
        FieldInfo f = (FieldInfo) ((IndexInsnNode) parInsn).getIndex();
        FieldNode fieldNode = dex.resolveField(f);
        if (fieldNode != null) {
          FieldValueAttr attr = fieldNode.get(AType.FIELD_VALUE);
          if (attr != null) {
            return attr.getValue();
View Full Code Here

      fieldNode = pCls.searchField(field);
    }
    if (fieldNode != null) {
      FieldReplaceAttr replace = fieldNode.get(AType.FIELD_REPLACE);
      if (replace != null) {
        FieldInfo info = replace.getFieldInfo();
        if (replace.isOuterClass()) {
          useClass(code, info.getDeclClass());
          code.add(".this");
        }
        return;
      }
    }
View Full Code Here

        code.add("] = ");
        addArg(code, insn.getArg(2), false);
        break;

      case IGET: {
        FieldInfo fieldInfo = (FieldInfo) ((IndexInsnNode) insn).getIndex();
        instanceField(code, fieldInfo, insn.getArg(0));
        break;
      }
      case IPUT: {
        FieldInfo fieldInfo = (FieldInfo) ((IndexInsnNode) insn).getIndex();
        instanceField(code, fieldInfo, insn.getArg(1));
        code.add(" = ");
        addArg(code, insn.getArg(0), false);
        break;
      }

      case SGET:
        staticField(code, (FieldInfo) ((IndexInsnNode) insn).getIndex());
        break;
      case SPUT:
        FieldInfo field = (FieldInfo) ((IndexInsnNode) insn).getIndex();
        staticField(code, field);
        code.add(" = ");
        addArg(code, insn.getArg(0), false);
        break;
View Full Code Here

      case Opcodes.IGET_BYTE:
      case Opcodes.IGET_CHAR:
      case Opcodes.IGET_SHORT:
      case Opcodes.IGET_WIDE:
      case Opcodes.IGET_OBJECT: {
        FieldInfo field = FieldInfo.fromDex(dex, insn.getIndex());
        InsnNode node = new IndexInsnNode(InsnType.IGET, field, 1);
        node.setResult(InsnArg.reg(insn, 0, field.getType()));
        node.addArg(InsnArg.reg(insn, 1, field.getDeclClass().getType()));
        return node;
      }

      case Opcodes.IPUT:
      case Opcodes.IPUT_BOOLEAN:
      case Opcodes.IPUT_BYTE:
      case Opcodes.IPUT_CHAR:
      case Opcodes.IPUT_SHORT:
      case Opcodes.IPUT_WIDE:
      case Opcodes.IPUT_OBJECT: {
        FieldInfo field = FieldInfo.fromDex(dex, insn.getIndex());
        InsnNode node = new IndexInsnNode(InsnType.IPUT, field, 2);
        node.addArg(InsnArg.reg(insn, 0, field.getType()));
        node.addArg(InsnArg.reg(insn, 1, field.getDeclClass().getType()));
        return node;
      }

      case Opcodes.SGET:
      case Opcodes.SGET_BOOLEAN:
      case Opcodes.SGET_BYTE:
      case Opcodes.SGET_CHAR:
      case Opcodes.SGET_SHORT:
      case Opcodes.SGET_WIDE:
      case Opcodes.SGET_OBJECT: {
        FieldInfo field = FieldInfo.fromDex(dex, insn.getIndex());
        InsnNode node = new IndexInsnNode(InsnType.SGET, field, 0);
        node.setResult(InsnArg.reg(insn, 0, field.getType()));
        return node;
      }

      case Opcodes.SPUT:
      case Opcodes.SPUT_BOOLEAN:
      case Opcodes.SPUT_BYTE:
      case Opcodes.SPUT_CHAR:
      case Opcodes.SPUT_SHORT:
      case Opcodes.SPUT_WIDE:
      case Opcodes.SPUT_OBJECT: {
        FieldInfo field = FieldInfo.fromDex(dex, insn.getIndex());
        InsnNode node = new IndexInsnNode(InsnType.SPUT, field, 1);
        node.addArg(InsnArg.reg(insn, 0, field.getType()));
        return node;
      }

      case Opcodes.ARRAY_LENGTH: {
        InsnNode node = new InsnNode(InsnType.ARRAY_LENGTH, 1);
View Full Code Here

    } else if (val instanceof ArgType) {
      classGen.useType(code, (ArgType) val);
      code.add(".class");
    } else if (val instanceof FieldInfo) {
      // must be a static field
      FieldInfo field = (FieldInfo) val;
      InsnGen.makeStaticFieldAccess(code, field, classGen);
    } else if (val instanceof Iterable) {
      code.add('{');
      Iterator<?> it = ((Iterable) val).iterator();
      while (it.hasNext()) {
View Full Code Here

TOP

Related Classes of jadx.core.dex.info.FieldInfo

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.