[2024.08.23]
지난 시간에 이어 crackme2를 복습하고 있다
현재 UMICODE "D8C9D7D8" 부분에서 처음의 D8과 끝부분의 D8의 규칙성을 알아야 된다
현재의 화면에서도 알 수 있듯이 처음 부분과 끝부분의 규칙성 부분을 공부하면 좋다
이번에는 crackme3의 실습을 진행한다
먼저 파일을 열고 실행을 하게 되면 해당 화면과 같이 keyfile이 없다고 나타난다
여기에서 확인을 눌러야 다음 실행 명령어로 넘어갈 수 있기 때문에 확인을 눌러 준다
현재 해당하는 파일이 없기 때문에 당연하게 파일이 없다는 화면이 나타났다
함수를 확인했을 때 두 함수를 찾아볼 수 있었는데,
이렇게 모르는 함수가 있다면 찾아서 확인해 보는 것이 가장 정확하다
현재로서 CreateFileA 함수는 파일을 만들고, GetFileSize 함수는 파일 크기를 비교하는 뜻을 알게 되었다
함수 뜻을 찾아보고 이해했기 때문에 탐색기에서 abex.l2c라는 텍스트 파일을 하나 만들어 준다
하지만 여기에서 확장명을 잘 확인해야 된다
현재 확장명이 txt기 때문에 뒤의 txt를 지우고,
연결 프로그램을 이용하여 메모장을 지정한다
그런 다음 abex.l2c의 파일에 18바이트를 만들기 위해 문자수를 맞춰 18바이트를 만들어 준다
그런 다음 다시 실행 후 확인을 눌러 주고
401041 라인의 GetFileSize 함수 명령어를 통해
파일 사이즈를 비교하게 된다
그렇기 때문에 바로 아래에 CMP 명령어가 오게 된다
비교하였을 때 일치했기 때문에 현재의 화면에서 성공 메시지가 나타나게 되었다
[미션]
> 파일명: file.txt
> 파일 크기: 5byte
> 크랙 파일명: crackme3_crack.exe
미션의 경우에는 5바이트로 정해 주셨기 때문에 5바이트에 맞게 조정 후 저장한다
현재 파일의 이름이 abex.l2c로 되어 있기 때문에 화면의 Expression을 통해
해당 라인의 헥사값을 확인할 수 있다
abex.l2c의 파일이라고 입력되어 있는 곳의 위치를 입력 후 이동
그렇게 되면 abex.l2c만 나오는 화면이 나타난다
여기에서 66의 첫 번째 부분을 선택하고 file.txt를 입력해 주면 변경된다
file.txt로 입력해도 되고 하나씩 알파벳을 입력해도 상관없다
현재 crack을 진행해야 되기 때문에 Copy to executable을 이용하여
저장을 진행해야 된다
따로 선택할 것 없이 내가 선택한 코드만 저장되기 때문에 다른 건 상관없다
미션의 내용에 맞게 crackme3_crack.exe로 파일명을 지정 후 저장한다
바이트 수를 나타내는 코드에서도 바이트 수를 5로 변경시키고
해당 부분도 저장하고 crackme3_crack.exe 파일을 선택하고
이전에 저장했던 내용과 합친다
그런 다음 crackme3_creack.exe 파일을 새로 열게 되면 변경된 내용의 코드들만 나타난다
확인을 위해 실행하여 확인 버튼을 눌러 준 다음
계속 진행시키면 파일의 바이트 수와 파일명이 일치할 시 성공 메시지가 나타난다
미션을 끝내고 곧바로 crack4의 코드를 진행한다
시리얼을 넣는 칸에서 2236520을 넣고 실행을 진행시킨다
vbaStrCmp 함수의 경우는 문자열을 비교하는 함수로 보면 된다
비교 시 시리얼 키와 들어맞기 때문에 현재 성공 메시지가 화면에 나타났다
강의 소감
이번 강의에서는 crackme3에서 놓쳐서 따라 가지 못했다
놓쳐서 하지 못한 부분을 따라 가기 위하여 녹화본을 재시청 후
따라 하기를 반복하며 이해하게 되었다
안 되는 부분은 그 당시에 해결하는 것도 좋지만
이렇게 복습을 통해 혼자서 이해하고 시도해 보는 것도 좋은 방법 같다