본문 바로가기
Reversing/리버싱 CTF

[Reversing.kr] Easy Keygen

by Y06 2020. 10. 4.

압축을 해제하니 txt 파일과 exe 파일이 함께 압축되어 있었다.

txt 파일을 확인해보니 위와 같은 문구가 적혀있었다.

exe 파일을 실행시키면 input name, input serial이라는 문구가 뜬다.

이름과 serial을 입력하라는 뜻인 것 같다.

 

메모장에 있는 serial이 힌트인 것 같다. 메모장의 serial과 연관된 이름을 찾으면 문제를 해결할 수 있을 것 같다.

exe 파일을 올리디버거로 분석하기 위해 넣어 보았다.

[마우스 우클릭] - [Search for] - [All referenced text strings]를 눌러 string을 확인했다.

All referenced text strings는 문자열을 검색하는 방법이다.

 

Corret!와 Wrong이 보인다. 이 문구가 name을 찾는데 중요한 역할을 할 것 같다.

 

Wrong 부분으로 점프하는 구간에 BP(베이스 캠프)를 걸었다.

그리고 위에 있는 반복문을 확인해보았다.

ESI에 NAME을 넣고, EAX에 SERIAL을 넣어 비교한다.

name에 'aaaaaa'를 넣어주었는데 ESI에 있는 name 값과 일치하지 않는다.

윗부분에서 name 값을 변환시켜 serial 값을 만드는 것 같다.

반복문이 존재한다. 반복문 윗부분에는 문자열의 길이를 알아내는 코드가 있다.

반복문 처음에 BP를 걸고, 다시 실행하여 한 줄씩 실행을 시키면 ECX에 16진수 10을, EDX에 name 맨 앞자리인 'a'를 넣어주었다. 그리고 그 둘을 XOR 연상을 해준다.

주 번째에는 16진수 20과 'b'를 XOR 시켜준다. 세 번째는 16진수 30과 XOR 연산을 한다.

그 다음에는 ESI를 0으로 바꿔주고, 다시 16진수 10과 XOR 연산을 한다.

이를 토대로 Python 코드를 짜준다.

 

실행시키면 'K3yg3nm3'이 나온다.

'Reversing > 리버싱 CTF' 카테고리의 다른 글

[Reversing.kr] Easy Crack  (0) 2020.09.21