发表于 2015-6-2 17:50

申请会员ID:7ktest【申请通过】

申请ID:7ktest
申请邮箱:gyluci2@163.com


看到这篇帖子,顺手破解了:http://www.52pojie.cn/thread-369616-1-1.html

打开软件的样子可以在上面帖子的2楼看到,需要用户输入注册码。

我们使用ApkIDE(apk改之理)打开下载好的apk,搜索 字符串“\u5e8f\u5217\u53f7\u9519\u8bef”(也就是“序列号错误”)。
得到:


该方法是按钮点击后的处理方法。
反编译后的java代码是:

String str = this.this$0.editText.getText().toString();
      Log.i("ddd", this.this$0.seriaNumber);   //这里日志输出了序列号
      if (str.equals(this.this$0.seriaNumber)) //和用户的输入进行对比
      {
      SharedPreferences.Editor localEditor = this.this$0.sharedReg.edit(); //然后保存到文件,下次就不用重新注册了
      localEditor.putString("ISREG", "1");
      localEditor.commit();
      Intent localIntent = new Intent();
      localIntent.setClass(this.this$0, MainActivity.class);
      this.this$0.startActivity(localIntent);
      this.this$0.finish();
      return;
      }
      Toast.makeText(this.this$0, "序列号错误,请检查后重新输入!", 1).show(); //对比错误就提示


那么接下来就简单了,直接去掉对比就行了:



iget-object v1, p0, Lcom/drivetest/lukaoyi/SeriaNumberActivity$1;->this$0:Lcom/drivetest/lukaoyi/SeriaNumberActivity;
    iget-object v1, v1, Lcom/drivetest/lukaoyi/SeriaNumberActivity;->seriaNumber:Ljava/lang/String;
    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
    move-result v0
    if-eqz v0, :cond_0 //判断比较结果,这个删除了就不管比较结果怎么样,点击按钮直接进入。




如果想要看正确的注册码是什么,那么只要在判断那里(删除了)跳转到后面提示框,并把提示框的内容修改为序列号,弹框完成后跳转回判断语句所在地方,保存注册码进入主界面。
修改后的:

.method public onClick(Landroid/view/View;)V
    .locals 3

    .prologue
    .line 62
    :try_start_0
    iget-object v0, p0, Lcom/drivetest/lukaoyi/SeriaNumberActivity$1;->this$0:Lcom/drivetest/lukaoyi/SeriaNumberActivity;

    iget-object v0, v0, Lcom/drivetest/lukaoyi/SeriaNumberActivity;->editText:Landroid/widget/EditText;

    invoke-virtual {v0}, Landroid/widget/EditText;->getText()Landroid/text/Editable;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String;

    move-result-object v0

    .line 63
    const-string v1, "ddd"

    iget-object v2, p0, Lcom/drivetest/lukaoyi/SeriaNumberActivity$1;->this$0:Lcom/drivetest/lukaoyi/SeriaNumberActivity;

    iget-object v2, v2, Lcom/drivetest/lukaoyi/SeriaNumberActivity;->seriaNumber:Ljava/lang/String;

    invoke-static {v1, v2}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
   
      
    .line 64
    iget-object v1, p0, Lcom/drivetest/lukaoyi/SeriaNumberActivity$1;->this$0:Lcom/drivetest/lukaoyi/SeriaNumberActivity;

    iget-object v1, v1, Lcom/drivetest/lukaoyi/SeriaNumberActivity;->seriaNumber:Ljava/lang/String;

    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
   


    move-result v0

    goto :cond_0

    :okbroken
    .line 65
    iget-object v0, p0, Lcom/drivetest/lukaoyi/SeriaNumberActivity$1;->this$0:Lcom/drivetest/lukaoyi/SeriaNumberActivity;

    iget-object v0, v0, Lcom/drivetest/lukaoyi/SeriaNumberActivity;->sharedReg:Landroid/content/SharedPreferences;

    invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;

    move-result-object v0

    .line 66
    const-string v1, "ISREG"

    const-string v2, "1"

    invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;

    .line 67
    invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z

    .line 68
    new-instance v0, Landroid/content/Intent;

    invoke-direct {v0}, Landroid/content/Intent;-><init>()V

    .line 69
    iget-object v1, p0, Lcom/drivetest/lukaoyi/SeriaNumberActivity$1;->this$0:Lcom/drivetest/lukaoyi/SeriaNumberActivity;

    const-class v2, Lcom/drivetest/lukaoyi/MainActivity;

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClass(Landroid/content/Context;Ljava/lang/Class;)Landroid/content/Intent;

    .line 70
    iget-object v1, p0, Lcom/drivetest/lukaoyi/SeriaNumberActivity$1;->this$0:Lcom/drivetest/lukaoyi/SeriaNumberActivity;

    invoke-virtual {v1, v0}, Lcom/drivetest/lukaoyi/SeriaNumberActivity;->startActivity(Landroid/content/Intent;)V

    .line 71
    iget-object v0, p0, Lcom/drivetest/lukaoyi/SeriaNumberActivity$1;->this$0:Lcom/drivetest/lukaoyi/SeriaNumberActivity;

    invoke-virtual {v0}, Lcom/drivetest/lukaoyi/SeriaNumberActivity;->finish()V

    .line 79
    :goto_0
    return-void

    .line 73
    :cond_0
    iget-object v0, p0, Lcom/drivetest/lukaoyi/SeriaNumberActivity$1;->this$0:Lcom/drivetest/lukaoyi/SeriaNumberActivity;

   iget-object v1, p0, Lcom/drivetest/lukaoyi/SeriaNumberActivity$1;->this$0:Lcom/drivetest/lukaoyi/SeriaNumberActivity;

    iget-object v1, v1, Lcom/drivetest/lukaoyi/SeriaNumberActivity;->seriaNumber:Ljava/lang/String;

   # const-string v1, "\u5e8f\u5217\u53f7\u9519\u8bef\uff0c\u8bf7\u68c0\u67e5\u540e\u91cd\u65b0\u8f93\u5165\uff01"

    const/4 v2, 0x1

    invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;

    move-result-object v0

    invoke-virtual {v0}, Landroid/widget/Toast;->show()V
    :try_end_0
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0

    goto :okbroken
    goto :goto_0

    .line 75
    :catch_0
    move-exception v0

    .line 77
    invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V

    goto :goto_0
.end method




另外,我们来看这个序列号是怎么样生成的:
在SeriaNumberActivity里面我们可以看到:

this.seriaNumber = localEncryptionAlgorithm.MD5("yida1234");

而EncryptionAlgorithm.md5是这样的:

public String MD5(String paramString)
{
    try
    {
      MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
      localMessageDigest.update(paramString.getBytes());
      byte[] arrayOfByte = localMessageDigest.digest();
      StringBuffer localStringBuffer = new StringBuffer("");
      for (int i = 0; i < arrayOfByte.length; i++)
      {
      int j = arrayOfByte;
      if (j < 0)
          j += 256;
      if (j < 16)
          localStringBuffer.append("0");
      localStringBuffer.append(Integer.toHexString(j));
      }
      String str = localStringBuffer.toString().substring(8, 24);
      return str;
    }
    catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
    {
      localNoSuchAlgorithmException.printStackTrace();
    }
    return "";
}

也就是序列号为“yida1234”md5加密后取第8到24这一段的内容。




这个网盘里面的apk都可以拿这种方法试一试:http://pan.baidu.com/share/home?uk=3389337036&view=share#category/type=0


破解完成的apk上传中。


Hmily 发表于 2015-6-5 12:06

以解决论坛用户问题为申请理由挺好,可惜你没写格式啊?邮箱都哪去了?

发表于 2015-6-5 13:43

Hmily 发表于 2015-6-5 12:06
以解决论坛用户问题为申请理由挺好,可惜你没写格式啊?邮箱都哪去了?

@Hmily
那天点了发表帖子后才发现,但是审核中,编辑不了,于是重新提交了一份。

Hmily 发表于 2015-6-5 18:00

游客 113.66.157.x 发表于 2015-6-5 13:43
@Hmily
那天点了发表帖子后才发现,但是审核中,编辑不了,于是重新提交了一份。

可能发现重复就被删了,邮箱是什么?

发表于 2015-6-6 15:22

Hmily 发表于 2015-6-5 18:00
可能发现重复就被删了,邮箱是什么?

邮箱是:gyluci2@163.com
{:1_914:}

Hmily 发表于 2015-6-6 16:42

ID:7ktest
邮箱:gyluci2@163.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

7ktest 发表于 2015-6-8 09:15

Hmily 发表于 2015-6-6 16:42
ID:7ktest
邮箱:



感谢,已经登录,在此报到。{:1_919:}

7ktest 发表于 2015-6-9 09:04

纠正一下,注册码的生成是:序列号+yida1234 进行md5加密取8到24位这一段内容。
已破解的apk在:链接:http://pan.baidu.com/s/1c0Ams7I 密码:bvck
页: [1]
查看完整版本: 申请会员ID:7ktest【申请通过】