디컴파일링 중에 질문있습니다.

조회수 725회
int __cdecl main(int argc, const char **argv, const char **envp)
{
  __int64 v3; // r8
  _QWORD v5[31]; // [rsp-60h] [rbp-218h] BYREF
  int v6; // [rsp+98h] [rbp-120h]
  __int16 v7; // [rsp+9Ch] [rbp-11Ch]
  char v8; // [rsp+9Eh] [rbp-11Ah]
  char v9[280]; // [rsp+A0h] [rbp-118h] BYREF

  _fentry__(argc, argv, envp);
  monstartup();
  _main();
  v5[0] = 0x746F6E6D6169i64;
  memset(&v5[1], 0, 0xF0ui64);
  v6 = 0;
  v7 = 0;
  v8 = 0;
  printf("Input password : ");
  scanf("%s", v9);
  strcat((char *)v5, pw2);
  if ( checkpw((__int64)v5, (__int64)v9, v3) )
  {
    puts("Success");
    printf("%s \n", (const char *)v5);
  }
  else
  {
    puts("Failed");
    printf("%s \n", v9);
  }
  system("pause");
  return 0;
}

위의 v5에 최종적으로 무슨 값이 저장되어 있는건지 궁금합니다. 참고로 pw2에는 your라는 문자열이 저장되어있습니다. 제가 생각했을때에는 16진수였던 변수 값이 문자열로 변환되면서 tonmaiyour가 될꺼같은데 아니더라구요?

  • little-endian 인지 big-endian 인지 확인해보세요. 김호원 2021.11.22 08:42

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)