Lenas reversing for newbies 라는 Tuts 4 You 홈페이지에서 Lena 라는 분이 올렸던 크랙미 파일들 중 첫번째에 해당하는 크랙미를 풀어보려고 한다. 실행시키자 마자 저런 메시지창을 띄우고 확인을 누르면 프로그램이 종료된다. 뭐지 싶었다. 올디로 열어보기로 했다. 아 그전에 어떤 언어로 이루어졌는지 ExeinfoPe로 한번만 살펴보겠다. 그냥 어셈블리어로만 작성되어 있는 것 같다. 올리디버거로 켜보았다. 첫 페이지부터 아까의 메시지창을 띄우는 함수호출 부분이 보일 정도로 가깝다. 아이콘을 로드하고, 커서를 로딩하는 함수를 사용하고, 그 다음에 CreateFileA 라는 함수를 사용하는데, 이 함수는 winAPI에서 제공하는 함수인 것 같다. 함수를 호출하기 위해 집어넣는 파라메터들이 많은데, < lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile > 이렇게 파라메터가 이루어져있다. 스택에 집어넣을 때 반대로 집어넣는 것을 유의하여 확인해보면 "Keyfile.dat", C0000000, 3, 0, 3, 0040216f에 있는 값, 0 를 스택에 넣는 모습이다. 일단 0040216f에 있는 값까지 알아보자. push 하는 곳까지 실행시킨 뒤 0040216f을 덤프창에서 찾아보니 80 00 00 00이 나온다. 리틀엔디언을 빅 엔디언으로 바꾸면, 00000080(0x80)이 나온다. 각 파라메터의 의미는 파일 이름, 파일에 대한 권한 GENERIC_READ , GENERIC_WRITE, 파일에 대한 연속적 권한(다른 프로세스의 읽기/쓰기/열기), 자식 프로세스에 관한 권한 boolean(정확히 모르겠다), 파일의 존재 여부와 그에 대한 생성/삭제 여...