본문 바로가기

개인 공부/리버싱

Reverse Engineering-11(FSC_Level1)

연산 루틴 리버싱 - 시리얼 추출 방법

F-Secure Reverse Engineering (FSC)

2007년 F-Secure 해외 백신 회사에서 개최한 리버스 엔지니어링 대회 문제들이다

문제의 스타일은 일반적인 시리얼 연산 루틴이 주를 이루고 있다

 

※ 공부 목적으로 문제를 풀기 때문에 최대한 분석하고 여러 방법으로 푸는 것을 목적으로 했습니다

 

FSC Level 1

00. FSC_Level1.exe를 실행 

FSC_Level1.exe 실행 화면

정답을 입력하지 않을 경우 Sorry, this key is not valid! 라는 문구가 나오는 것을 확인했다

 

01. PE 분석하기

분석 도구 : PEview, PEiD

분석 순서 : 패킹 여부 확인 -> PE 구조 파악 -> Import 함수 확인

[1] 패킹 여부 확인

PEid로 FSC_Level1.exe 확인

컴파일러 부분에 Noting found * 이 출력된 것을 확인 할 수있다 이런 경우 PEiD에서 캐치하지 못했을 경우가 있어 패킹이 되었다 확정 지을 수 없다

확인 할 수 있는 것은 Entrypoint 0x111E, EP Section : .text, Subsystem : Win32 console 인것을 확인 할 수있고

 

[2] PE 구조 파악하기

[2-1] PEiD를 이용하여 파악하기

PEiD에서 지원하는 PE Details

가장 중요하다고 생각드는 ImageBase : 0x69000000, BaseOfCode : 0x1000,  EntryPoint : 0x111E 인것을 확인했다

코드가 시작되는 위치는 0x69001000(ImageBase + BaseOfCode)인것을 여기서 파악할 수 있다

 

[2-2] PEview를 이용하여 파악하기

PEview로 FSC_Level1.exe 확인

PEview도 PEiD에서 확인 한것과 같은 것을 파악했다

 

[3] Import 함수 확인

[3-1] PEiD

PEiD에서 Import Viewer 확인

Import 함수에서 printf, fgetc, scanf, sprintf, _stricmp 함수들을 확인할 수 있다

이 함수들을 통해 입력 받은 값을 비교하는 것을 알 수 있다

 

[3-2] PEview

PEview SECTION .rdata로 Import 함수 확인

PEview도 PEiD에서 확인 한것과 같은 것을 파악했다


02. 코드 분석하기

분석 도구 : x32dbg

x32dbg로 확인하기

[1] 코드 분석하고 풀기

0x6900106D 부분부터 0x690010A9를 확인하면 CER70msA라는 문자열을 확인할 수 있지만

이 것을 역으로 저장되는 것을 생각하면 Asm07REC라는 문자열이 나오는 것을 확인할 수 있다

0x6900106D ~ 0x690010A9 덤프 확인

 

break point

그리고 0x690010C9에 브레이크 포인트를 걸어두고 실행시킨다음 아무 값을 넣으면 메모리와 0x69003310에 대한 값이 Asm07REC라는 것을 확인할 수 있다

Asm07REC

[1-1] 결과 입력하기

결과


[2] 코드 변조하기

[2-1] JMP문을 수정하기

0x690010C9

0x690010C9의 JNE문을 JE로 바꿔서 정답이 아닌 값을 이동시킨다

abcd입력시

JNE문을 JMP로 바꿔도 바로 Congratulatuons!를 띄울 수 있다


[2-2] NOP을 이용하여 프리 패스하기

nop을 활용

NOP을 사용해서 무시하고 바로 결과를 출력시킨다

'개인 공부 > 리버싱' 카테고리의 다른 글

Reversing Lena1  (0) 2023.05.24
Reverse Engineering-12(FSC_Level2)  (0) 2023.05.18
Reverse Engineering-10 (MFC)  (1) 2023.05.08
Reverse Engineering-009(strcat ~ strlwr)  (1) 2023.04.27
Reverse Engineering-008(strcpy)  (0) 2023.04.23