APK反编译后代码分析(二)
2013-08-07 21:46
288 查看
6,一个continue对应一个back原则(switch while结构)
在这种形式中,一个contiune一定是对应一个back,但一个case不一定只对应一个contiune,也有一个case对应两个或多个contiune(即back).
如以下反编译后的代码:
[java] view
plaincopy
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),恢复原代码结构就变的简单,这里就再敖叙了。
原文:http://blog.csdn.net/ordinaryjoe/article/details/8834059
在这种形式中,一个contiune一定是对应一个back,但一个case不一定只对应一个contiune,也有一个case对应两个或多个contiune(即back).
如以下反编译后的代码:
[java] view
plaincopy
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),恢复原代码结构就变的简单,这里就再敖叙了。
原文:http://blog.csdn.net/ordinaryjoe/article/details/8834059
相关文章推荐
- APK反编译后代码分析(一)
- APK反编译jd-gui代码分析(草稿记录)
- APK反编译后代码分析
- 如何阻止APK反编译查看源代码?
- Android APK反编译方法(可以获取APK xml和android Manifest,java代码等内容)
- APK反编译之一:smail代码的基础
- 【Android安全】APK静态分析-DEX反编译为Smali逆向分析
- Android代码混淆防止反编译APK获取源码
- 防止 apk反编译 jocky-- java混淆代码
- Android apk反编译及AS代码混淆方法
- Android APK反编译以及代码混淆
- Android Apk的反编译与代码混淆
- 反编译C程序为汇编代码,汇编代码执行过程的分析与思考
- 防止 apk反编译 jocky-- java混淆代码
- AutoIt脚本的反编译和代码格式化问题分析
- Android Wear Preview Launcher APK 深度体验(反编译分析和下载)。
- 反编译APK获取java代码与图片,字符串资源,xml文件等资源
- 全志行车记录仪里面FireEyepublic.apk反编译的分析(二)
- 可视化反编译APK工具,查看部分JAVA代码与全部资源文件。
- 反编译APK获取java代码与图片,字符串资源,xml文件等资源