unity游戏

发布于:2024-04-29 ⋅ 阅读:(56) ⋅ 点赞:(0)

unity游戏

unity游戏逆向主要可以分成两类,dll游戏和libil2cpp游戏,也有apk的。一般为c#编写

一般用dnspy反编译data文件夹中的Assembly-CSharp

D:\ctf附件\attachment\BJD hamburger competition_Data\Managed

[BJDCTF2020]BJD hamburger competition

嗯,引入了很多函数,类,不好看。

Init.secret ^= 127;
				string str = Init.secret.ToString();
				if (ButtonSpawnFruit.Sha1(str) == "DD01903921EA24941C26A48F2CEC24E0BB0E8CC7")
				{
					this.result = "BJDCTF{" + ButtonSpawnFruit.Md5(str) + "}";
					Debug.Log(this.result);
				}

 先Sha1再md5加密。

// ButtonSpawnFruit
// Token: 0x0600000B RID: 11 RVA: 0x00002170 File Offset: 0x00000370
public static string Sha1(string str)
{
	byte[] bytes = Encoding.UTF8.GetBytes(str);
	byte[] array = SHA1.Create().ComputeHash(bytes);
	StringBuilder stringBuilder = new StringBuilder();
	foreach (byte b in array)
	{
		stringBuilder.Append(b.ToString("X2"));
	}
	return stringBuilder.ToString();
}
// ButtonSpawnFruit
// Token: 0x0600000A RID: 10 RVA: 0x00002110 File Offset: 0x00000310
public static string Md5(string str)
{
	byte[] bytes = Encoding.UTF8.GetBytes(str);
	byte[] array = MD5.Create().ComputeHash(bytes);
	StringBuilder stringBuilder = new StringBuilder();
	foreach (byte b in array)
	{
		stringBuilder.Append(b.ToString("X2"));
	}
	return stringBuilder.ToString().Substring(0, 20);
}

sha1加密密文还必须是40位,得到1001,在md5加密。

注意md5函数,要大写,并且是0-20位。

暂时还没遇到

il2cpp加密

重点使用exe同目录下GameAssembly.dll和data目录下il2cpp_data目录