Search

[CodeEngn] Basic RCE L06

Tags
reversing
Category
CodeEngn
Last Edited time
2022/01/07 12:50
Visibility
Public

1. 문제

1) 문제 확인
OEP를 찾고 시리얼 키를 입력하면 된다
UPX로 패킹되어있다. 걍 UPX로 패킹을 풀면 OEP는 걍 찾을수 있다
2) 코드흐름 파악
int sub_401030() { GetDlgItemTextA(hWnd, 1000, Str2, 100); if ( !strcmp(Str1, Str2) ) MessageBoxA(hWnd, "You got it ;)", "Good Job!", 0x40u); else MessageBoxA(hWnd, "Wrong serial!!!", "ERROR", 0x10u); return 0; }
C
복사
내가 다이얼로그에 입력한 값은 Str2에 들어간다. Str1은 AD46DFS547 으로 박혀있다.

2. 접근방법

끝이다. OEP는 imageBase+EntryPoint로 계산하면 끝이다.

3. 풀이

OEP : 00401360
Serial : AD46DFS547

4. 몰랐던 개념

UPX는 알려진 패킹 기법으로 초기 pushad 명령어로 현재 레지스터들의 값을 스택에 저장한 뒤, 언팩 로직을 거치고 다시 popad 명령어로 복원 시킨뒤 OEP로 뛴다.