反编译二之代码解读

参考
jad反编译之后会出一些错误,程序中使用了goto label和break label语句,增加阅读难度,需要分析并修改。总结错误代码还原规则:
一、if…else 语句(会把if ..esle 反编译成 if …while(true)结构.)
反编译代码

if (paramBoolean)
    paramTextView.setTextColor(-16727809);
while (true)
{
    return;
    paramTextView.setTextColor(-1315861);
}

还原后

if (paramBoolean)
{
    paramTextView.setTextColor(-16727809);
}
else
{
    paramTextView.setTextColor(-1315861);
}  

二、会将语句倒序,出现break label结构
反编译代码

  if (paramInt1 != 1)
      break label185;
    if (this.countChild_1 == null)
    {
      this.countChild_1 = new PokerCountChild(this.mContext);
      this.countChild_1 = new PokerCountChild(this.mContext);
      this.countChild_1.setPosition((int)(0.83D * BaseGameActivity.screenWidth-this.countChild_1.getWidth()), (int)(0.2D * BaseGameActivity.screenHeight));
      this.countChild_1.setCount(paramInt2);
      addOneChild(this.countChild_1);
      if (paramInt2 == 0)
        this.countChild_1.setAlpha(0);
    }
    this.countChild_1.setCount(paramInt2);

label185: 
    do
      return;
    while (paramInt1 != 2);
    if (this.countChild_2 == null)
    {
      this.countChild_2 = new PokerCountChild(this.mContext);
      this.countChild_2 = new PokerCountChild(this.mContext);
      this.countChild_2.setPosition((int)(0.17D * BaseGameActivity.screenWidth),(int)(0.2D * BaseGameActivity.screenHeight));
      this.countChild_2.setCount(paramInt2);
      addOneChild(this.countChild_2);
      if (paramInt2 == 0)
        this.countChild_2.setAlpha(0);
    }
    this.countChild_2.setCount(paramInt2);

还原后

if(paramInt1 == 1)
{
    if(countChild_1 == null)
    {
        countChild_1 = new PokerCountChild(mContext);
        countChild_1 = new PokerCountChild(mContext);
        countChild_1.setPosition((int)(0.83D * (double)BaseGameActivity.screenWidth - (double)countChild_1.getWidth()),  (int)(0.2D * (double)BaseGameActivity.screenHeight));
        countChild_1.setCount(paramInt2);
        addOneChild(countChild_1);
        if(paramInt2 == 0)
            countChild_1.setAlpha(0);
    }
        countChild_1.setCount(paramInt2);
} else if(paramInt1 == 2)
{
    if(countChild_2 == null)
    {
        countChild_2 = new PokerCountChild(mContext);
        countChild_2 = new PokerCountChild(mContext);
        countChild_2.setPosition((int)(0.17D *  (double)BaseGameActivity.screenWidth), (int)(0.2D *= (double)BaseGameActivity.screenHeight));
        countChild_2.setCount(paramInt2);
        addOneChild(countChild_2);
        if(paramInt2 == 0)
            countChild_2.setAlpha(0);
    }
    countChild_2.setCount(paramInt2);
    return;
}

三、switch规则就是一个continue对应一个case.要注意是是要外层的continue才算数,在if里的continue不算
反编译代码

switch (this.mBand)
{
 default:
 case 0:
 case 1:
 case 2:
}
while (true)
{
  return;
    this.mBand.setText("FM1");
  continue;
    this.mBand.setText("FM2");
  continue;
    this.mBand.setText("AM");
}

还原后

switch (mBand)
{
  case 0:
    mBand.setText("FM1");
    break;
  case 1:
    mBand.setText("FM2");
    break;
  case 2:
    mBand.setText("AM");
    break;
  default:
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值