关于反编译后显示盗版

来源:互联网 发布:手机灯牌软件 编辑:程序博客网 时间:2024/05/24 20:07

反编译后显示盗版,有可能在服务器端校验,也有可能是本地校验。
我以压缩包形式打开apk,删除签名信息重新签名,安装好后打开,提示盗版。可以肯定这是签名校验。
用androidkiller打开,搜索signatures,找到获取签名的位置,在用jd-gui查看java代码

  public static String getAPPSecretString(Context paramContext)  {    String str1 = paramContext.getPackageName();    try    {      PackageInfo localPackageInfo = paramContext.getPackageManager().getPackageInfo(str1, 64);      String str2 = digest(localPackageInfo.signatures[0].toByteArray());      return str2;    }    catch (PackageManager.NameNotFoundException localNameNotFoundException)    {      localNameNotFoundException.printStackTrace();    }    return "";  }

digest函数只是对签名信息做处理,我没有关心它。
继续查找哪里调用了getAPPSecretString()
查看代码

  if (localHttpResponse.getStatusLine().getStatusCode() != 200)   {   break label649;  }

发现这是服务器端校验签名

 if (this.updateItem.getStatus() == 1103) {      this.mHandler.sendEmptyMessage(1000);    }

在handleMessage里

 if (paramAnonymousMessage.what == 1000)      {        BlackName.this.popKuangInfo();        return;      }

而这个popKuangInfo()提示 VerLog.v(“有侵权”);并且会调用一个AlertDialog,这个dialog正好与盗版提示吻合。
提示盗版

for (String str1 = "确定";; str1 = "下载")    {      str2 = "退出";      AlertDialog.Builder localBuilder = new AlertDialog.Builder(this.mContext);      localBuilder.setTitle(this.updateItem.getTitle());      localBuilder.setMessage(this.updateItem.getDescription());      localBuilder.setPositiveButton(str1, this.mWarnClick);      localBuilder.setNegativeButton(str2, this.mWarnClick);      localBuilder.setCancelable(false).show();      return;    }

由于只知道error返回1103会显示盗版,所以我直接让getStatus的返回值为其他(1101)

.method public getStatus()I    .locals 2    .prologue    .line 23    iget v0, p0, Lcn/easymobi/checkversion/item/UpdateItem;->status:I    const/16 v1,0x44d    return v1.end method

编译过后,正常进入app,接下来就可以进行购买破解了

0 0
原创粉丝点击