일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- PEImageSwitching
- x32dbg
- UTF-32
- Python
- hxd
- ImageSwitching
- 서비스디버깅
- 리버싱
- CP949
- RedLine Stealer
- CodeEngn
- JIT
- DebugBlocker
- Advanced안티디버깅
- dotPeek
- Visual Studio
- Static안티디버깅
- PEImage
- 분석 보고서
- Exe2Aut
- Self-Creation
- IL코드
- Dynamic안티디버깅
- 리버싱핵심원리
- 디버깅
- .net
- UTF-16
- 안티디버깅
- 서비스프로세스
- OllyDbg
- Today
- Total
-榮-
[CodeEngn] Basic RCE L07 본문
● CodeEngn Basic RCE L07 문제
◎ 파일 실행 화면
"The serial you entered is not correct!" 문자열을 찾고, 분기점을 찾아 Serial 값을 찾으면 될 것 같습니다.
◎ 패킹 및 난독화 여부 확인
● CodeEngn Basic RCE L07 분석
앞에서 추측한 "The serial you entered is not correct!" 문자열을 찾아봅시다.
실패 문자열 위치로 이동하면, 분기점으로 보이는 JE 명령어와 성공 MessageBox로 추측되는 Code가 있습니다.
분기점을 확인하면 분기 조건으로 보이는 IstrcmpiA 함수를 확인할 수 있습니다.
IstrcatA 함수를 사용하여 문자열을 이어 붙인 Serial 값과 입력받은 값을 비교하는 것으로 추측됩니다.
◎ Serial 생성 과정 추측
- GetVolumeInformationA 함수를 사용하여 C 드라이브의 이름(pFilesSystemNameBuffer)을 얻는다.
- lstrcatA 함수를 이용하여 C 드라이브 이름에 "4562-ABEX"를 이어 붙인다.
- 004010AF의 반복문으로 암호화(?) 한다.
- 004010AD MOV DL, 2와 004010CB DEC DL을 보면 2번 반복하는 것으로 추측된다.
- 004010AF부터 004010C4까지 이어 붙인 문자열의 첫 번째부터 네 번째 HEX값까지 +1 해준다.
(004010AF의[40225C]와 004010A3의 [0040225C]로 C 드라이브 이름일 것을 추측한다.) - 3.2를 반복한다.
- 암호화(?)한 문자열과 "L2C-5781"을 이어 붙인다.(생성된 Serial은 [00402000]에 저장된다.)
[그림 9]의 00402000이 생성된 Serial 값이 저장될 주소입니다.
● CodeEngn Basic RCE L07 풀이
◎ 현재 C 드라이브 이름 확인
◎ C 드라이브 이름이 [공백] 일 때, Serial 값
문자열을 이어 붙인 뒤 반복문을 실행하면 앞의 4Byte가 +2가 된 것을 확인할 수 있습니다.
생성된 문자열과 "L2C-5781"을 이어 붙이고, 입력 값("ABCD")과 비교합니다.
C 드라이브 이름이 [공백] 일 때, Serial 값은 "L2C-57816784-ABEX"
◎ C드라이브 이름이 CodeEngn일 때, Serial 값
004010AD에서 [0040225C]의 값 : "CodeEngn4562-ABEX"
반복문 후 [0040225C]의 값 : "EqfgEngn4562-ABEX"
004010F7에서 [0402000]의 값 : "L2C-5721EqfgEngn4562-ABEX"
● CodeEngn Basic RCE L07 확인
CodeEngn Basic RCE L07의 답은 C드라이브 이름이 CodeEngn일 때, Serial key = "L2C-5721EqfgEngn4562-ABEX"
'CodeEngn > Basic' 카테고리의 다른 글
[CodeEngn] Basic RCE L09 (+α StolenByte 옮기고 덤프 파일 만들기) (0) | 2021.03.23 |
---|---|
[CodeEngn] Basic RCE L08 (0) | 2021.03.23 |
[CodeEngn] Basic RCE L06 (0) | 2021.03.21 |
[CodeEngn] Basic RCE L05 (+α UPX 패킹 상태에서 OEP 찾는 법) (0) | 2021.03.21 |
[CodeEngn] Basic RCE L04 (+α IsDebuggerPresent 우회) (0) | 2021.03.21 |