2011-10-28 3 views
1

내 C++ 응용 프로그램에 리소스로 exe 파일을 포함 시켰습니다. 실행해야하지만 사용자가 복사 할 수 없도록 액세스를 제한해야합니다. 외부 프로그램에서 액세스 할 수 없도록 핸들을 열어 둘 필요가 있습니다. FILE_FLAG_DELETE_ON_CLOSE를 플래그로 사용했기 때문에 응용 프로그램이 종료되면 삭제됩니다.핸들이 열려있는 파일 실행 (C++ winapi)

하지만 그 때문에 CreateProcess() 또는 WinExec() 함께 실행할 수 없습니다. 이상하게 들리 겠지만 좋은 이유가 있습니다. dll 인젝션 속임수에서 게임의 실행 파일을 보호해야하는 사람이 필요하며 그 exe 코드는 없습니다.

+0

사용자가 실행 파일을 복사하지 못하게하는 어리석은 방법은 없습니다 ... 단지 ' – JosephH

+0

입니다.하지만 그 파일을 복사하는 실제적인 어려움으로 충분합니다. –

+0

이 전략에는 너무 많은 구멍이 있습니다. 다시 고려해야합니다. 실행 중에 컴퓨터를 종료하고 다시 시작하면 파일이 삭제되지 않습니다. 초보 사용자라면 누구나 할 수 있습니다. 또한 리소스로 포함되어 있으면 추출 만 할 수 있습니다. 사람들이 .exe 파일을 복사해도 상관 없도록 응용 프로그램을 설계하는 것이 어떻습니까? – tenfour

답변

0

전체 파일을 잠글 수 없으므로 매우 작은 부분을 LockFile으로 잠그십시오. Windows에서 사용하지 않는 바이트 범위를 찾아야합니다. 더미 리소스를 EXE에 추가하여이 작업을 수행 할 수 있습니다. (이것은 소스 코드를 요구하지 않는다).

+0

나는 그것을 시험해 볼 것이다, 고마워. –