
문제에는 해당 바이너리를 분석하라고 되어있는데, 막상 첨부파일엔 .exe파일밖에 없다.
따라서, IDA를 이용해서 정적 분석을 해보고, 안되면 OllyDBG로 동적 분석을 진행하겠다.

main()함수의 내용이다.
어셈블리를 완벽하게 해석하진 않았지만, 문자열들과 aInput 등이 보인다.
눈으로 당장 확인 가능한 문자열이 Input, %256s, Correct, Wrong 등이 있는 것을 보아,
Input을 통해 어떤 값을 입력 받고,
그 값이 올바른 값이면 Correct, 아니면 Wrong을 출력하는 프로그램이라고 유추가 가능하다.
디컴파일로 main()함수가 무슨 동작을 하는지 확인해보겠다.

int __fastcall main(int argc, const char **argv, const char **envp)
{
char v4[256]; // [rsp+20h] [rbp-118h] BYREF
// 256바이트짜리 버퍼, 입력값 저장용 (스택에 위치)
memset(v4, 0, sizeof(v4));
// v4 버퍼 전체를 0으로 초기화 (안정성 확보, 쓰레기 값 제거)
sub_1400011B0("Input : ", argv, envp);
// "Input : "를 출력 (추정), 인자로 argv, envp를 넣은 것으로 보아 출력 함수 또는 기타 초기화 함수
sub_140001210("%256s", v4);
// 표준 입력으로 최대 255글자까지 문자열을 v4에 저장
// 예측: scanf, gets, fgets 등 문자열 입력 함수로 추정
if ( (unsigned int)sub_140001000((__int64)v4) )
puts("Correct");
// sub_140001000 함수가 0이 아닌 값을 리턴하면 정답 처리
else
puts("Wrong");
// 그렇지 않으면 오답 처리
return 0;
}