某外服冒险岛汉化补丁会员破解

这款软件是用于Maplestory(冒险岛外服)的汉化补丁. 随便注册一个账户登录后,主界面如下:

点击开始汉化会提示我们“VIP会员已过期”,拖入ExeinfoPE查壳

发现是C# net,直接拖入dnSpy查看反编译代码

很明显加入了混淆,但又如何呢,这时候de4dot神器登场!经过de4dot反混淆后,反编译代码清晰多了,搜索程序集输入关键字“VIP会员已过期”,只有一个结果:
[C#] 纯文本查看 复制代码

// Token: 0x06000009 RID: 9 RVA: 0x00006274 File Offset: 0x00004474
        private async void btnLocalize_Click(object sender, EventArgs e)
        {
                bool filesDone = false;
                this.btnLocalize.Enabled = false;
                this.lbProgressInfo.Text = "检查汉化环境...";
                if (this.bool_1)
                {
                        MsgBox.smethod_9("请等待数据更新完毕后再汉化!", "提示", MessageBoxButtons.OK, (MsgBox.Enum1)3);
                        this.lbProgressInfo.Text = "请更新完毕后重试...";
                        this.btnLocalize.Enabled = true;
                }
                else if (Class26.smethod_0())
                {
                        MsgBox.smethod_9("检测到游戏正在运行,请关闭游戏后再汉化!", "提示", MessageBoxButtons.OK, (MsgBox.Enum1)1);
                        this.lbProgressInfo.Text = "请结束游戏后重试...";
                        this.btnLocalize.Enabled = true;
                }
                else if (!Class26.smethod_5(Class7.smethod_1()))
                {
                        MsgBox.smethod_9("这不是正确的游戏文件夹,请重新选择。", "提示", MessageBoxButtons.OK, (MsgBox.Enum1)1);
                        this.lbProgressInfo.Text = "请更改路径后重试...";
                        this.btnLocalize.Enabled = true;
                }
                else
                {
                        try
                        {
                                this.bool_0 = true;
                                this.btnLocalize.Enabled = false;
                                this.method_3();
                                this.lbProgressInfo.Text = "检查VIP会员状态...";
                                TaskAwaiter<bool> taskAwaiter = this.method_5().GetAwaiter();
                                if (!taskAwaiter.IsCompleted)
                                {
                                        await taskAwaiter;
                                        TaskAwaiter<bool> taskAwaiter2;
                                        taskAwaiter = taskAwaiter2;
                                        taskAwaiter2 = default(TaskAwaiter<bool>);
                                }
                                if (!taskAwaiter.GetResult())
                                {
                                        this.lbProgressInfo.Text = "[Error] VIP会员已过期。";
                                }
                                else
                                {
                                        Class18 helper = new Class18(new Action<string>(this.method_1));
                                        bool updatedData = false;
                                        if (!File.Exists(Class1.smethod_4() + ".bin"))
                                        {
                                                this.lbProgressInfo.Text = "正在下载最新汉化数据...";
                                                Directory.CreateDirectory(Class1.string_1);
                                                TaskAwaiter taskAwaiter3 = helper.method_4().GetAwaiter();
                                                if (!taskAwaiter3.IsCompleted)
                                                {
                                                        await taskAwaiter3;
                                                        TaskAwaiter taskAwaiter4;
                                                        taskAwaiter3 = taskAwaiter4;
                                                        taskAwaiter4 = default(TaskAwaiter);
                                                }
                                                taskAwaiter3.GetResult();
                                        }
                                        else if (this.cbAutoCheckDataUpdate.Checked)
                                        {
                                                try
                                                {
                                                        this.lbProgressInfo.Text = "正在检查新版汉化数据...";
                                                        TaskAwaiter<Tuple<bool, Class6>> taskAwaiter5 = helper.method_5().GetAwaiter();
                                                        if (!taskAwaiter5.IsCompleted)
                                                        {
                                                                await taskAwaiter5;
                                                                TaskAwaiter<Tuple<bool, Class6>> taskAwaiter6;
                                                                taskAwaiter5 = taskAwaiter6;
                                                                taskAwaiter6 = default(TaskAwaiter<Tuple<bool, Class6>>);
                                                        }
                                                        Tuple<bool, Class6> result = taskAwaiter5.GetResult();
                                                        if (result.Item1)
                                                        {
                                                                this.llbCheckForUpdate.Enabled = false;
                                                                Class6 item = result.Item2;
                                                                if (DialogResult.Yes == MsgBox.smethod_9(string.Concat(new string[]
                                                                {
                                                                        "更新内容(",
                                                                        item.method_6().ToShortDateString(),
                                                                        "):\n\n",
                                                                        item.method_0(),
                                                                        "\n\n----------\n是否立即更新?"
                                                                }), "发现新数据!", MessageBoxButtons.YesNo, (MsgBox.Enum1)4))
                                                                {
                                                                        this.lbProgressInfo.Text = "正在下载最新汉化数据...";
                                                                        TaskAwaiter taskAwaiter3 = helper.method_4().GetAwaiter();
                                                                        if (!taskAwaiter3.IsCompleted)
                                                                        {
                                                                                await taskAwaiter3;
                                                                                TaskAwaiter taskAwaiter4;
                                                                                taskAwaiter3 = taskAwaiter4;
                                                                                taskAwaiter4 = default(TaskAwaiter);
                                                                        }
                                                                        taskAwaiter3.GetResult();
                                                                        updatedData = true;
                                                                }
                                                        }
                                                }
                                                finally
                                                {
                                                        this.llbCheckForUpdate.Enabled = true;
                                                }
                                        }
                                        this.lbProgressInfo.Text = "正在校验汉化数据中...";
                                        if (updatedData || Class26.smethod_9())
                                        {
                                                this.lbProgressInfo.Text = "正在删除旧版本的汉化数据...";
                                                Class26.smethod_14(true, true, true);
                                        }
                                        this.lbProgressInfo.Text = "正在汉化中,请稍等...";
                                        if (!Class26.smethod_2())
                                        {
                                                this.localizationOpt.method_2();
                                                this.localizingOptsExt.method_2();
                                                await Class7.smethod_0();
                                                List<string> list = new List<string>(20);
                                                foreach (object obj in this.localizationOpt.Controls)
                                                {
                                                        CheckBox checkBox = (CheckBox)obj;
                                                        if (!checkBox.Checked)
                                                        {
                                                                list.Add(checkBox.Name);
                                                        }
                                                }
                                                await new Class40(Class1.smethod_4() + ".bin", list).method_0();
                                        }
                                        filesDone = true;
                                        this.timer_0.Enabled = true;
                                        if (Class1.enum3_0 == (Enum3)0)
                                        {
                                                Class26.smethod_11(this.tbMsPath.Text);
                                        }
                                        await this.method_0();
                                        this.class8_0.method_2();
                                        this.btnPauseResume.Enabled = true;
                                        this.btnLocalize.Text = "已汉化";
                                        this.lbProgressInfo.Text = "已汉化完成!";
                                        MsgBox.smethod_9("汉化已完成,请登录游戏体验!", "结果", MessageBoxButtons.OK, (MsgBox.Enum1)5);
                                        helper = null;
                                }
                        }
                        catch (Exception ex)
                        {
                                this.btnLocalize.Text = "开始汉化";
                                this.btnLocalize.Enabled = true;
                                this.lbProgressInfo.Text = "[Error] " + ex.GetBaseException().Message;
                                Class23.smethod_0(ex, null);
                                if (DialogResult.Yes == MsgBox.smethod_9("出现错误:\n\n" + ex.GetBaseException().Message + "\n\n----------\n别慌,别慌~ 先去汉化官网看看有没有相应的解决方法,\n如果没有,再联系QQ群244572576管理员。\n\n立即打开官网 https://hanhua.tk/ ?", "错误", MessageBoxButtons.YesNo, (MsgBox.Enum1)1))
                                {
                                        Process.Start("http://hanhua.tk/problems/?client-error");
                                }
                                if (!filesDone)
                                {
                                        Class26.smethod_14(true, true, true);
                                }
                        }
                        finally
                        {
                                this.bool_0 = false;
                                this.method_3();
                        }
                }
        }

根据上面的代码,我们知道是this.method_5来判断VIP状态,点击进入查看这个方法
[C#] 纯文本查看 复制代码

private async Task<bool> method_5()
        {
                TaskAwaiter<bool> taskAwaiter = Class26.smethod_18(true).GetAwaiter();
                if (!taskAwaiter.IsCompleted)
                {
                        await taskAwaiter;
                        TaskAwaiter<bool> taskAwaiter2;
                        taskAwaiter = taskAwaiter2;
                        taskAwaiter2 = default(TaskAwaiter<bool>);
                }
                bool result;
                if (!taskAwaiter.GetResult())
                {
                        this.lbExpiryDate.ForeColor = Control.DefaultForeColor;
                        this.lbExpiryDate.Text = "VIP会员:" + Class7.smethod_3().ToString("yyyy-MM-dd HH:mm:ss");
                        this.btnTabLicense_Click(this.btnTabLocalize, null);
                        result = true;
                }
                else
                {
                        MsgBox.smethod_9("非常感谢使用 EZMaple 汉化助手!\n你的账号目前是未激活状态,激活后即可享受中文化的游戏体验。", "未激活", MessageBoxButtons.OK, (MsgBox.Enum1)3);
                        this.lbExpiryDate.ForeColor = Color.Red;
                        this.lbExpiryDate.Text = "VIP会员:(未激活)";
                        this.btnTabLicense_Click(this.btnTabLicense, null);
                        result = false;
                }
                return result;
        }

看样子是根据taskAwaiter的返回值来判断是不是会员的,直接右键编辑方法
[C#] 纯文本查看 复制代码

        public async Task<bool> method_5()
        {
                if (!Class26.smethod_18(true).GetAwaiter().IsCompleted)
                {
                        await Task.Delay(5000);
                        TaskAwaiter<bool> taskAwaiter2 = default(TaskAwaiter<bool>);
                        taskAwaiter2 = default(TaskAwaiter<bool>);
                }
                this.lbExpiryDate.ForeColor = Control.DefaultForeColor;
                this.lbExpiryDate.Text = "VIP会员:" + Class7.smethod_3().ToString("yyyy-MM-dd HH:mm:ss");
                this.btnTabLicense_Click(this.btnTabLocalize, null);
                return true;
        }

顺便把Class7.smethod_3的会员时间也更改一下
[C#] 纯文本查看 复制代码

        internal static DateTime smethod_3()
        {
                return new DateTime(2077, 1, 1);
        }

全部保存为DofDragon.exe,登录使用汉化看看

进游戏已经是汉化状态了~~

THE END
喜欢就支持以下吧
点赞1
分享
评论 抢沙发
  • 管埋员的头像-小北的自留地

    昵称

  • 取消
    昵称