728x90
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;
}
내가 다이얼로그에 입력한 값은 Str2에 들어간다. Str1은 AD46DFS547
으로 박혀있다.
2. 접근방법
끝이다. OEP는 imageBase+EntryPoint로 계산하면 끝이다.
3. 풀이
OEP : 00401360
Serial : AD46DFS547
4. 몰랐던 개념
UPX는 알려진 패킹 기법으로 초기 pushad 명령어로 현재 레지스터들의 값을 스택에 저장한 뒤, 언팩 로직을 거치고 다시 popad 명령어로 복원 시킨뒤 OEP로 뛴다.
728x90
'워게임 > CodeEngn' 카테고리의 다른 글
[CodeEngine] Basic RCE L15 (0) | 2021.01.02 |
---|---|
[CodeEngine] Basic RCE L09 (0) | 2020.12.29 |
[CodeEngn] Basic RCE L07 (0) | 2020.12.28 |
[CodeEngn] Basic RCE L05 (0) | 2019.05.17 |
[CodeEngn] Basic RCE L04 (0) | 2019.05.16 |
Uploaded by Notion2Tistory v1.1.0