安洵杯 2023 RE 牢大想你了 WP

安洵杯 2023 RE 牢大想你了 WP_第1张图片

可以看到得到的是一个Unity文件

从Lazzaro师傅的blog里可以得到经验

Unity逆向 | Lazzaro​ 工具 Unity Dll逆向 一般的 Unity3D 游戏的主逻辑都在 Assembly-CSarp.dll 中,所以需要 dll文件逆向/重新打包 工具。Unity3D开发的游戏,其核心代码都在这个 dll 文件中,所以逆向/修改这个 dll 文件就可以了。 ILSpy 用于查看dll程序逻辑。 ILDASM 用于反编译dll文件,生成il文件(存放了dll反编译后的指令)和reicon-default.png?t=N7T8https://lazzzaro.github.io/2020/12/13/reverse-Unity%E9%80%86%E5%90%91/index.html

Unity Dll逆向

一般的 Unity3D 游戏的主逻辑都在 Assembly-CSarp.dll 中,所以需要 dll文件逆向/重新打包 工具。Unity3D开发的游戏,其核心代码都在这个 dll 文件中,所以逆向/修改这个 dll 文件就可以了。

所以我们在文件夹里找 Assembly-CSarp.dll 这个文件

安洵杯 2023 RE 牢大想你了 WP_第2张图片

Unity框架的文件我们用dnspy进行反编译

安洵杯 2023 RE 牢大想你了 WP_第3张图片

GameManager看起来像个正经文件,点开来看一下

安洵杯 2023 RE 牢大想你了 WP_第4张图片

有“牢大”“flag”的字符串,应该是主函数部分

安洵杯 2023 RE 牢大想你了 WP_第5张图片

往下翻看到类似key和密文的东西

安洵杯 2023 RE 牢大想你了 WP_第6张图片

跟进一下encryptedData后面的字符串

安洵杯 2023 RE 牢大想你了 WP_第7张图片

跳转到加密函数位置,标准TEA加密

结合上文得知:密文={ 3363017039,1247970816,549943836,445086378,3606751618,1624361316,3112717362,705210466,3343515702,2402214294,4010321577,2743404694 }

密钥={ 286331153,286331153,286331153,286331153 }

delta=2654435769

由此构建TEA解密脚本

#include 
#include 
#include 
#include 

void Decrypt(uint32_t* data, uint32_t* key)
{
    uint32_t v0 = data[0], v1 = data[1];
    uint32_t delta = 2654435769;
    uint32_t sum = delta * 32; //反过来最后一次的sum,循环32次

    for (int i = 0; i < 32; i++)
    {
        v1 -= ((v0 << 4) + key[2]) ^ (v0 + sum) ^ ((v0 >> 5) + key[3]);
        v0 -= ((v1 << 4) + key[0]) ^ (v1 + sum) ^ ((v1 >> 5) + key[1]);
        sum -= delta;
    }

    data[0] = v0;
    data[1] = v1;
} //解密函数

int main()
{
    uint32_t encryptedData[] = 
    { 3363017039,1247970816,549943836,445086378,
     3606751618,1624361316,3112717362,705210466,
     3343515702,2402214294,4010321577,2743404694 };  //12个
    uint32_t key[] = { 286331153,286331153,286331153,286331153 };

    for (int i = 0; i < 12; i += 2)   
    {
        Decrypt(&encryptedData[i], key);
    }

    printf("%s", encryptedData);

    return 0;
}

安洵杯 2023 RE 牢大想你了 WP_第8张图片

得到 flag{it_is_been_a_long_day_without_you_my_friend}

你可能感兴趣的:(unity,c#,c语言)