2번 exe 파일은 1번 문제와 동일하다.
하지만 1번과 달리 exe 를 실행하면 바로 성공 메시지가 뜬다.
2번 문제는 Keyfile.dat를 만드는 것이므로 Keyfile.dat를 삭제한다.
삭제후 다시 실행하면 라이센스 구매 하라고 한다...
Keyfile.dat 파일이 있고 없고가 영향을 끼치는거 같다 ㅋ
1번문제에서 확인된 CreateFileA, ReadFile 함수 설명은 없이 진행하겠다.
Keyfile.dat가 있어야지 CreateFilA 함수가 성공되어 JNZ에서 점프가 돼 라이센스 구매 메시지 함수를 건너뛸거같다.
파일을 생성하고 내용은 의미없는 abcdabcd를 입력했다.
keyfile.dat 파일이 존재해 CreateFileA 함수가 성공되는 걸 확인할 수 있다. (EAX 값 44)
따라서 성공적으로 keyfile.dat 파일을 불러옴
JNZ 분기문을 따라 점프를 한다.
라이센스 구매 메시지 함수를 건너띄었다. ㅋ
이어서 ReadFile 함수가 실행된다.
CreateFileA 함수에서 Keyfile.dat 파일을 불러오고 ReadFile 함수가 Keyfile.dat 파일 내용을 가져오는 거같다.
CreateFileA 함수가 성공하여 파일을 불러왔기 때문에 ReadFile 함수도 성공했다.(EAX 값 1)
ReadFile 함수 인자 pBytesRead 주소로 이동해보니 0x08이 보인다. 아마 keyfile.dat 에 입력한 글자 개수인거 같다.
ReadFile 함수 인자 Buffer 주소로 이동해보니 ketfile.dat 에 입력한 문자열이 보인다.
따라서 파일내용을 잘 가져온게 확인 된다. ㅋ
실행 시키다보면 XOR 이 보이는데 XOR은 보통 return 0 일 때 사용하거나 레지스터를 사용하기 전에 내용을 비우기 위해 사용한다. EBX, ESI 레지스터를 XOR 하는 걸 보니 두 레지스터를 앞으로 사용할 거 같다.
[402170] 과 0x10을 비교한다. [402170] 에는 Keyfile.dat 문자 개수(0x08)이 들어가 있다.
8<10 이기 때문에 JL에서 점프를 하는데 주소를 따라가 보면
Keyfile is not 어쩌구 텍스트가 보인다.
아마 Keyfile 내용과 다르면 함수가 실행되는 거같다.
이를 통해 알 수 있는 건 keyfile 문자 개수는 0x10글자 이상이여야 한다는 것이다.
위 처럼 내용을 바꾸고 올리디버거를 ReadFile 까지 실행한다.
402173(문자 개수 위치)에 0x10 이 들어가 있는걸 보면 파일이 잘 가져온 거 같다.
JL(0x10 < 0x10) 에서 점프가 안된다.
[EBX + 40211A] 값을 AL 에 넣는다. EBX 는 0 이므로 메모리에서 40211A 로 이동해 본다.
[40211A] 에는 파일의 내용이 들어가 있다.
파일 내용 중 첫 번째 글자를 AL 에 넣는다.
코드를 실행시키다 보면 빨간색 칸 부분이 파일 내용를 라이센스와 비교하는 것을 알 수 있다.
CMP AL,0 에서 아스키코드 0x00 은 NULL이다.
C에서 문자열 끝은 항상 NULL이 존재하기 때문에 CMP AL,0 이 부분은 문자열 끝임을 확인하는 코드이다.
CMP AL,47 에서 아스키코드 0x47 은 G이다.
AL(문자)이 G와 같다면 JNZ에서 점프를 안해 INC ESI가 실행된다.
아래 CMP ESI,8 이 존재하는데 ESI가 8보다 작으면 라이센스 값이 다르다는 함수로 점프를한다.
만약 8 이상이면 401205로 점프하는데 이 곳이 성공 함수 위치이다.
즉, 파일 내용에 G가 8개 이상 존재해야한다.
종합하면 Keyfile.dat 내용은 16글자 이상, G 문자 8개 이상 이면 성공 함수가 실행된다.
파일 내용을 GGGGGGGGAAAAAAAA 수정하고 실행하면 성공 함수로 도착한다.
EXE 실행하면 성공 메시지가 뜬다 ㅋ(성공)
'레나 튜토리얼' 카테고리의 다른 글
[레나 튜토리얼] - 4 (0) | 2022.08.09 |
---|---|
[레나 튜토리얼] - 3 (0) | 2022.07.31 |
[레나 튜토리얼] - 1 (0) | 2022.07.30 |
Ollydbg 패치 (0) | 2022.07.30 |
Ollydbg 설명 (0) | 2022.07.30 |