简单去除泰拉瑞亚的Steam验证

第一步:用DnSpy打开Terraria.exe.很惊喜,Tr并没有加混淆,这表明去除它的Steam验证会变得容易许多。
第二步:在项目上右键转到入口点,根据方法一个一个找与Steam相关的语段(或者一个一个下断点直到出现与Steam相关的报错)。
根据找到的内容:SocialAPI.Initialize(null);,再定位到SocialAPI类里的Initialize方法。

public static void Initialize(SocialMode? mode = null)
                {
                        if (mode == null)
                        {
                                mode = new SocialMode?(SocialMode.None);
                                mode = new SocialMode?(SocialMode.Steam);
                        }
                        SocialAPI._mode = mode.Value;
                        SocialAPI._modules = new List<ISocialModule>();
                        SocialAPI.JoinRequests = new ServerJoinRequestsManager();
                        Main.OnTickForInternalCodeOnly += SocialAPI.JoinRequests.Update;
                        SocialMode mode2 = SocialAPI.Mode;
                        if (mode2 != SocialMode.Steam)
                        {
                                if (mode2 == SocialMode.WeGame)
                                {
                                        SocialAPI.LoadWeGame();
                                }
                        }
                        else
                        {
                                SocialAPI.LoadSteam();
                        }
                        foreach (ISocialModule socialModule in SocialAPI._modules)
                        {
                                socialModule.Initialize();
                        }
                }

根据调用方法传递的参数(null)可知会执行
mode = new SocialMode?(SocialMode.None);
mode = new SocialMode?(SocialMode.Steam);

再分析下面的语句,得到思路:避免执行SocialAPI.LoadSteam();就可以跳过Steam验证。

而我们只需要把
mode = new SocialMode?(SocialMode.Steam);
这一行注释掉,就可以避免执行SocialAPI.LoadSteam();

编辑之后保存为Terraria-NoSteam.exe,一切顺利。
关掉Steam后,双击打开保存后的 Terraria-NoSteam.exe 没有报错,顺利进入了游戏!
非常的简单

THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
  • 管埋员

    昵称

  • 取消
    昵称