[Dreamhack] Simple Crack Me

chrmqgozj·2025년 2월 7일

DreamHack

목록 보기
21/39
  1. main
int __fastcall main(int argc, const char **argv, const char **envp)
{
  int v3; // ecx
  int v4; // r8d
  int v5; // r9d
  int v6; // edx
  int v7; // ecx
  int v8; // r8d
  int v9; // r9d
  int result; // eax
  int v11; // [rsp+4h] [rbp-Ch] BYREF
  unsigned __int64 v12; // [rsp+8h] [rbp-8h]

  v12 = __readfsqword(0x28u);
  v11 = 0;
  sub_40BB20((unsigned int)&unk_4B6004, (unsigned int)&v11, (_DWORD)envp, v3, v4, v5);
  if ( v11 == 322376503 )
  {
    sub_41A400("Correct!");
    result = 0;
  }
  else
  {
    sub_40B990((unsigned int)"%x is wrong x(\n", v11, v6, v7, v8, v9);
    result = 1;
  }
  if ( v12 != __readfsqword(0x28u) )
    sub_45A420();
  return result;
}

(ida로 디컴파일 했을 때 명칭이 main도 아니였다. 임의로 수정한거다)

저 함수들을 몇 개 열어봤는데 아무리 봐도 분석하라고 준 건 아닌 것 같다.
그래서 일단 몇 개를 시험삼아 넣어봤다. 왜냐하면 else문에서 틀린 답을 wrong이라고 주기 때문에 힌트를 얻을 수 있을 것 같았기 때문이다.

  1. 예시

흠...아무리 봐도 16진수로 바꾸는 것 같은데

엥 이게 아닌가


비교문은 int랑 비교하는거라 그냥 대입하면 된다...ㅋㅋㅋ

0개의 댓글