Security/Reversing

Reversing Study - day 4

bonggang 2019. 11. 28. 20:02

* 본 문서는 리버싱 핵심 원리책(일명 나뭇잎 책)과 인터넷 자료들을 바탕으로 학습한 기록입니다.

* 개인의 학습을 위한 자료이기 때문에 정확하지 않은 정보가 포함되어 있을 수 있습니다.

 

이번에 해 볼 것은 x32dbg로 abex' crackme #2 파일의 디스어셈 코드를 살펴보는 실습이다.

책에는 여러 설명이 있었지만 나는 생략하고 바로 우리가 살펴봐야할 코드를 찾아보겠다.

(자세한 내용은 리버싱 핵심 원리 책을 읽어보길 권유한다)

 

1. String 검색을 통해 코드 찾기

 

지금까지 Yep과 Wrong이 True/False에 의해 구분되어졌으니 이번에도 비슷할 것이라 추측하고 "Yep, this key is right!" 부분으로 이동했다. 예상대로 조금 위쪽에 [je abexcm2-voiees.403408]이라는 조건 분기문이 있다. 이 부분에 따라 점프하거나 바로 밑의 명령을 실행하는 것 같다. 그리고 아마 위의 [call dword ptr ds:[<&__vbaVarTstEq>]가 비교하는 부분일 것 같다. 

-> breakpoint를 걸고 실행시켜보자!

 

 

스택을 이곳저곳 살펴보다 시리얼을 찾았다!

 

 

하지만 나뭇잎 방법대로 차근차근 따라가보자!

먼저 나는 책이랑 다르게 [call dword ptr ds:[<&__vbaVarTstEq>] 이 부분이 문자열 비교 함수라는 것을 확인했다. 책과 동일하게 스택 창을 확인하고 메모리 dump에서 따라가보자.

 

 

시리얼 값 발견!

- 참고로 이 시리얼 값은 내가 입력한 이름에 대한 시리얼 값이다.