[피카츄배구 리버싱] 3


CreateWindowExA에 어떤 인자가 들어가는지 확인해보면
lParam = 0
hInst = 0x400000
hMENU = 0x7D5034B
hParent = 0
Height = 0x16B
Width = 0x1C0
Y = 0x1B4
X = 0x2E8
Style = 0xCF0000
WindowName = 0x411038(우리가 수정한 것)
Class = "MAIN"
ExtStyle = 0
이 됩니다. 창의 크기를 바꿀 수 있겠으나 중요한 부분은 아닌 것 같아 넘어가겠습니다. 주목할 부분은 LoadMenuA 함수입니다. 확실하지는 않지만 이 함수에서 이름을 불러오지 않을까 싶네요. "IDR_MENU1", 0x400000을 인자로 놓고 CALL하네요. 함수를 찾아보면 "IDR_MENU1" 라는 제목을 가진 리소스를 찾아와 불러옵니다. 이제 리소스 부분의 structure도 공부를 해야할 것 같은데 일단 미루고, 리소스해커를 이용해 메뉴 이름만 바꿔보겠습니다.



리소스해커로 열어보면 이렇게 생겨잇는데, 일본어를 잘 몰라서 한글판을 다운받아 참고하면서 수정했습니다.



수정 후에 저장하면 이제 조금 그럴싸해졌습니다.



물론 아직 고칠건 많지만요. 이제 CreateWindowExA 함수를 넘어가보겠습니다.
명령어를 하나씩 진행하다보면 CreateWindowExA를 호출하는건 sub_4075C0인데 창은 sub_4071E0에서 처음 뜨는 것을 확인할 수 있습니다. 완전한 창은 아니고 아래와 같은 형태의 창입니다.



sub_4071E0 안으로 들어가보겠습니다.



저런, 굉장히 별게 없네요. 저 인자 5를 다른 값으로 바꾸면 다른 액션을 취하도록 할 수도 있습니다. 이렇게 별다른 것 없이 sub_401240은 종료됩니다. sub_401240은 창을 만들고 제목과 메뉴를 붙인 뒤 빈 껍데기의 창을 보여지게 하는 함수였습니다.

그리고 계속 진행하다보면 sub_406A50을 call할 때 비로소 이미지가 로딩되는 것을 알 수 있습니다. sub_406A50 안으로 들어가보겠습니다.



일단 4개의 함수의 주소를 레지스터에 담네요. PeekMessageA, GetMessageA, TranslateMessage, DispatchMessageA가 뭐하는 함수인지 찾아보면 http://blog.naver.com/lsc173/220520479327 키보드 입력을 처리하는 부분으로 추정됩니다 . 일단 넘어갑시다.



루프를 계속 돌면서 뭔가 이미지를 불러오는 것 같은데, 핸드레이 하지말고 IDA를 씁시다. IDA로 확인한 코드는 아래와 같습니다.



0x406ABD에 breakpoint를 걸어두고 F9를 눌러 진행하다보면 그림이 조금씩 로딩되는 것을 관찰할 수 있는데, 이를 통해 0x401460 함수가 이미지를 로딩하는 것으로 추정할 수 있습니다. 0x401460 안으로 들어가겠습니다.


굉장히 어지럽네요. 일단 (_DWORD *)v1 + 100 = 0x4013A0에서 이미지가 로딩됩니다. timeGetTime()으로 시간을 비교하는데 비교하는 값은 0x28(40ms)입니다. 40ms마다 이미지를 보여준다고 추론할 수 있겠네요.

0x4013A0 부분의 코드는 아래와 같습니다.

우리에게 익숙한 PUSH EBP로 시작하지 않네요. 혼란스럽습니다. 그래도 CALL하는 저 4개의 함수 중에서 어느 하나는 그림을 띄울 것입니다.
첫 번째로 sub_404ED0은 GetClientRect 함수를 부릅니다. 패스합시다.

두 번째로 sub_404ED0은 sub_408C90을 call합니다.

call하고 또 call하고 이건 뭐 끝도 안보이네요. 일단 제 멘탈의 건강을 위해 다른 방법을 모색해보겠습니다.



'컴퓨터과학 > 리버싱' 카테고리의 다른 글

[피카츄배구 리버싱] 7  (0) 2018.03.11
[피카츄배구 리버싱] 6  (0) 2018.03.11
[피카츄배구 리버싱] 5  (0) 2018.03.11
[피카츄배구 리버싱] 4  (0) 2018.03.10
[피카츄배구 리버싱] 3  (0) 2018.03.10
[피카츄배구 리버싱] 2  (0) 2018.03.10
[피카츄배구 리버싱] 1  (3) 2018.03.10
  Comments
댓글 쓰기