IT Security

리버싱) 레나튜토리얼-2 (reverseMe Keyfile)

로픽 2022. 3. 15. 01:20
300x250

레나튜토리얼-2 (reverseMe Keyfile)

 

- Keyfile에 등록된 값에 대한 검증 로직을 리버싱으로 체크

- keyfile에 등록된 값은 총 16자 이상이며 그 중 문자 'G' 를 8글자 이상 포함해야 함.

 

* 실습환경 : Windows XP, Ollydbg


* Keyfile 유, 정상 라이선스

 

* Keyfile 유, 비정상 라이선스

 

 

* Keyfile 무


1. Keyfile.dat 유무 체크 (0040105C)

 

 - CreateFileA 함수를 이용해 파일 존재 유무 확인.

 - 파일이 존재하지 않을 경우 "Evaluation Period out of date. Purchase new license" 메시지 출력 후 프로그램 종료

 - 파이링 존재할 경우 "004010A" 로 이동

   * jnz [주소] : 비교된 값이 0이 아닌 경우 주소로 이동

 

2. Keyfile.dat 데이터 로드

 - ReadFile 함수를 이용해 Keyfile.dat 에 입력된 데이터 읽어오기

 

3. Keyfile 라이선스 검증

 - 004010B8 : Keyfile.dat 에서 읽어온 값이 16바이트인지 비교

 - 004010BF : 읽어온 값이 16바이트 미만인 경우 004010F7로 이동. (비정상 라이선스라고 출력)

 - 004010C1 : 읽어온 값을 1바이트씩 AL에 저장

 - 004010CB : 읽어온 값이 문자 'G' 인지 체크

 - 004010CF : 문자 'G' 인 경우 ESI 값 1 증가

 - 004010D3 : ESI 값이 8인지 경우 검증 로직을 빠져나옴

 

  ** keyfile에 포함된 라이선스는 16글자 이상이면서 문자 'G'가 8글자 이상 포함되어야 한다.

 

 

 

반응형