Untitled

보면 call sub_140001000 함수에서 입력값이 올바른지 확인하는 거 같다.

Untitled

해당 함수에서는 위에서 연산을 하는 거 같다.

디컴파일 한 결과는 아래와 같다.

__int64 __fastcall sub_140001000(__int64 a1)
{
  int i; // [rsp+0h] [rbp-18h]

  for ( i = 0; (unsigned __int64)i < 0x18; ++i )
  {
    if ( byte_140003000[i] != (i ^ *(unsigned __int8 *)(a1 + i)) + 2 * i )
      return 0i64;
  }
  return 1i64;
}

Untitled

해당 함수에서 비교하는 값들을 확인할 수 있고

해당 비교하는 값들을 활용하여 플래그를 추출하는 코드를 파이썬으로 작성해보자.