일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Self-Creation
- CP949
- 서비스디버깅
- RedLine Stealer
- Advanced안티디버깅
- 분석 보고서
- DebugBlocker
- UTF-16
- 안티디버깅
- 디버깅
- PEImage
- .net
- x32dbg
- Python
- 리버싱
- UTF-32
- dotPeek
- IL코드
- 리버싱핵심원리
- ImageSwitching
- 서비스프로세스
- CodeEngn
- Static안티디버깅
- hxd
- JIT
- Dynamic안티디버깅
- Exe2Aut
- Visual Studio
- OllyDbg
- PEImageSwitching
- Today
- Total
-榮-
[CodeEngn] Basic RCE L18 본문
● CodeEngn Basic RCE L18 문제
◎ 파일 실행 화면
[Search for > All referenced text strings]에서 "Bad"와 "You serial is Wrong, tru again"을 찾고, 분기점과 분기 조건을 찾아 serial을 찾으면 될 것 같습니다.
◎ 패킹 및 난독화 여부 확인
● CodeEngn Basic RCE L18 분석 및 풀이
문자열 검색으로 "Bad"와 "You serial is Wrong, tru again"을 찾아봅니다.
"Bad" 문자열 주소로 이동하면 분기점(004011F6)이 보입니다. 분기 조건은 lstrcmpiA 함수를 사용하여 Name으로 생성된 Serial과 입력받은 Serial을 비교하는 것으로 보입니다.
이때, 004011EF에 BP를 걸고, 실행[F9]하면 CodeEngn Basic RCE L18의 답을 찾을 수 있습니다.
프로그램이 Name을 받고, Serial을 만드는 전체적인 흐름을 파악해보자.
화면을 더 내려가다 보면(주소 기준) GetDlgItemTextA 함수 여러 개를 볼 수 있습니다. 이 함수를 사용해서 입력받은 Name과 Serial을 가져오는 것입니다.
GetDlgItemTextA 함수에 BP를 걸고 진행하다 보면, 00401110에서 입력받은 Name(CodeEngn)을 가져오는 것을 볼 수 있습니다. (반환 값 : 버퍼에 복사된 문자 수(출처:MSDN))
Name(CodeEngn)을 가져오고 계속 진행(Step Over[F8])하다 보면 Name을 가지고 Serial을 만드는 코드(0040113C ~ 0040118C)를 확인할 수 있습니다.
Serial 생성과정 흐름
◎ [0040113C ~ 00401146]
00401146 CALL 00404058에서 004088F0의 위치에 004076F0("CodeEngn")을 암호화(?)해서 적습니다. [그림 9]
◎ [00401166 ~ 0040118C]
Serial 생성 과정 설명 | 설명 및 예시 |
1. edx = C1 (CALL 00404058의 결과) |
3. eax : CALL 00404820의 결과를 1 Byte ex. [그림 10]의 'CD' 4. edx : 524540h 5. eax : 000000CD + 524540 : 52460D 7. edx : 06162370 8. eax : 056B4AC0 |
◎ [004011A1 ~ 004011AC]
004011AC wsprintfA 함수에서 [00401166 ~ 0040118C]에서 만들어진 06162370과 056B4AC0를 이어 붙여 004080F0에 적습니다. [그림 10]
● CodeEngn Basic RCE L18 답
'CodeEngn > Basic' 카테고리의 다른 글
[CodeEngn] Basic RCE L20 (0) | 2021.03.29 |
---|---|
[CodeEngn] Basic RCE L19 (+α AutoIt 전용 디컴파일러) (0) | 2021.03.27 |
[CodeEngn] Basic RCE L17 (0) | 2021.03.26 |
[CodeEngn] Basic RCE L16 (0) | 2021.03.26 |
[CodeEngn] Basic RCE L15 (0) | 2021.03.25 |