HelloUnity-wp

一道unity的逆向题。

链接:HooCTF

还原DLL函数名

打开程序,屏幕会到处飞乱码,可以看到是Unity写的,可以上Il2CppDumper,将GameAssembly.dll逆向,分析函数名发现有flag这个类。

Dl4jsO.png

分析函数逻辑

分析知道flag的Start函数用于初始化随机数,Update函数用1-1023给一个字符串做异或,我们可以知道异或加密的flag应该存在内存中。

动态调试

使用 IDA 动态调试,可以直接定位到被异或的字符串,C# 的 string 使用的是 UTF-16 编码,因为 flag 都是 ASCII 字符,可以只保留低8位。

Dl4bJ1.png

Dl4qRx.png

解密flag

写个简单脚本,从1异或到255。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("hexfile.txt","r",stdin);
char c[100];
for (int i=1; i<=54; i++) c[i] = getchar();
for (int i=1; i<=255; i++)
{
for (int j=1; j<=54; j++)
printf("%c",c[j] ^ i);
printf("\n");
}
}