0. 메타데이터 확인
PE64, 아마 패킹은 안됐을 듯
C 언어로 작성된 프로그램
1. 행위 파악
Input을 받는다. 콘솔에서 사용자 입력을 받기 때문에 stdin과 상호작용할 듯?
2. 정적 분석
sub_140001210
에서는 아마 사용자 입력을 받을 것이다
확인해 보니 맞다
그럼 Correct는 어떻게 해야 출력될지 확인해 보자.
2.1. sub_140001000(user_input)
위 식을 가독성 좋게 정리하면 아래와 같다.
__int64 __fastcall sub_140001000(char *usr_input){ int i; // [rsp+0h] [rbp-18h] for ( i = 0; (unsigned __int64)i < 0x12; ++i ) { if ( *(_DWORD *)&stored_data[4 * i] != (unsigned __int8)usr_input[i] ) return 0i64; } return 1i64;}
stored_data는 2차원 배열로, 아래와 같은 값을 가진다.
추가적인 연산을 할 필요 없이, 하드코딩된 데이터가 키값이기 때문에
DH{Comp4re_the_arr4y}가 정답.