일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- OllyDbg
- Exe2Aut
- IL코드
- Python
- dotPeek
- 서비스디버깅
- 리버싱
- 디버깅
- CP949
- .net
- Static안티디버깅
- 서비스프로세스
- CodeEngn
- UTF-16
- x32dbg
- hxd
- Visual Studio
- PEImage
- UTF-32
- JIT
- 분석 보고서
- ImageSwitching
- PEImageSwitching
- Self-Creation
- Advanced안티디버깅
- DebugBlocker
- 안티디버깅
- 리버싱핵심원리
- Dynamic안티디버깅
- RedLine Stealer
- Today
- Total
-榮-
[CodeEngn] Advance RCE L03 본문
● CodeEngn Advance RCE L03 문제
◎ 파일 실행 화면
◎ 패킹 및 난독화 여부 확인
● CodeEngn Advance RCE L03 풀이
[Search for > All referenced text strings]에서 [그림 1]의 실패 문자열을 찾으면 실패 문자열 2개와 성공 문자열을 확인할 수 있습니다.
성공 문자열로 이동하면 성공 문자열을 출력하는 MessageBoxW 함수가 따로 떨어져 나와있어 성공과 실패의 분기점과 분기 조건을 확인할 수 없습니다.
따라서 실패 문자열로 이동하는데 두 개의 실패 문자열 중 가장 낮은 주소의 문자열 주소로 이동합니다.
실패 문자열 주소로 이동하면 MessageBoxA 함수 아래로(주소 기준) GetDlgItemTextA 함수가 보입니다. 위에서 입력받은 Name 또는 Serial을 가지고 오고 그 문자열의 길이가 3보다 작으면 실패 메시지를 띄우는 것으로 보입니다.
00401120의 GetDlgItemTextA 함수에 BP[F2]를 걸고 실행[F9]합니다.
GetDlgItemTextA 함수의 반환 값이 8인 것을 보면 실행한 GetDlgItemTextA 함수는 Name을 읽어오는 함수인 것을 알 수 있습니다.
Name을 읽어온 후 코드를 보면 CALL 00101277을 거쳐 GetDlgItemTextA로 문자열을 읽어오고, wsprintfA로 [403000]을 %u 형식으로 변환하여 00403284에 복사됩니다.
00401162의 GetDlgItemTextA 함수의 반환 값이 4인 것에서 입력된 Serial을 읽어오는 것을 알 수 있습니다.
wsprintfA는 문자열의 해당 형식 사양에 따라 변환하어 출력 버퍼에 복사합니다.(출처:MSDN)
[그림 11]에서 wsprintfA는 [403000]의 문자열 "C2A776FA"를 %u 형식(부호 없는 10진수)으로 00403284에 복사합니다.
wsprintfA 함수를 실행한 후 IstrcmpA 함수를 보면, 입력받은 Serial과 복사된 값을 비교하고 있는 것을 볼 수 있습니다.
즉, 부호 없는 10진수로 복사한 값이 CodeEngn Advance RCE L03의 답입니다.
[※참고]
wsprintfA 함수로 [403000]의 문자열을 복사한 것으로 보아 Name을 읽어오고, Serial을 입력받기 전의 CALL 00401277에서 Name을 가지고 Serial을 생성한 것을 알 수 있습니다.
Name을 사용한 Serial 생성 방법은 CodeEngn Advance RCE L03 Serial 생성 분석을 참고해 주세요.
● CodeEngn Advance RCE L03 확인
[그림 12 IstrcmpA 함수에서 입력 Serial과 비교된 값(3265754874)을 입력하면 성공 메시지를 확인할 수 있습니다.
'CodeEngn > Advance' 카테고리의 다른 글
[CodeEngn] Advance RCE L05 (0) | 2021.04.02 |
---|---|
[CodeEngn] Advance RCE L04 Serial 생성 분석 (0) | 2021.04.02 |
[CodeEngn] Advance RCE L04 (0) | 2021.04.02 |
[CodeEngn] Advance RCE L03 Serial 생성 분석 (0) | 2021.03.31 |
[CodeEngn] Advance RCE L01 (0) | 2021.03.31 |