인공지능 개발일지

[리버싱] abex' crackme 2번 Writeup 본문

보안/리버싱

[리버싱] abex' crackme 2번 Writeup

Prcnsi 2021. 10. 12. 17:46
728x90

2번을 실행하면 아래와 같이 뜬다.

 

그리고 아무거나 입력해봤다.

 그러자 아래와 같이 Wrong Serial이라고 뜬다.

정해진 Seriala 값이 있나 보다 생각하고 ollybdg에 들어가서 열어준다.

 

 

 

그러면 아까 봤던 창을 띄우는 코드가 눈에 띈다.

 

 

 

그리고 아래 코드를 실행시켜 보면 1,2,3번 차례로 실행되는 게 아니라 1번에서 3번으로 2번을 건너 띈다. 자세히 보면 1번에서 TEST AX AX로 위에서 push한 것을 받는 걸 보니 CALL ~라인이 함수를 호출하는 건가 하고 추측할 수 있다. 그래서EDX와 EAX(NameSerial) 스택으로 가고 파란색 박스에서 보이듯이 JE 명령어로 이 두 개를 비교해서 3번으로 점프하고 있다.

 

 

 

그러면 crackme 1번처럼 JE JMP로 바꿔줘도 풀리고 스택에 적혀 있는 정해진 Serial값을 입력해도 풀린다. 1번째 박스에 함수를 호출하는 부분에서 중단점을 잡고 실행시켜 주면 프로그램이 다시 실행된다. 여기 다시 처음과 같은 Jiseon5252를 입력해준다.

 

 

 

그리고 스택을 보면 대충 아래와 같은 라인이 보인다.(캡처 날아감)

Unicode Jiseon
Unicode 5252
Unicode AECDD~

\

하고 5252 주변에 비슷한 위치에 AECDD~하는 문자열이 보인다. 이를 힌트로 생각하고 동일한 NameSerial로 입력해보면 풀리는 것을 확인할 수 있다.

 

 

728x90