ABOUT ME

Today
Yesterday
Total
  • lena’s reversing for newbies 02
    리버싱 엔지니어링/lena's reversing 2022. 3. 13. 23:18

    1. 실행

    lena's reversing for newbies 01와 같은 파일. 다른 풀이.

     

    2. CreateFileA

    올리디버거를 통해 실행, 다음과 같은 코드를 지나침

    CreateFileA는 파일을 여는 함수

    Mode = OPEN_EXISTING : 파일이 존재하지 않으면 함수 호출 실패

     

    현재 “Keyfile.dat”파일이 존재하지 않아 실행되지 않고 지나침.

    따라서, “Keyfile.dat” 파일을 생성하여 reverseMe.exe와 같은 디렉토리에 저장.

    파일 저장 후 재실행 시 새로운 메시지 박스 출력

    3. 코드 살펴보기

     

    새로운 메시지 박스로 가는 코드를 하나씩 실행하며 살펴보면,

    CMP : 두 피연산자를 비교

    DWORD PTR DS : 포인터 개념

    CMP DWORD PTR DS : [402173], 10 : 파일을 0X10(16바이트) 와 비교하는 것

     

    JL SHORT 004010F7 코드에서 16바이트보다 파일 크기가 작으면 4010F7로 이동한다.

    따라서, 파일의 크기를 16바이트 이상으로 만든다.

     

    수정 후 다시 디버깅 하면,

    위 코드를 반복하게 된다,

    CMP ESI, 8 을 통해 반복문은 총 8번 도는 것을 알 수 있다.

     

    CMP AL, 0 : ‘\0’ 인지 확인. 문자열 끝인지 확인.

    CMP AL, 47 : 47=G, 문자 G와 동일한지 확인

     

    따라서, 파일을 조건에 맞게 수정 후

    다시 실행하면 성공 메시지박스가 출력된다.

    '리버싱 엔지니어링 > lena's reversing' 카테고리의 다른 글

    댓글

Designed by Tistory.