2010-05-17 6 views
1

내 응용 프로그램에서 내 콘텐츠 (리소스) 파일에 대한 간단한 보호 레이어가 필요합니다. 예를 들어, 내 응용 프로그램에 사용되는 다양한 사운드 및 이미지 파일이 있습니다. 내 생각에 SFX 아카이브 (아마도 WinRAR로 패키징)에 포장 한 다음 응용 프로그램에서 -silent와 같은 매개 변수를 사용하여 SFX exe를 시작하십시오. 그러나 이것이 이것을하기위한 최선의 방법이 아닐 수도 있습니다. 그래서 제 제안을 해주시면 좋을 것 같습니다.콘텐츠 파일 보호

P. 나는 그것이 unbreachable (어쨌든 하나 인 것처럼) 소리가 나지 않는다는 것을 안다. 그러나 이것은 어떤 이유로 필요하다.

P. SFX (또는 다른 패키지) 추출을 완료 한 후 파일을 숨기는 방법에 대한 도움을받을 수 있습니다.

감사합니다.

답변

0

SFX 아카이브를 사용하지 마십시오.

리소스 사용 방법에 따라 많은 영향을받습니다. 파일 이름이 필요한 라이브러리 코드가 많은 경우 파일에 잠시 동안 하드 드라이브에 유지되는이 있습니다. 할 수 있으면 사운드 및 미디어 라이브러리가 포인터를 전달할 수 있는지 알아야합니다. 그러면 파일을 직접로드하고 해독 한 다음 해독 된 버퍼 포인터를 미디어 API에 전달합니다.

실제 암호화에 관해서. zlib과 같은 아카이브 파일 형식을 사용하십시오. 이렇게하면 모든 데이터 파일을 암호화 된 단일 아카이브에 저장하고 메모리로 확장 할 수 있습니다.

또는 파일 당 암호화를 사용하십시오. 가정에서 XOR 암호화를 사용하면 이 매우이되는 장점이 있습니다. 는 "키"로

  • 시작 :

    는 거의 모든 파일 암호화 내려 온다. 짧은 문자열.

  • 키를 사용하여 난수 생성기를 초기화합니다.
  • rng의 바이트를 암호화 할 데이터와 XOR하여 암호화합니다. 바이트 동일한 스트림을 생성합니다 RNG
  • ,
  • 이 암호를 해독하기 위해 암호화 된 데이터를 XOR 초기화, 같은 키
  • 시작 :
  • 나중에 데이터를 해독합니다.

결정적인 해커가 얻을 수 있도록 클라이언트에 키가 있어야한다는 문제가 있습니다 (명백하게). 그래서 여기에 너무 멋지다는 점은 없습니다. 256 바이트의 "임의"데이터를 생성하고 메모리에로드 할 때 파일을 암호화하고 해독하는 데 사용하거나 임시 폴더에 쓰기 만하면됩니다.

ttemp 파일을 작성해야 할 경우 FILE_FLAG_DELETE_ON_CLOSE을 사용하여 디스크에 암호화되지 않은 리소스를 보관하지 않고도 임시 폴더를 안전하게 확보 할 수 있습니다.

+0

문제는 추출 된 콘텐츠를 사용할 응용 프로그램을 수정할 수 없다는 것입니다. 따라서 C : \ Windows \ System32와 같은 일반적인 수준의 사용자가 사용하는 일반적인 폴더에 파일을 추출하는 등의 간단한 솔루션이 필요합니다. 아마도 SFX exe 앞에 n 바이트를 넣을 수 있습니다. 그럼 내 로더 응용 프로그램에서 바이트를 제거한 다음 실행할 수 있습니까? – frbry

0

리소스 파일을 압축 한 다음 보관 파일의 각 32 비트 블록을 선택한 키로 XOR합니다. 실행시에 들어오는 32 비트 블록을 키로 다시 XOR 한 후 메모리 내 압축 해제를 위해 zip 라이브러리로 전달하십시오.

매우 가독성이 뛰어나지 만 누구나 zip 파일을 열지 못하게해야합니다.