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目录