WNDCLASS를 살펴보면 다음과 같이 생긴걸 알 수 있고, 알아야하는 함수는 lpfnWndProc이다. 따라서 해당 위치에 있는 값을 확인하면 함수를 알 수 있을 것이다.
그래서 저장된 값을 확인해보니,
함수 하나를 발견할 수 있었다. bp를 걸고 들어가보면,
위 블로그에 그리기 함수에 있던 함수(BeginPaint, PostQuitMessage, DefWindowProcW 등)와 비슷한 코드 구조를 발견할 수 있었다.bp를 걸고 실행하면 대부분 BeginPaint가 있는 쪽이 아니라 반대편으로 넘어가 바로 DefWindowProcW를 부르고 return한다.따라서 BeginPaint가 있는 loc_7FF7E7533365에 bp를 걸고 실행했다.그리고 한 코드씩 진행하다보면[F8]
sub_7FF7E7532C40 함수를 호출 후 그림이 그려지는 것을 확인할 수 있다. 따라서, 이번엔 이 함수에 bp를 걸고 실행해 보았다.
여기서 실행해보면 가리는 선 -> flag 순으로 그림을 그리고
코드 상에서 sub_7FF7E7532B80함수를 반복해서 호출하다 다른 함수를 호출하기 시작하는데 그 부분이 flag를 그리는 부분이다. (각도만 바꾸기 때문에 같은 함수를 호출한 것 같다. )
(실행해보면서 flag가 출력하는 부분을 체크해도 된다.)
따라서, flag가 출력이 시작되는 부분에 rename 기능을 이용해 flag라는 이름을 붙여 주었다.
이제 선 그리는 코드를 지나치고 flag로 바로 이동하도록 수정하면 선을 그리지 않게 되어 flag 값을 확인 할 수 있을 것이다!