실행시켜보면 Name과 Serial을 입력받는 부분이 나오고, 맞지 않는 값을 입력하면 "Wrong serial!"이라는 값을 뱉는다.
우선 Name과 Serial의 값을 비교해서 하는걸 보니 값을 비교하는 함수를 찾아야하지만 우선 저 문자열("Nope, this serial is wrong!")을 이용해서 값을 비교하는 함수를 찾아보자.
찾음
아마 분기문을 통해 찾았는지 못찾았는지 넘어가는거 같다.
위로 쭉 올ㄹ리면 &__vbaVarTstEq라는 함수가 있고, 이 함수의 리턴값을 통해 분기가 정해지는거 같다.
즉 edx, eax를 비교하고 그 값을 리턴하여 분기가 정해짐.
그래서 edx와 eax의 값을 보면 입력한 값과 비교하는값을 볼 수 있다.
EAX와 EDX의 값
즉 Name에 AAAA를 입력하고 Serial에 BBBB를 입력하면 BBBB와 생성된 Serial값(A5A5A5A5)를 비교하는거 같다.
따라서 Name에 AAAA, Serial에 A5A5A5A5를 입력하면 풀릴거 같다.
성공
Abex crackme # 2
실행시켜보면 Name과 Serial을 입력받는 부분이 나오고, 맞지 않는 값을 입력하면 "Wrong serial!"이라는 값을 뱉는다.
우선 Name과 Serial의 값을 비교해서 하는걸 보니 값을 비교하는 함수를 찾아야하지만 우선 저 문자열("Nope, this serial is wrong!")을 이용해서 값을 비교하는 함수를 찾아보자.
아마 분기문을 통해 찾았는지 못찾았는지 넘어가는거 같다.
위로 쭉 올ㄹ리면 &__vbaVarTstEq라는 함수가 있고, 이 함수의 리턴값을 통해 분기가 정해지는거 같다.
즉 edx, eax를 비교하고 그 값을 리턴하여 분기가 정해짐.
그래서 edx와 eax의 값을 보면 입력한 값과 비교하는값을 볼 수 있다.
즉 Name에 AAAA를 입력하고 Serial에 BBBB를 입력하면 BBBB와 생성된 Serial값(A5A5A5A5)를 비교하는거 같다.
따라서 Name에 AAAA, Serial에 A5A5A5A5를 입력하면 풀릴거 같다.
'리버싱공부' 카테고리의 다른 글