-
Crackme 02
일단 프로그램을 실행시켜 보았다.
여기에서도 역시 문자열이 보인다. 전과 같이 문자열을 찾는다.
위와 같이 많은 문자열이 있었다.
error 로 들어가보겠습니다. 위에서 vbaVarMove 라는 보지못한 함수가 존재하였다.
디버깅 해본 결과 40319F 주소 ~ 4023A0 주소 까지가 시리얼값을 생성하고 있었다.스택을 뒤져본 결과 1234 는 16진수로 31323435(hex) 여기에 +64(hex)를 진행시키는 것을 확인할 수 있었다. 그럼 완성이 된다면 95969798 이 될것이다.
그럼 해결법은 name값의 ascii 코드 값(hex)을 구해 +64(hex) 을 시키는 것이다.
그리고 크래킹 을 하는법은 vbaVarTstEq 함수의 리턴값으로 조건분기를 진행하는데 이것을 je 가 아니라 jne 로 수정한다.
ZF가 0일경우에만 점프하는데 test ax, ax 이다 하지만 ax는 비어있다.
왜냐하면 name과 serial을 비교하는 함수이기 때문이다.
serial 과 name이 맞지 않아도 Yep가 될것이다.그리고 serial 을 생성못하게 할 수 있다. 아까 말했다시피 40319F 주소 ~ 4023A0 가 serial을 만든다.
이 코드를 조건분기가 아니라 분기하게 된다면 그냥 serial 값을 비워만 둔다면 “Yep, this key is right!” 라고 뜬다.이렇게 크래킹하는 것과 로직을 파악해 봤습니다.
'리버싱' 카테고리의 다른 글
crackme-reverse 입문 튜토리얼 01 (0) 2021.05.19 Crackme 08 풀이 (0) 2021.05.19 Crackme 04 풀이 (0) 2021.05.19 Crackme 05 풀이 (0) 2021.05.19 댓글