Ir para conteúdo


Revista PROGRAMAR – Edição 46 (Setembro 2014): Download já disponível!

- - - - -

Programação num hex editor


  • Por favor inicie sessão para responder
14 respostas a este tópico

#1 dicas3d

dicas3d

    CRLF

  • Membro
  • PipPipPipPipPip
  • 590 mensagens

Publicado 19 de Setembro de 2012 - 10:43

Olá.
Como faço para programar num hex editor como Frhed?
Onde posso encontrar um manual sobre a sintaxe?

#2 HappyHippyHippo

HappyHippyHippo

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 10869 mensagens

Publicado 19 de Setembro de 2012 - 11:06

o está escrito no ficheiro depende sempre da funcionalidade que este tem

#3 dicas3d

dicas3d

    CRLF

  • Membro
  • PipPipPipPipPip
  • 590 mensagens

Publicado 24 de Setembro de 2012 - 09:26

Então mas por onde devo começar a aprender este tipo de programação?

#4 HappyHippyHippo

HappyHippyHippo

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 10869 mensagens

Publicado 24 de Setembro de 2012 - 09:31

ninguém programa dessa maneira .... seria como programar só com as teclas {0, 1, 3, 4, 5, 6, 7, 8, 9, 0, a, b, c, d, e, f}
não faz sentido.

esses editores existem para visualizar(editar dados binários, não para codificação

#5 dicas3d

dicas3d

    CRLF

  • Membro
  • PipPipPipPipPip
  • 590 mensagens

Publicado 24 de Setembro de 2012 - 09:37

Mas sendo assim então como começar aprender a alterar esse tipo de dados?

Editado por dicas3d, 24 de Setembro de 2012 - 09:37.


#6 HappyHippyHippo

HappyHippyHippo

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 10869 mensagens

Publicado 24 de Setembro de 2012 - 09:39

depende do tipo de ficheiro que queres alterar !!

 HappyHippyHippo, em 19 de Setembro de 2012 - 11:06, disse:

o está escrito no ficheiro depende sempre da funcionalidade que este tem


#7 dicas3d

dicas3d

    CRLF

  • Membro
  • PipPipPipPipPip
  • 590 mensagens

Publicado 24 de Setembro de 2012 - 09:42

Vejamos então o caso dos ficheiros executáveis do windows(.exe)?
Como aprender a alterar esse tipo de dados neste tipo de ficheiros?

Editado por dicas3d, 24 de Setembro de 2012 - 09:48.


#8 HappyHippyHippo

HappyHippyHippo

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 10869 mensagens

Publicado 24 de Setembro de 2012 - 09:44

o que queres alterar nos ficheiros ?

#9 dicas3d

dicas3d

    CRLF

  • Membro
  • PipPipPipPipPip
  • 590 mensagens

Publicado 24 de Setembro de 2012 - 09:51

Aprender a alterar um pouco de tudo porque estou a tentar aprender por curiosidade. Para ser especifico quero começar pelo mais fácil para 1 iniciante.

#10 HappyHippyHippo

HappyHippyHippo

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 10869 mensagens

Publicado 24 de Setembro de 2012 - 10:29

se é para aprender aconselho a te virares para outras bandas, fazer este tipo de alteração é muito desaconselhado e normalmente desnecessário.

#11 Triton

Triton

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 8490 mensagens

Publicado 24 de Setembro de 2012 - 12:43

 HappyHippyHippo, em 24 de Setembro de 2012 - 10:29, disse:

se é para aprender aconselho a te virares para outras bandas, fazer este tipo de alteração é muito desaconselhado e normalmente desnecessário.

E que tal responder à pergunta? Ainda não ajudaste em nada o dicas3d. É desaconselhado porquê e por quem?

Bem, primeiro vais ter de aprender o formato dos executáveis e objectos em Windows, que se chama PE-COFF. Este formato tem básicamente um monte de tabelas e é dividido em diferentes sections. A maior parte do ficheiro vai conter código x86/x64/ARM/.NET, e uma tabela de "relocations" no caso de object files (COFF). Estas relocations são usadas pelo linker (link.exe no Windows) para juntar várias bibliotecas.

Dependendo da tool que gerou o ficheiro, pode ter ainda secções para constructores estáticos de C++, ou tabelas usadas pelo Windows para fazer 64-bit exception handling, ou recursos como tabelas de texto (para internacionalização), icons, bitmaps, etc.

Em Linux o formato utilizado é o ELF, e a sua estrutura é semelhante nos conceitos.

Spec oficial:
http://msdn.microsoft.com/en-us/library/windows/hardware/gg463119.aspx

Resumo:
http://www.delorie.com/djgpp/doc/coff/

Quanto ao código em si, o melhor é veres nos manuais de Intel para x86.

Agora, ninguém programa este tipo de ficheiros à mão. Podes usar o hex editor para confirmar a estrutura dos ficheiros, ou usa a tool objdump que vem com as tools do GCC/LLVM que faz o mesmo mas faz um print todo bonito para a consola.

Se quiseres gerar estes ficheiros, usa um assembler para gerar os vários object files (COFF) e depois o linker para os combinar em um executável (PE).

#12 HappyHippyHippo

HappyHippyHippo

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 10869 mensagens

Publicado 24 de Setembro de 2012 - 14:12

 Triton, em 24 de Setembro de 2012 - 12:43, disse:

É desaconselhado porquê e por quem?

 Triton, em 24 de Setembro de 2012 - 12:43, disse:

Agora, ninguém programa este tipo de ficheiros à mão. Podes usar o hex editor para confirmar a estrutura dos ficheiros, ou usa a tool objdump que vem com as tools do GCC/LLVM que faz o mesmo mas faz um print todo bonito para a consola.
engraçado, respondeste à tua própria pergunta

#13 Triton

Triton

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 8490 mensagens

Publicado 24 de Setembro de 2012 - 16:09

 HappyHippyHippo, em 24 de Setembro de 2012 - 14:12, disse:

engraçado, respondeste à tua própria pergunta

Falaste em alterações. Uma coisa é fazer um programa de raiz num hex editor. Outra é alterar certas coisas, como alguns opcodes de assembly. Entender a estrutura dos ficheiros é fundamental para certas actividades como reverse engineering, cracking, security research, compiler development, etc.

#14 HappyHippyHippo

HappyHippyHippo

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 10869 mensagens

Publicado 24 de Setembro de 2012 - 16:48

 Triton, em 24 de Setembro de 2012 - 16:09, disse:

Falaste em alterações. Uma coisa é fazer um programa de raiz num hex editor. Outra é alterar certas coisas, como alguns opcodes de assembly. Entender a estrutura dos ficheiros é fundamental para certas actividades como reverse engineering, cracking, security research, compiler development, etc.
exactamente.
eu nunca disse para ele não o fazer, até ele ter demonstrado que não tem um objectivo específico.
fazer este tipo de trabalho não é coisa para se fazer de animo leve, porque é necessário um conjunto muito elevado de conhecimentos que pelos posts anteriores (de outros tópicos) ele aparenta não possuir.

#15 dicas3d

dicas3d

    CRLF

  • Membro
  • PipPipPipPipPip
  • 590 mensagens

Publicado 17 de Outubro de 2012 - 09:10

 Triton, em 24 de Setembro de 2012 - 16:09, disse:

Falaste em alterações. Uma coisa é fazer um programa de raiz num hex editor. Outra é alterar certas coisas, como alguns opcodes de assembly. Entender a estrutura dos ficheiros é fundamental para certas actividades como reverse engineering, cracking, security research, compiler development, etc.
Só hoje pude vir responder.
Era isso mesmo que eu queria aprender a estrutura dos ficheiros. Queria fazer isso para security research.

Editado por dicas3d, 17 de Outubro de 2012 - 10:55.