일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Visual Studio
- 서비스프로세스
- Dynamic안티디버깅
- UTF-32
- 리버싱
- IL코드
- x32dbg
- 서비스디버깅
- Python
- CP949
- CodeEngn
- RedLine Stealer
- 디버깅
- ImageSwitching
- PEImageSwitching
- Exe2Aut
- JIT
- Static안티디버깅
- dotPeek
- 리버싱핵심원리
- PEImage
- OllyDbg
- 안티디버깅
- Advanced안티디버깅
- .net
- Self-Creation
- 분석 보고서
- DebugBlocker
- UTF-16
- hxd
- Today
- Total
-榮-
[CodeEngn] Basic RCE L12 (+α PEView 주소 변환) 본문
● CodeEngn Basic RCE L12 문제
◎ 파일 실행 화면
◎ 패킹 및 난독화 여부 확인
● CodeEngn Basic RCE L12 풀이
성공 문자열이 있는지 검색해봅니다.
0040108B로 이동하면 성공을 알리는 MessageBoxA 함수와 함께 분기점과 GetDlgItemInt 함수가 보입니다.
GetDlgItemInt 함수 정의(출처:MSDN)
UINT GetDlgItemInt(
HWND hDlg,
int nIDDlgItem,
BOOL *lpTranslated,
BOOL bSigned
);
GetDlgItemInt 함수는 입력받은 정수 값을 반환해주는 함수입니다.
실행[F9]을 하고, "1234"를 입력하면 GetDlgItemInt 함수가 4D2를 반환합니다.
"1234"를 16진수로 변환하면 "4D2"입니다.
분기 조건을 확인하면 입력받은 값의 16진수와 "7A2896BF"를 비교하는 것을 볼 수 있습니다.
Key 값은 "7A2896BF"를 10진수 변환한 값일 것입니다.
● CodeEngn Basic RCE L12 확인 및 답
이제 성공 메시지 대신 Key 값이 MessageBox에 출력되도록 overwrite 합시다.
먼저 HexEdit에서 열었을 때 overwrite 할 위치를 찾습니다.
MessageBox의 Text 문자열은 [0040353B]에 위치합니다.
문자열의 HexEdit에서 열었을 때 문자열의 위치를 찾아봅시다.
Image Base : 00400000
Section Alignment : 00001000
0040353B은 data sectoin에 존재합니다.
RVA : 00003000
Pointer ro Raw Data : 00000800
찾으려는 Text 문자열의 위치는 (0040353B - 00400000 - 00003000+ 00000800 =) 00000D3B에 있을 것입니다.
00000D3B위치에 Text 문자열이 있는지 확인해봅시다.
HxD에서 해당 위치의 문자열을 Key로 overwrite합니다.
변경된 파일을 확인합니다.
CodeEngn Basic RCE L12의 답은 Key 값 + overwrite 주소 영역 = 20494803830D3B0D45
+α PEView 주소 변환
PEView는 pFile, pView, RVA, VA를 지원해주기 때문에 위의 문제는 VA로 전환하는 것으로 쉽게 찾을 수 있습니다.
하지만 리버싱 공부를 목적으로 하고 있다면 RVA to RAW를 하는 방법을 알고 할 수 있도록 공부하는 것이 중요합니다.
'CodeEngn > Basic' 카테고리의 다른 글
[CodeEngn] Basic RCE L14 (0) | 2021.03.25 |
---|---|
[CodeEngn] Basic RCE L13 (0) | 2021.03.25 |
[CodeEngn] Basic RCE L11 (0) | 2021.03.24 |
[CodeEngn] Basic RCE L10 (0) | 2021.03.24 |
[CodeEngn] Basic RCE L09 (+α StolenByte 옮기고 덤프 파일 만들기) (0) | 2021.03.23 |