Formato do arquivo

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Formato do arquivo

Mensagem por TerraSoftware »

Caros colegas, existe alguma maneira de descobrir se determinado arquivo é realmente um executável?
Alguma função de manipulação de arquivos (mesmo que de baixo nivel) que posso, por exemplo, ler o arquivo e identificar se ele é realmente um arquivo executável?
Preciso testar isso, para evitar que alguem renomeie um outro arquivo para a extencao .exe e faça ele passar-se por um executavel.
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Formato do arquivo

Mensagem por asimoes »

►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Formato do arquivo

Mensagem por rochinha »

Amiguinho,

Se voce apenas quer dar uma olhada, abra o arquivo pelo bloco de notas e verá que "MZP" irá aparecer no inicio deste arquivo.

Talvez aquela velha função de baixo nivel para proteger e desproteger .DBF possa te servir de base para testar estes caracteres e trazer a resposta desejada.

Voce pode tentar usar a API do Windows para verificar isto, teste:

Código: Selecionar todos

DLL32 FUNCTION GetFileTyp( hFile AS LONG ) ;
   AS LONG PASCAL; 
   FROM "GetFileType" LIB "KERNEL32"
Voce passa o nome do executável com EXTensão e ele lhe retorna o tipo.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Formato do arquivo

Mensagem por alxsts »

Olá!

Qual seria a tua intenção?
Verificar se um dado arquivo é um executável ou assegurar que o programa que você distribuiu (teu seistema) é o que está sendo executado pelo cliente?
[]´s
Alexandre Santos (AlxSts)
TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Re: Formato do arquivo

Mensagem por TerraSoftware »

Caro colega alxsts, a minha necessidade agora é somente verificar se um determinado arquivo é mesmo um executável, independente de sua extenção.
Mas o que vc me perguntou me deixou curioso. Hoje antes de trocar versao nos meus clientes, o programa responsavel pela troca verifica a data do executavel e o seu tamanho, com estas informacoes eu decido se é necessario atualizar ou nao. Existe algo mais seguro do que isso?
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Formato do arquivo

Mensagem por alxsts »

Olá!

Para a tua necessidade de identificar um .Exe genérico talvez a dica do Rochinha, acima, funcione. Por curiosidade, abri cinco executáveis e em todos encontrei "MZ" nos bytes 1 e 2. Não encontrei "MZP".

Quanto à outra situação, você pode, através de outro programa (pode ser o instalador do sistema), fazer o seguinte:
- abrir o executável do teu sistema com FOpen()
- posicionar o ponteiro no final do arquivo com FSeek( nHandle, 0, FS_END )
- escrever alguma chave ou assinatura (que o teu sistema possa validar posteriormente, em tempo de execução) com FWrite e fechar o arquivo com FClose().

Quando o teu aplicativo for executado, ele deverá abrir a si próprio, recuperar os bytes gravados acima e validar essa assinatura (talvez contra uma chave encriptada gravada em algum arquivo de parâmetros ou .INI).

Esse processo não corrompe o arquivo executável.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Formato do arquivo

Mensagem por asimoes »

A solução anterior do alxsts é criar o próprio virus do sistema. :))
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder