오..! 그동안 손 못대던 리버싱 문제를 하나씩 손대고 있다! (기분이 좋다)

이번에는 Wargame.kr 의 리버싱 문제를 풀었다.
여기도 웹문제만 많이 풀었던 사이트였는데! ㅎㅎ

EASY_CrackMe 문제다!



(문제)



문제 프로그램을 받으면 키를 입력하라고 나온다.




(프로그램 실행)



역시! 여기에 알맞은 키를 찾는 것이다.

이 문제는 좀 오래걸렸다... 그것도 마지막에 운이 좋아서?...

일단 코드를 큰그림으로 보면 처음에 BL에 1을 넣어준다.



(BL에 1 대입)



자.. 이제부터 이 EBX 레지스터의 1을 지키는 험난한 과정이 시작된다.

처음에는 너무 이해가 안가서 코드 한줄한줄 분석하면서 흐름을 손으로 직접 그려보았다.



(흐름도)



이렇게 흐름도를 손으로 그려보니 내가 어떤 일을 해야하는 지 이해가 간다.
EBX 레지스터를 보호하는 여정이라는 사실도 그려보고 이해했다.

그런데 중간에 이해가 안가는 함수가 있었다... 

005024A9 함수인데... 바로 이녀석을 따라들어가면 또 거기서 함수를 호출하고
또 그안에서 함수를 호출한다.
분석이 너무 안되던 참에..

그 동안 알아낸 사실들을 정리해보았다.

입력값이 13글자 이상이여야한다. 
_my_b , birth 요 문자들이 들어가야한다.

그러고 보니 _my_birth  앞에 4글자 생일을 넣으면 14자리인거다...
혹시나 해서 생일을 어떤 연산을 하나 내 생을 집어넣고 돌려보았다. 




(내 생일)



005024A9 함수가 호출된 후 리턴된 EAX값을 보니 3FA....
내가 내 생일 16진수로 표현한 3FA를 아이디로 많이 사용해서 단번에 알아보았다...
16진수 표현이구나!



(16진수 표현)



그렇다면 리턴값 eax가 45A 여야한다는 뜻은
45A -> 1114(10) 으로 집어넣어야한다는 뜻...



(45A 비교)



즉 이 문제를 만든 사람 생일이 11월 14일인가보다..

이렇게 문자열을 조합하고 프로그램에 입력해보니!




(잘했다!)



잘했다고 인증키를 알려주었다.




(문제 해결!)


'WarGame > 500 Project' 카테고리의 다른 글

(42/500) - Lena's Tutorial 01  (0) 2017.07.05
(41/500) Wargame.kr - Crypto Crackme Basic  (0) 2017.06.28
(39/500) Suninatas - Binary(11)  (0) 2017.06.27
(38/500) Suninatas - Binary(10)  (0) 2017.06.27
(37/500) Suninatas - Binary(9)  (0) 2017.06.27

+ Recent posts