본문으로 바로가기

[Reversing.kr]Easy Crack

category Wargame/etc 2017. 9. 23. 08:02

Reversing.kr의 첫번째 문제다




실행시 위와같은 화면이 나오고 아무값이나 입력한 후 확인을 누르면 틀렸다고 뜬다


x64dbg 디버거를 통해 풀어보자





문자열을 찾아 주요 코드부분을 찾아냈다.


시작부분에 브레이크포인트를 걸어 재실행시 찾기 쉽게 해놓자




코드를 잘 보면 cmp로 메모리를 특정 문자와 비교하는것을 볼 수 있다


이것이 비밀번호와 비교하는 부분이라고 추측할 수 있다


하지만 자세히 보면 문자열참조 기준이 esp이다


esp는 스택의 최상단을 가리키기 때문에 코드가 실행되는동안 계속 변화한다


esp의 변화과정을 알아내는것이 이 문제의 핵심인듯 하다





스택에 데이터 입출력을 담당하는 명령인 push와 pop을 찾고


esp를 직접적으로 수정하는 부분이 있나 확인해보자


esp+5의 값과 61(a)를 비교한 후에 push를 하면서 기존의 esp에서 4만큼 마이너스가 되어있는 상태다


여기서 esp+A를 ecx에 담아 호출하는 함수의 인자로 삼는다




이번에는 저 함수의 역할을 알아보자


"5y" 문자열과 esp+A를 인자로 받는다



받은 인자 두개를 비교한다




다시 메인으로 돌아와서 보면 반복문이 존재함을 알 수 있다


2.


이번에는 esp+10을 참조하고 있다


위에서 401150 함수가 끝나고 add를 통해 정리해 주었으므로 원위치가 되고


push를 두번 해주었기 때문에 esp는 -8만큼 변경된다





위에서 분석한 내용을 정리해보면 아래와 같다.



ESP의 변화에 따라 입력한 문자열의 위치가 상대적으로 나타났다


이를 고려해서 풀어보면 위와같은 답이 나온다.






'Wargame > etc' 카테고리의 다른 글

abex Crackme 4번  (0) 2017.09.24
abex Crackme 3번  (0) 2017.09.23
abex Crackme 1번  (0) 2017.08.24
[xcz.kr]Web Basic  (0) 2017.08.03
[pwnable.kr]fd  (0) 2017.07.14