https://dreamhack.io/wargame/challenges/49/
- 메시지 콜백 함수를 찾는다.
- BeginPaint 와 EndPaint 사이에 있는 sub_140002C40() 함수
- 그리는 함수가 많이 있는데 어떤 것이 선을 그리는지 알아낸다.
- 제일 첫번째 함수 sub_140002B80() 내부를 살펴본다.
-> 선을 한번만 그린다.
- 똑같은 함수들이 중복된다. 그 다음 함수인 sub_1400017A0() 내부를 살펴본다.
-> 선을 여러개 그린다.
= = > 선을 한번만 그리는 2B80 함수가 글자를 가리는 함수라고 예측할 수 있다.
- 첫번째 2B80함수에 BP(BreakPoint)를 걸고 디버깅(F9)을 실행한다.
- F8 (Step Over)를 누르며 Alt+Tab 으로 프로그램 진행 상황을 확인한다.
- 선이 하나씩 그려지는 것이 확인된다. 이것을 못 그리게 패치해야한다.
- 2B80 함수 주소 (7FF784272B80 디버깅 해서 바뀐건지 원래 이 주소인지 모르겠다)로 g를 누르고 이동한다.
- 첫번째 어셈블리어을 클릭하고 Edit -> Patch Program -> Assemble -> ret 을 입력한다.
- UI가 변경되는데 신경쓰지 않아도 된다. Edit -> Patch Program -> Apply patches to input file 메뉴를 클릭한다.
- ok를 누른다.
- 프로그램을 다시 실행한다. FLAG를 획득했다.