2013-07-02 5 views
2

짧은 버전 : 파일을 열고 다른 파일 이름으로 대체하기 위해 Windows (XP 또는 7) 파일 시스템 호출을 가로채는 방법이 있습니까?파일 시스템 호출을 가로 채고 수정하십시오 - Windows

긴 버전 : 고객이 HDD 손상으로부터 복구하는 것을 돕기 위해 노력하고 있습니다. 문제의 컴퓨터는 단순히 웹캠과 함께 두 개의 플래시 파일을 재생하는 키오스크에 있습니다. MDM 아연의 컴파일 된 .exe에 의해 제어됩니다. 두 개의 플래시 파일과 .exe 사본이 있습니다.

문제는 하나의 플래시 파일 만 열리는 것입니다. 머리를 두 드렸을 때 나는 Systernals Process Monitor를 통해 어떤 일이 일어나는지를 지켜 보았습니다. .flv 파일은 모두 같은 폴더에 있습니다. Process Mon에서 .exe가 c : \ somedirectory \ anotherdirectory \ file1.flv로 작동하는 것을 매우 명확하게 볼 수 있습니다. 작동하지 않는 하나의 APPARENTLY는 오타가있어서 경로에 두 개의 백 슬래시가 나란히 위치합니다. c : \ somedirectory \ \ anotherdirectory \ file2.flv

이것이 유일한 버전이라고합니다. 사용할 수있는 .exe와 그것을 만든 회사가 사업을 중단 했으므로 내가 가진 것은 내가 얻는 전부입니다. 참으로 오자 인 경우 어떻게 작동했는지 상상할 수 없습니다. 거기에 다른 버전이 있다고 생각해야합니다. 물론 .exe 파일에 오자가있는 경우, 가능한 가장 최악의 문자는 디렉토리 또는 파일 이름에 유효하지 않은 다른 문자입니다. 문제의 파일을 새 파일로 간단하게 옮길 수는 없습니다. 통로. (실제로는 겉보기에 공백으로 된 이름 (ALT-255)으로 Windows에서 디렉토리를 만들 수 있지만 실제로는 작동하지 않습니다.

내 프로그래밍 기술은 엄청나게 강력하지는 않지만 오늘날 미니 캐터 또는 API 후킹 일 수 있다고 생각합니다. .exe 디 컴파일뿐만 아니라 16 진수 편집기에서 열고 터지는 시도했다 및 불행히도 문제의 경로를 쉽게 편집 할 수있는 문자열로 나타나지 않습니다. 그 중 하나가 유효한 옵션이라면, 나는 올바른 방향으로 (하드) 푸시를 정말 고맙게 생각합니다. 제가 시도해 볼만한 다른 것을 생각할 수 있다면, 저는 꽤 많은 아이디어가 있습니다.

감사합니다.

답변

1

이 작업을 수행하려면 EasyHook 라이브러리를 사용할 수 있어야합니다. http://www.codeproject.com/Articles/27637/EasyHook-The-reinvention-of-Windows-API-hooking의 EasyHook에 대한 기사에는 구체적으로 .NET 프레임 워크가 파일을 여는 데 사용하는 방법 인 CreateFile을 재정의하는 예제가 들어 있습니다.

+1

감사합니다. 표면적으로, 그것은 매우 유망 해 보입니다 ... 나는 이제 그것을 더 조심스럽게 읽려고합니다. –

+0

exe를 열고 해당 경로를 찾으십시오. 그런 다음 원하는 내용과 일치하도록 변경하여 저장하십시오. –

+0

방금 ​​fopen_s (...)로 테스트 코드를 실행했습니다. 및 CreateFile 경로에서 "\\\\"은 두 호출 중 하나를 손상시키지 않습니다. 다른 문제가있을 수 있습니다 ... –