Formato do arquivo

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

Moderador: Moderadores

Formato do arquivo

Mensagempor TerraSoftware » 11 Mar 2010 10:47

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.terrasoftware.com.br
xHarbour 1.2.0 - Bcc 5.5.1 - Gtwvw/Hwgui
Avatar de usuário

TerraSoftware
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 324
Data de registro: 28 Jul 2004 13:14
Cidade/Estado: Cianorte-PR

Re: Formato do arquivo

Mensagempor asimoes » 11 Mar 2010 11:57

Imagem
"Só existem 10 tipos de pessoas. As que entendem e as que não entendem código binário."
01100001.01110011.01101001.01101101.01101111.01100101.01110011
Clipper 5.2e | [x]Harbour | Minigui | HwGui
Avatar de usuário

asimoes
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 612
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ

Re: Formato do arquivo

Mensagempor rochinha » 11 Mar 2010 12:23

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:

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? Envie seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

"...Acharam que eu estava derrotado, quem achou estava errado, eu voltei, tô aqui, tô firmão, tô na correria, sô guerreiro, sô vaso ruim de quebrar, tô de volta pro mundão..."
Avatar de usuário

rochinha
Moderador

Moderador
 
Mensagens: 2074
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil

Re: Formato do arquivo

Mensagempor alxsts » 12 Mar 2010 14:35

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)
alxsts
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 514
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil

Re: Formato do arquivo

Mensagempor TerraSoftware » 15 Mar 2010 12:14

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.terrasoftware.com.br
xHarbour 1.2.0 - Bcc 5.5.1 - Gtwvw/Hwgui
Avatar de usuário

TerraSoftware
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 324
Data de registro: 28 Jul 2004 13:14
Cidade/Estado: Cianorte-PR

Re: Formato do arquivo

Mensagempor alxsts » 15 Mar 2010 14:09

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)
alxsts
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 514
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil

Re: Formato do arquivo

Mensagempor asimoes » 16 Mar 2010 07:24

A solução anterior do alxsts é criar o próprio virus do sistema. :))
Imagem
"Só existem 10 tipos de pessoas. As que entendem e as que não entendem código binário."
01100001.01110011.01101001.01101101.01101111.01100101.01110011
Clipper 5.2e | [x]Harbour | Minigui | HwGui
Avatar de usuário

asimoes
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 612
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ


Retornar para [x]Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante