Alguma API do Windows para obter identificadores de arquivos além de createfile e openfile?

StackOverflow https://stackoverflow.com/questions/13806

  •  08-06-2019
  •  | 
  •  

Pergunta

Estou tentando espionar um arquivo de log no qual um aplicativo está gravando.

Conectei com sucesso o createfile à biblioteca de desvios do MSR, mas o createfile nunca parece ser chamado com o arquivo que estou interessado em bisbilhotar.Eu também tentei conectar o openfile com os mesmos resultados.

Eu não sou um programador experiente em Windows/c++ (ou mesmo um programador experiente), então meus dois pensamentos iniciais foram que o aplicativo chama createfile antes de eu conectar as APIs ou que existe alguma outra API para criar arquivos/obter identificadores para eles .

Editar:Obrigado pelas duas ótimas respostas.Eu votaria positivamente na resposta do codingthewheel, pois era informativo, mas não tenho representante suficiente :(

Foi útil?

Solução

Você pode usar o Sysinternal ArquivoMon.É um excelente monitor que pode dizer exatamente quais chamadas de sistema relacionadas a arquivos estão sendo feitas e quais são os parâmetros.

Acho que essa abordagem é muito mais fácil do que conectar chamadas de API e muito menos intrusiva.

Outras dicas

Aqui está um link que pode ser útil:

Monitoramento de arquivos estilo guerrilha com C# e C++

É possível criar um arquivo sem tocar na API CreateFile, mas posso perguntar qual método de injeção de DLL você está usando?Se você estiver usando algo como o Windows Hooks, sua DLL não será instalada até algum tempo após a inicialização do aplicativo de destino e você perderá as primeiras chamadas para CreateFile.Considerando que, se você estiver usando algo como DetourCreateProcessWithDll, seu gancho CreateFile pode ser instalado antes da execução de qualquer código de inicialização do aplicativo.

Na minha experiência, 99,9% dos arquivos criados/abertos resultam em uma chamada para CreateFile, incluindo arquivos abertos por meio de bibliotecas C e C++, bibliotecas de terceiros, etc.Talvez existam algumas funções DDK não documentadas que não roteiam através do CreateFile, mas para um arquivo de log típico, duvido.

Monitor de Processo da sysinternals também pode ajudar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top