【逆向】Terraria 破解

最近在玩,但对我来讲,玩游戏不去搞破解就很不舒服 。
的存档分为人物存档和地图存档,我们需要破解的是人物存档 。其存储在文档/My Games//中 。
该存档为二进制文件,经过查找分析,其使用了 AES 加密,密钥为 。我们编写代码解密:
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();}}
此时,我们得到了明文的二进制存档 。
存档为小端存储,里面有玩家的名字、生命值、魔力值、性别、服装、渔夫任务数、背包、虚空袋等内容 。当然,我们最关心的是玩家的背包,我们希望往里面塞东西 。

【逆向】Terraria 破解

文章插图
经过调试与比较,我们发现背包从字节开始,每 10 个字节代表一个物品 。具体含义如下:
8D 13| 00 00 | 01 00 | 00 00 | 53| 01泰拉棱镜编号 | 无意义 | 数量| 无意义 | 神话 | 固定在背包
【【逆向】Terraria 破解】现在,我们可以肆无忌惮地开挂了 。