本文主要是介绍BUUCTF Reverse/[FlareOn1]Bob Doge,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
先看信息,64位程序,无壳
然后我用IDA打开看了半天,啥也看不出来
运行一下,发现是个安装程序
安装完成
安装后的程序为Challenge1.exe ,32位,用C#写的
点击DECODE会变成一个狗头
用IDA打开发现不行,无法反汇编,然后搜了下C#逆向,看到篇文章:推荐.Net、C# 逆向反编译四大工具利器
改用NET打开,这里可以看到DECODE!这个按钮,点进去查看这个按钮的事件
发现这里有三个for循环,取用了data_secret这个里面的资源
data_secret在Resources里面
写个脚本,
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
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{3rmahg3rd.b0b.d0ge@flare-on.com}
这篇关于BUUCTF Reverse/[FlareOn1]Bob Doge的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!