일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- ImageSwitching
- 리버싱핵심원리
- CodeEngn
- Static안티디버깅
- RedLine Stealer
- UTF-16
- CP949
- OllyDbg
- 분석 보고서
- Exe2Aut
- JIT
- Visual Studio
- 서비스프로세스
- hxd
- DebugBlocker
- .net
- 디버깅
- 안티디버깅
- Advanced안티디버깅
- Python
- PEImage
- x32dbg
- IL코드
- UTF-32
- 리버싱
- 서비스디버깅
- dotPeek
- Dynamic안티디버깅
- Self-Creation
- Today
- Total
-榮-
[CodeEngn] Basic RCE L01 (+α 패치파일 만드는 법) 본문
● CodeEngn Basic RCE L01 문제
문제를 보면 GetDriveTypeA 함수가 HDD의 타입을 얻어오는 함수로 추정됩니다.
따라서 GetDriveTypeA 함수 호출 부분을 위주로 분석해보면 될 것입니다.
- GetDriveTypeA 함수란?
: 디스크 드라이브가 이동식, 고정, CD-ROM, RAM 디스크 또는 네트워크 드라이브인지 알아내는 함수이다.
함수의 리턴 값을 보면(출처:MSDN) CD-ROM으로 인식시키기 위해서는 '5'가 되어야 된다는 것을 알 수 있습니다.
+α (CD-ROM으로 인식한 MessageBox를 띄워보자.)
● CodeEngn Basic RCE L01 +α
◎ 파일 실행 화면
CD-Rom으로 인식이 되지 않으면 "Nah... This is not a CD-ROM Drive!" 문자열이 나오므로 문자열을 검색하여 분기점을 찾아 패치해주면 될 것입니다.
◎ 패킹 및 난독화 여부 확인
● CodeEngn Basic RCE L01 +α(분석)
앞에서 추측한 "Nah... This is not a CD-ROM Drive!" 문자열을 화면에서 바로 확인할 수 있습니다.
해당 문자열의 위의 JE assembly을 확인하면 "Ok, I really think that your HD is a CD-ROM! :p" Text를 나타내는 MessageBoxA로 가는 것을 확인할 수 있습니다.
따라서 00401026는 00401024의 결과로 출력하는 MessageBoxA가 선택되는 분기점입니다.
● CodeEngn Basic RCE L01 +α (풀이)
CodeEngn Basic RCE L01 문제의 YEAH! MessageBox를 띄우는 2가지 경우
- 00401024 CMP EAX, ESI를 패치하기
- 00401028 JE를 패치하기
1. 00401024 CMP EAX, ESI를 패치하기
- CMP EAX, ESI --> CMP EAX, EAX 또는 CMP ESI, ESI
2. 00401028의 JE를 패치하기
- JE --> JMP 또는 JNE
패치 후 YEAH! MessageBoxA가 실행되는 것을 확인할 수 있습니다.
+α 패치파일 만드는 법
1. Assembly 코드 패치 (ex, CMP EAX, ESI --> CMP EAX, EAX)
2. 수정한 부분 드래그 후 마우스 우클릭 후 [Copy to executable > Selection] 선택
3. 패치한 코드 저장
'CodeEngn > Basic' 카테고리의 다른 글
[CodeEngn] Basic RCE L07 (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 |
[CodeEngn] Basic RCE L03 (+α All intermodular calls) (0) | 2021.03.20 |