APK反编译后代码分析(二)

 6,一个continue对应一个back原则(switch while结构)
在这种形式中,一个contiune一定是对应一个back,但一个case不一定只对应一个contiune,也有一个case对应两个或多个contiune(即back).
如以下反编译后的代码:

 

    switch (getId())
	    {
	    case 2131034119:
	    case 2131034120:
	    case 2131034121:
	    case 2131034122:
	    case 2131034123:
	    case 2131034124:
	    case 2131034125:
	    case 2131034126:
	    case 2131034127:
	    case 2131034128:
	    default:
	    case 2131034129:
	    case 2131034130:
	    case 2131034131:
	    case 2131034132:
	    case 2131034133:
	    case 2131034134:
	    case 2131034117:
	    case 2131034118:
	    }
	    while (true)
	    {
	      return;
	      int i = paramVerticalSeekBar.getProgress() * 14;
	      int j = paramVerticalSeekBar.getMax();
	      int k = i / j;
	      if (APPActivity.access$200(this.this$0) == k)
	        continue;
	      int l = APPActivity.access$202(this.this$0, k);
	      int i1 = APPActivity.access$200(this.this$0);
		      continue;
	      int i3 = paramVerticalSeekBar.getProgress() * 14;
	      int i4 = paramVerticalSeekBar.getMax();
	      k = i3 / i4;
	      if (APPActivity.access$400(this.this$0) == k)
	        continue;
	      int i5 = APPActivity.access$402(this.this$0, k);
	      EQ localEQ2 = APPActivity.access$1400(this.this$0);
	      int i6 = APPActivity.access$400(this.this$0);
	      int i7 = localEQ2.sendCommand(257, 2, i6);
	      continue;
	      int i8 = paramVerticalSeekBar.getProgress() * 14;
	      int i9 = paramVerticalSeekBar.getMax();
	      k = i8 / i9;
	      if (APPActivity.access$500(this.this$0) == k)
	        continue;
	      int i10 = APPActivity.access$502(this.this$0, k);
	      int i11 = APPActivity.access$500(this.this$0);
	      continue;
	      int i13 = paramVerticalSeekBar.getProgress() * 3;
	      int i14 = paramVerticalSeekBar.getMax();
	      k = i13 / i14;
	      if (APPActivity.access$600(this.this$0) == k)
	        continue;
	      int i15 = APPActivity.access$602(this.this$0, k);
	      EQ localEQ4 = APPActivity.access$1400(this.this$0);
	      int i16 = APPActivity.access$600(this.this$0);
	      int i17 = localEQ4.sendCommand(257, 8, i16);
	      continue;
	      int i18 = paramVerticalSeekBar.getProgress() * 3;
	      int i19 = paramVerticalSeekBar.getMax();
	      k = i18 / i19;
	      if (EQActivity.access$700(this.this$0) == k)
	        continue;
	      int i20 = APPActivity.access$702(this.this$0, k);
	      EQ localEQ5 = APPActivity.access$1400(this.this$0);
	      int i21 = APPActivity.access$700(this.this$0);
	      continue;
	      int i23 = paramVerticalSeekBar.getProgress() * 3;
	      int i24 = paramVerticalSeekBar.getMax();
	      k = i23 / i24;
	      if (APPActivity.access$800(this.this$0) == k)
	        continue;
	      int i25 = APPActivity.access$802(this.this$0, k);
	      EQ localEQ6 = APPActivity.access$1400(this.this$0);
	      int i26 = APPActivity.access$800(this.this$0);
	      continue;
	      int i28 = paramVerticalSeekBar.getProgress() * 14;
	      int i29 = paramVerticalSeekBar.getMax();
	      k = i28 / i29;
	      if (APPActivity.access$900(this.this$0) == k)
	        continue;
	      int i30 = APPActivity.access$902(this.this$0, k);
	      EQ localEQ7 = APPActivity.access$1400(this.this$0);
	      int i31 = APPActivityvity.access$900(this.this$0);
	      continue;
	      int i33 = paramVerticalSeekBar.getProgress() * 3;
	      int i34 = paramVerticalSeekBar.getMax();
	      k = i33 / i34;
	      if (APPActivity.access$1000(this.this$0) == k)
	        continue;
	      int i35 = APPActivity.access$1002(this.this$0, k);
	      EQ localEQ8 = APPActivity.access$1400(this.this$0);
	      int i36 = APPActivity.access$1000(this.this$0);
	    }
	  }


    分析代码:

1),上遍已对这种形式有讲过,一个continue对应一个case,但是你数一数会发现,对不上号,明显case多于contiune,原因是什么呢?其实switch里的default对应的是while中的return,在switch中default以上的case是用不着,是没有用的。

2),如果default上面的case没有用,聪明的你可以可能会问两个问题?
A,default上面的case没有用,为什么还会有呢?原因很简单,因为反编译器也不是全智能的总会有不对的(但是执行逻辑是不会有错),呵呵真正的原因当然不会是这样,你可以自己去分析一下,从整个程序分析就可以得出结论来。
B,那按一个continue对应一个back的原则不是有错吗? 当然没有。一个continue还是对应一个back, 聪明的你一定看懂了,每两个continue中间还有一个if语句,对,没错,你理解是对的,就是在这中间满足条件时就会back,所以就会有一个continue与之相对应。
  所这里每个if + continue + continue的形式对应一个case。
3),恢复原代码结构就变的简单,这里就再敖叙了。


 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值