오늘의 목적은 Keyfile를 만드는 거이기 때문에 해당 파일을 삭제해 준다.
Keyfile를 삭제를 하면 위 와 같은 메시지가 출력이 된다.
OllyDbg로 해당 파일을 열고 확인을 하면, CreatFileA는 Keyfile.dat가 존재해야지 열린다.
해당 파일에 Notepad를 열어 abcd 입력 후, 파일 이름을 Keyfile.dat으로 수정을 해준다.
해당 버퍼에 abcd가 들어갔는지 확인을 한다.
abcd가 잘 들어가 있다.
해당 데이터를 몇 바이트 읽었는지 확인을 한다.
실행을 시키다 보면 402173 주 속값의 데이터와 10 byte랑 비교를 하고 해당 값이 작으면 JL 부분에서 점프를 취한다.
즉, Keyfile.dat의 크기가 10byte 보다 크며 해당 부분은 무사히 통과할 수 있다.
Keyfile.dat의 데이터를 16byte를 입력을 한다.
16byte를 입력을 했는데 왜 10byte가 되었지?? -> Hex값으로 따지면 16byte는 10byte가 된다.
이제 이 부분을 넘어가기 위해서는 CMP AL, 47부터 우리가 입력했던 데이터를 하나씩 꺼내서 비교를 한다.
40211A 주소에는 우리가 입력했던를 하나씩 꺼내서 AL에 넣고 CMP에서 47과 비교를 한 다음 같으면 ESI를 증가시킨다.
그다음 ESI와 8을 비교해 해당 부분을 통과할 수 있다.
즉, 47은 ASCII 코드로 G이고 ESI가 8 이상이 되어야 하기 때문에 Keyfile.dat 는 GGGGGGGG 가 되면 통과가 된다.
* CMP AL, 0 은 마지막 바이트가 0이 되면 점프가 된다는 것이다 즉, 해당 문자의 끝났는지 확인하는 것이다.
결국 Keyfile.dat 조건은
1. 파일이 있어야 한다.
2. 16바이트 이상의 길이가 필요하다
3. 그중 8바이트 이상의 문자가 G 이어야 한다.
우리가 만든 Keyfile.dat를 저장하고 실행시키면 처음 실행시킨 메시지가 출력이 된다.
'모의해킹 > 리버싱' 카테고리의 다른 글
PE 분석 : 레나 챌린지 (Level 3) 2 (0) | 2023.09.08 |
---|---|
PE 분석 : 레나 챌린지 (Level 3) 1 (0) | 2023.09.08 |
라이센스 루틴 지나기 : 레나 챌린지(Level 1) (0) | 2023.09.08 |
rev-basic-1 (0) | 2023.08.14 |
rev-basic-0 (0) | 2023.08.14 |