상세 컨텐츠

본문 제목

[Write-up] Abex-crackme 2

Reversing Write-Up/01.Abex's crackme

by RACC8N 2020. 1. 14. 21:19

본문

프로그램을 실행 시키면 다음과 같은 창이 뜬다.

 

Check를 눌러보면, 

About을 눌러보면,

아무 Name과 Serial을 넣고 Check를 눌러보면,

 

Name을 입력하고 Serial을 맞추면 되는것 같다.

 

디버거를 실행시켜보자.

Main 함수를 찾아야한다. 

 

위에서 파일을 실행시켰을 때 생긴 메세지박스가 힌트가 될 수 있다.

 

문자열 검색을 해보자.

 

위에서 보았던 문자열과, Congratulations와 Yep, 과 같은 Serialkey가 맞았을 때 뜰 것 같이 생긴 문자열까지 확인 할 수 있다.

 

해당 위치로 가 보자.

 

403332부분의 조건문을 통과하면 Congratulation 메세지박스가 뜰 것 이다.

 

위로 올라가서 이 함수가 무엇인지 확인해 보자.

 

함수 프롤로그 부분을 찾았다.  이부분은 프로그램 실행 후 check를 눌렀을 때 이곳으로 오게 된다.

 

따라서 check entry라고 주석을 달았다.

Name에는 AAAA, Serial에는 XXXX를 입력하고 Check를 눌렀다.

 

Name 부분에 A를 4개 입력하였으므로 403026부분의 분기는 통과하였다.

 

이 부분이 중요한 포인트인데, 입력받은 Name문자열과 d(64)를 가지고 Serial을 만드는 알고리즘이다.

 

vbaVarAdd 함수로 Stepinto 해보자.

 

여기서 Name(AAAA)의 첫번째 문자 A(41)와 d(64)를 더해 ASCII값 A5가 된 것을 알 수 있다.

 

이 값을 rctHexVarFromVar 함수에서 문자열로 바꾼 후

 

 

다음과 같이 Name이 끝날때 까지 이어 붙이는 식이다.

 

따라서 최종적으로 Name이 AAAA일때의 Serial은 A5A5A5A5가 된다.

 

'Reversing Write-Up > 01.Abex's crackme' 카테고리의 다른 글

[Write-up] Abex-crackme 5  (0) 2020.01.15
[Write-up] Abex-crackme 4  (0) 2020.01.15
[Write-up] Abex-crackme 3  (0) 2020.01.15
[Write-up] Abex-crackme 1  (0) 2020.01.14

관련글 더보기

댓글 영역