세상에나 push ebp로도 함수 시작을 눈치챌 수 있다니
abex crackme 2
이번 문제는 입력 창에 이름과 비번을 입력하고 check 버튼을 눌렀을 때 correct가 뜨게 하는 것이다.

이름을 12345, 시리얼은 678910을 넣어봤을 때 wrong이 뜬다. 알맞은 시리얼을 찾고 아예 파일을 패치해 언제나 correct를 내뱉게 만들겠다.
먼저 ctrl F로 push ebp를 검색해 함수의 시작을 찾는다 (나중에 반환할 때 원래 ebp 값을 복원하기 위해 함수가 시작할 때 push ebp를 한다.)
총 3개가 찾아진다.
각각 breakpoint를 걸어 실행시켜보면
00402C50: quit
00402CC0: about
00402ED0: check
이다.
check 함수 부분을 살펴본다.
correct 문자열이 쓰인 곳을 찾아봤더니 조건문이 있었다.
아마 vbaVarTstEq함수에서 내가 입력한 시리얼과 올바른 시리얼을 비교 후 만약 아니라면 0을 리턴하는 듯 하다.
따라서 내가 아무 시리얼이나 넣었을 때 jz가 되면서 wrong이 떴던 것이다. 따라서 jz를 jnz로 바꾸거나, ax값을 0이 아닌 값으로 바꿔서 풀면 된다.
기타
메모리를 보면 내가 입력한 시리얼 위에 이상한 숫자가 써있다. 이게 올바른 시리얼이다.
728x90
반응형
'리버싱 입문' 카테고리의 다른 글
[리버싱 입문](6)[함수 호출 규약] (0) | 2025.02.10 |
---|---|
[리버싱 입문](5)[abex crackme 3] (0) | 2025.02.07 |
[리버싱 입문](3)[abex crackme 1] (0) | 2025.02.05 |
[리버싱 입문](2)[PE파일] (0) | 2025.02.04 |
[리버싱 입문](1)[PE파일, 레지스터와 메모리] (0) | 2025.02.03 |