본문으로 바로가기

[Reversing.kr]Easy Crack

category Wargameetc 8년 전

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의 변화에 따라 입력한 문자열의 위치가 상대적으로 나타났다


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






Wargameetc카테고리의 다른글

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