-榮-

[CodeEngn] Advance RCE L04 Serial 생성 분석 본문

CodeEngn/Advance

[CodeEngn] Advance RCE L04 Serial 생성 분석

xii.xxv 2021. 4. 2. 17:28

[※참고]

이 글은 CodeEngn Advance RCE L04의 Serial 생성 부분을 분석한 글로 CodeEngn Advance RCE L04 풀이의 일부분입니다.

CodeEngn Advance RCE L04은 CodeEngn Advance RCE L04을 참고해 주세요.

 

● CodeEngn Advance RCE L04 풀이 中 Serial 생성

 

[Search for > All intermodular calls]에서 Serial 생성을 하기 위한 Name을 읽어오는 GetDlgItemTextA 함수에 BP를 걸고 실행[F9]합니다.

[그림 1] All intermodular calls

 

각각의 GetDlgItemTextA 함수에서 읽어오는 값을 확인합니다.

[그림 2] EAX = 8 / Name 읽어옴
[그림 3] EAX = 4 / Serial 읽어옴

 

각각의 GetDlgItemTextA 함수 Buffer 주소 내용 확인

[그림 4] 읽어온 Name, Serial

 

00401114는 CodeEngn Advance RCE L04에서 성공/실패 MessageBox 함수가 있었던 함수의 시작 부분입니다.

GetDlgItemTextA 함수로 Name과 Serial을 읽어온 후 바로 CALL 00401114가 있는 것을 보니 CALL 00401114 내부에 입력받은 Name으로 Serial을 만드는 코드가 있을 것입니다.

CALL 00401114에서 Step Into[F7]를 하여 내부로 들어가 코드를 살펴봅니다.

[그림 5] CALL 00401114 내부

 ◎ CALL 00401114 내부 Serial 생성 흐름

CALL 00401114 내부 Serial 생성 흐름 설명 설명 및 예시
[00401115 ~ 00401125]

각 GetDlgItemTextA 함수의 반환 값이 0 인지 확인

[00401127 ~ 00401152]

1. esi, ecx, edx 초기화 (0)
2. edx = 0Ah
3. [반복문]
   1) MOVZX eax, [ecx+004030C0]
   2) eax = eax + 1
   3) eax = eax + edx
   4) esi = esi + eax
   5) ecx = ecx + 1
   6) edx = edx * ecx
   7) edi = edx
   8) edi = edi * esi
   9) CMP ecx, [00403100]
[00401115 ~ 00401125]

Name과 Serial이 제대로 입력되었는지 확인


[00401127 ~ 00401152]

1) eax = 입력받은 Name 문자 하나씩 대입
   ex. eax = 43('C')  //Name : CodeEngn , 반복문 1회차

5) 6)에서 곱셈에 사용되지만 ecx가 1)에서 다음 문자를 가지고 올 때도 사용된다.

8) 최종적으로 생성된 Serial은 edi에 있다.

9) [00403100]에는 Name을 읽어온 GetDlgItemTextA의 반환 값이 있다. 즉, 이름의 수만큼 반복되도록한다.
   ex. Name : CodeEngn / [00403100] : 08

 

[그림 6] 반복문 결과 EDI

 

반복문에서 생성된 Serial을 "LOD-%lu-%lX" 형식으로 만들면 CodeEngn Advance RCE L04의 답이 나온다. wsprintfA 함수를 실행하면 반복문에서 생성된 Serial의 "LOD-%lu-%lX" 형식을 [00403104]에서 확인할 수 있다.

(%lu : 부호없는 10진수로 4바이트 / %lx : 16진수로 4바이트)

[그림 7] 생성된 Serial

 

 

 

'CodeEngn > Advance' 카테고리의 다른 글

[CodeEngn] Advance RCE L06  (0) 2021.04.02
[CodeEngn] Advance RCE L05  (0) 2021.04.02
[CodeEngn] Advance RCE L04  (0) 2021.04.02
[CodeEngn] Advance RCE L03 Serial 생성 분석  (0) 2021.03.31
[CodeEngn] Advance RCE L03  (0) 2021.03.31