• Crackme 02 풀이

    2021. 5. 19.

    by. TONY07

    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

    댓글