Untitled

sub_140001000 함수에서 올바른 입력값을 확인하는 거 같다.

Untitled

(sub_140001000 함수)

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

  for ( i = 0; (unsigned __int64)i < 28; ++i )
  {
    if ( ((unsigned __int8)(16 * *(_BYTE *)(a1 + i)) | ((int)*(unsigned __int8 *)(a1 + i) >> 4)) != byte_140003000[i] )
      return 0i64;
  }
  return 1i64;
}

위를 디컴파일 한 결과는 위와 같다.

((unsigned __int8)(16 * *(_BYTE *)(a1 + i)) | ((int)*(unsigned __int8 *)(a1 + i) >> 4)) 

위 연산의 정체를 알아야 한다.

byte_140003000