先看信息,64位程序,无壳
然后我用IDA打开看了半天,啥也看不出来
运行一下,发现是个安装程序
安装完成
安装后的程序为Challenge1.exe ,32位,用C#写的
点击DECODE会变成一个狗头
用IDA打开发现不行,无法反汇编,然后搜了下C#逆向,看到篇文章:推荐.Net、C# 逆向反编译四大工具利器
改用NET打开,这里可以看到DECODE!这个按钮,点进去查看这个按钮的事件
发现这里有三个for循环,取用了data_secret这个里面的资源
data_secret在Resources里面
写个脚本,
#include
#include
#include
#include
int main()
{
int buffer[] = {0xA1,0xB5,0x44,0x84,0x14,0xE4,0xA1,0xB5,0xD4,0x70,0xB4,0x91,0xB4,0x70,0xD4,0x91,
0xE4,0xC4,0x96,0xF4,0x54,0x84,0xB5,0xC4,0x40,0x64,0x74,0x70,0xA4,0x64,0x44,0}; //最后加个0,控制循环条件
char str[50];
for (int i = 0; buffer[i] != 0; i++)
{
int num2 = buffer[i];
str[i] = ((num2 >> 4) | ((num2 << 4) & 240)) ^ 0x29;
}
printf("str = %s\n",str);
char str2[50];
for (int j = 0; j < strlen(str); j += 2)
{
str2[j] = str[j+1];
str2[j+1] = str[j];
}
printf("str2 = %s\n",str2);
char str3[50];
for (int k = 0; k < strlen(str2); k++)
{
char ch1 = str2[k];
str3[k] = ch1 ^ 0x66;
}
printf("str3 = %s\n",str3);
return 0;
}
运行结果
根据hint可知第一个符合条件
最终flag:flag{[email protected]}