바이너리를 패치하는 문제를 처음 풀어보았다.
문제에서 이 문제는 실제 시간으로 365일이 흐르면 플래그를 출력하는 프로그램이 주어집니다.
라고 했던 것과 같이, 1년 후에 flag를 보여줄 것이라는 문구가 뜨며 프로그램이 계속 실행된다.
문자열로 I will show you the flag after 1 year :p"
를 찾아서 갔더니 아래의 함수가 있었다.
DAT_0040404c가 0으로 초기화되어있었다. 그리고 while문에서는 DAT_0040404c가 1씩 커지며 while문을 돈다.
DAT_0040404c가 0x2238과 같아지면(0x2238번을 돌면) while문을 탈출하며 "Great xD 1 year has passed! The flag is: "
가 출력된다.
그래서 아예 while문이 실행되지 않도록 하려고 DAT_0040404c를 0x2238로 초기화해줬다.
flag는 DH{6ad0f80a0448aee5e8615fbdea9c2775}
이었다.