• Crackme 05 풀이

    2021. 5. 19.

    by. TONY07

    Crackme 05

    위와 같이 어셈블리 코드들을 확인할 수 있다.

    그러면 일단 프로그램을 실행시켜보도록 하겠습니다.

    위와 같이 The serial you entered is not correct! 와 같이 입력한 일련 번호가 일치하지 않다고
    한다.  그리고 나서 프로그램이 종료된다.

     

     

     

    그러면 우리는 저 문자열이 스택에 저장되어 있을거라고 믿고 스택에 저장하는 push 명령어를 찾아보록 하겠습니다.

    그러면 아래와 같이 문자열들이 저장되어 있는 것을 확인할 수 있었습니다.

     

     

     

    이제 이 push 명령어(0040109E)로 들어가보겠습니다.


    위와 같이 push 명령를 확인 할 수있고 jne 조건 분기를 확인할 수 있었고 문자열 “The serial you entered is not correct!” 와 “Yep, you entered a correct serial” 가 담겨있다.
    표에서 보기와 같이 004010FF 에서 je 조건문을 확인 할 수 있었고  위에 cmp eax,0 이 같다면 조건분기를 하는 로직 이었다.

     

     

     

     

    그런데 잘보면 위에 사진을 보면 4023F3 에 “4562-ABEX” 이 담겨있고 4023FD 에 “L2C-5781” 이 들어가 있는것을 확인할 수 있었다.

     


    위에 코드에서 4010A8에서 lstrcatA 가 나온다. lstrcatA(str1,str2) str1뒤에 str2를 붙이는것이다.
    그러므로 4023F3 주소값을 40225C에 문자열에 결합된다.

    그리고

    dl(edx 8비트)를 2 로 설정하고, 40225C에 들어있는 문자열들을 1씩 증가시키는데 dl를 1씩 감소한다.
    jne 는 ZF가 0으로 설정되어 있으므로 조건분기는 한번 실행된다.
    40225C ~ 40225F 는 1 만큼 증가된다.


    그리고 4010D9 와  004010F7에서 lstrcmpiA 를 이용해 “L2C-5781” 와 “6784-ABEX”를  스택에 저장 후 402000에 “L2C-57816784-ABEX” 로 결합된 후 402324(입력값) 과 4010F7 에서 lstrcmp 즉 비교한다. 

     

     

     

    그럼 다시 실행시켜 이 L2C-57816784-ABEX 를 입력시켜보겠다.

     

    그럼 위와 같이 성공한 것을 볼 수 있다.

    '리버싱' 카테고리의 다른 글

    crackme-reverse 입문 튜토리얼 01  (0) 2021.05.19
    Crackme 08 풀이  (0) 2021.05.19
    Crackme 04 풀이  (0) 2021.05.19
    Crackme 02 풀이  (0) 2021.05.19

    댓글