정리 내용은 리버스 엔지니어링 바이블 책의 내용 입니다.

 

1. 같은 폴더에 어떤 파일이 담겨 있어야 제대로 실행된다.

  - "CreateFile() 같은 API가 사용될 것이다." 라고 책은 쓰여져 있다.

  - 그렇다면 왜?

    : 해당 폴더에 특정 파일을 생성할 수 있을 것이고,

      해당 폴더에 특정 파일을 읽어들일 수 있을 것이다.

      이에 대한 리턴 결과 값으로 같은 폴더에 "어떤 파일"이 담겨져 있는지 확인할 수가 있을 것이다.

 

2. 현재 프로세스 리스트 가운데 특정 문자열이 담긴 프로세스가 띄어져 있어야 한다.

  - "OpenProcess()나 Process32Next() 등이 보일 것이다." 라고 책에는 쓰여져 있다.

  - 그렇다면 왜?

   : OpenProcess()를 통해서 특정 문자열이 담긴 프로세스의 PID를 얻어올 수 있을 것이다. 만약에 특정 문자열이 담긴

     프로세스가 존재하지 않느다고 한다면, 그 Return 값은 PID가 아닌 실패 값을 담고 있을 것이다.

     Process32Next()를 통해서 특정 문자열이 담긴 프로세스와 현재 실행되고 있는 프로세스들의 이름을 비교한다.

 

3. 현재 윈도우 리스트 가운데 특정 캡션명을 지닌 윈도우가 떠 있어야 한다.

  - "FindWindow() 사용한다." 라고 책에는 쓰여져 있다.

 

4. Level 2 문제가 실행될 때 특정 파라미터를 지정해야 한다.

  - "GetCommandLine() 등을 반드시 이 바이너리에서 사용해야만 한다." 라고 쓰여져 있다.

  - 왜?

    : GetCommandLine() API는 현재 프로세스의 명령행 인수를 조사해서 리턴하는 함수 이다.

      따라서 실행 시에 어떤 특정 파라미터를 사용해야 하는지 확인할 수 있을 것이다.

 

 

+ Recent posts