#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
// 암호화된 FLAG (실제 FLAG: CTF{P34k_4lch3my_4nt1_d3bu9})
// 키값 0x77로 XOR 암호화된 바이트 배열
unsigned char enc_flag[] = {
0x34, 0x23, 0x31, 0x0c, 0x27, 0x44, 0x43, 0x3c,
0x2b, 0x43, 0x1c, 0x34, 0x1b, 0x4d, 0x29, 0x43,
0x44, 0x1e, 0x49, 0x1b, 0x14, 0x32, 0x42, 0x2d
};
// [Anti-Reversing] 디버거 탐지 함수
void check_debugger() {
if (IsDebuggerPresent()) {
printf("\n[!] 튜닝된 연금술 화로(디버거)가 감지되었습니다!\n");
printf("[!] 연금술 재료가 폭발하여 소멸했습니다...\n");
exit(1);
}
}
int main() {
char input[64];
// 디버거 탐지 수행
check_debugger();
printf("===================================================\n");
printf(" [!] 현자의 돌 제작 연금술 시스템 v1.0 [!]\n");
printf("===================================================\n");
printf("연금술법 제1조: 현자의 돌을 연성하기 위한 주문(FLAG)을 입력하십시오.\n\n");
printf("주문 입력 >> ");
if (scanf("%63s", input) != 1) return 0;
int len = strlen(input);
int is_correct = 1;
if (len != sizeof(enc_flag)) {
is_correct = 0;
} else {
// 입력값과 XOR 암호화된 데이터를 비교하는 핵심 로직
for (int i = 0; i < len; i++) {
if ((input[i] ^ 0x77) != enc_flag[i]) {
is_correct = 0;
break;
}
}
}
if (is_correct) {
printf("\n[+] 연성 성공! 현자의 돌이 찬란한 빛을 발합니다!\n");
printf("[+] 연금술의 비밀이 해제되었습니다.\n");
} else {
printf("\n[-] 연성 실패... 입력한 주문이 올바르지 않습니다.\n");
}
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: