【逆向】Terraria 破解

最近在玩 Terraria,但对我来讲,玩游戏不去搞破解就很不舒服。

Terraria 的存档分为人物存档和地图存档,我们需要破解的是人物存档。其存储在文档/My Games/Terraria/Players中。

该存档为二进制文件,经过查找分析,其使用了 AES 加密,密钥为h3y_gUyZ。我们编写代码解密:

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

class Program
{
    static void Main(string[] args)
    {
        decryptFile(args[0], args[1]);
    }

    static void decryptFile(string inputFile, string outputFile)
    {
        string key = "h3y_gUyZ";
        UnicodeEncoding unicodeEncoding = new UnicodeEncoding();
        byte[] bytes = unicodeEncoding.GetBytes(key);
        FileStream inputFileStream = new FileStream(inputFile, FileMode.Open);
        RijndaelManaged rijndaelManaged = new RijndaelManaged();
        CryptoStream cryptoStream = new CryptoStream(inputFileStream, rijndaelManaged.CreateDecryptor(bytes, bytes), CryptoStreamMode.Read);
        FileStream outputFileStream = new FileStream(outputFile, FileMode.Create);
        int num;
        while ((num = cryptoStream.ReadByte()) != -1)
        {
            outputFileStream.WriteByte((byte) num);
        }
        outputFileStream.Close();
        cryptoStream.Close();
        inputFileStream.Close();
    }
}

此时,我们得到了明文的二进制存档。

存档为小端存储,里面有玩家的名字、生命值、魔力值、性别、服装、渔夫任务数、背包、虚空袋等内容。当然,我们最关心的是玩家的背包,我们希望往里面塞东西。

经过调试与比较,我们发现背包从 0x0105 字节开始,每 10 个字节代表一个物品。具体含义如下:

在这里插入图片描述

8D 13      | 00 00 | 01 00 | 00 00 | 53  | 01
泰拉棱镜编号 | 无意义 | 数量   | 无意义 | 神话 | 固定在背包

现在,我们可以肆无忌惮地开挂了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值