정리 내용은 리버스 엔지니어링 바이블 책의 내용 입니다.
1. 같은 폴더에 어떤 파일이 담겨 있어야 제대로 실행된다.
- "CreateFile() 같은 API가 사용될 것이다." 라고 책은 쓰여져 있다.
- 그렇다면 왜?
: 해당 폴더에 특정 파일을 생성할 수 있을 것이고,
해당 폴더에 특정 파일을 읽어들일 수 있을 것이다.
이에 대한 리턴 결과 값으로 같은 폴더에 "어떤 파일"이 담겨져 있는지 확인할 수가 있을 것이다.
2. 현재 프로세스 리스트 가운데 특정 문자열이 담긴 프로세스가 띄어져 있어야 한다.
- "OpenProcess()나 Process32Next() 등이 보일 것이다." 라고 책에는 쓰여져 있다.
- 그렇다면 왜?
: OpenProcess()를 통해서 특정 문자열이 담긴 프로세스의 PID를 얻어올 수 있을 것이다. 만약에 특정 문자열이 담긴
프로세스가 존재하지 않느다고 한다면, 그 Return 값은 PID가 아닌 실패 값을 담고 있을 것이다.
Process32Next()를 통해서 특정 문자열이 담긴 프로세스와 현재 실행되고 있는 프로세스들의 이름을 비교한다.
3. 현재 윈도우 리스트 가운데 특정 캡션명을 지닌 윈도우가 떠 있어야 한다.
- "FindWindow() 사용한다." 라고 책에는 쓰여져 있다.
4. Level 2 문제가 실행될 때 특정 파라미터를 지정해야 한다.
- "GetCommandLine() 등을 반드시 이 바이너리에서 사용해야만 한다." 라고 쓰여져 있다.
- 왜?
: GetCommandLine() API는 현재 프로세스의 명령행 인수를 조사해서 리턴하는 함수 이다.
따라서 실행 시에 어떤 특정 파라미터를 사용해야 하는지 확인할 수 있을 것이다.