Brincando com o editor HT

Bom, nesse tutorial vamos criar um programa bem simples na linguagem C e depois usando o HT vamos editar o binário modificando algum texto que é exibido.

[ Hits: 26.609 ]

Por: Alex da Silva Ribeiro em 21/10/2010


Editando



HT é um editor de executáveis distribuído sob a licença GPL. Pode ser baixado tanto para Linux quanto para Windows no seguinte link:
Bom, nesse tutorial vamos criar um programa bem simples na linguagem C e depois usando o HT vamos editar o binário modificando algum texto que é exibido.

Obs.: Embora esse tutorial tenha como foco a plataforma Linux, se o leitor tiver um pouco de conhecimento de como compilar na plataforma Windows conseguirá acompanhar. Toda a parte feita no HT acredito que seja igual (embora não tenha realmente testado).

Primeiramente vamos instalar o HT.

Instalando o HT no Linux (repositório Debian)

O HT já está nos repositórios do Debian (acredito que esteja em outros também), então basta usar o apt.

# apt-get install ht

Agora com o HT instalado vamos criar no nosso pequeno programa.

Programa:

O nosso programa vai ser bem simples e como já dito anteriormente vai ser em linguagem C, ele apenas vai exibir na tela a mensagem "Blog ASRTech!". Abra um editor de texto qualquer e digite o seguinte código (ou baixe o arquivo prog.c:

//www.asrtech.wordpress.com <--- entre e comente!
#include <stdio.h>

int main()
{
   printf("Blog ASRTech! ");

   return 0;
}

Salve como prog.c e compile com o gcc.

gcc prog.c -o prog

Vamos executar o nosso programa para ver a saída.

./prog
Blog ASRTech!

Agora nós temos dois arquivos,

O prog é o nosso binário e o prog.c é o nosso código fonte, ou seja, se quisermos modificar o nosso programa temos que editar o código fonte e compilar novamente. Mas e se nós não tivéssemos o código fonte? Não poderíamos modificar? Ai é que entra o editor de binários HT. Mas que já fique claro que não é tão fácil quanto editar o código fonte e compila-lo novamente (embora seja um exemplo bem simples). Também não vou entrar em questões de legalidade.

Vamos excluir o nosso código fonte.

rm prog.c

Agora só temos o arquivo prog que é o nosso binário. O nosso objetivo agora é modificar a mensagem exibida na tela de "Blog ASRTech!" para "OK!".

Obs.: Nos passos a seguir não entrarei em muitos detalhes sobre cada passo.

Primeiramente vamos abrir o binário com o HT.

hte prog

Embora o programa se chame HT o comando é hte.

A seguinte "tela" será exibida (para uma total identidade com os prints do tutorial recomendo usar o arquivo fonte que disponibilizei).
A primeira tela parece um caos, vários números aparentemente sem significados. Não se assuste, vamos dar uma melhorada nisso, para ficar mais fácil de nós entendermos. Aperte F6 e selecione com as teclas direcionais "elf/image" e dê enter.
Agora a tela ficará da seguinte forma:
Agora já deu uma melhorada, podemos identificar alguns caracteres que fazem sentidos para nós (humanos). Não vou explicar linha por linha, pois fugiria completamente do foco do tutorial. Se quiser saber mais estude assembler.

Bom, agora que a gente "consegue ler" o código precisamos achar a função main. Para isso vamos apertar F8 e selecionar "main" (na coluna nome). Depois pressione enter.
Depois de apertar enter vamos ser direcionado para a tela abaixo.
Dando uma olhada na função main podemos ver uma coisa interessante, embora não entendamos muito de assembler. Podemos ver que strz_Blog_ASRTech_8048490 tem o texto que nós queremos modificar. Utilizando as teclas direcionais vamos selecionar esse trecho e dar enter.

Agora fomos direcionado para a parte que contém o texto.
Agora vamos apertar F4 para entrar no modo de edição.
Repare que agora no início da linha que tem a mensagem apareceu vários números, na verdade o que vamos modificar é esse número, que é o valor em hexadecimal de cada letra. Então precisamos saber qual é o valor em hexadecimal do texto que queremos colocar no lugar, que é "OK!". Vamos dar uma olhada na tabela ASCII para descobrir qual é o número:
O nosso "OK!" fica assim:

O = 4f
K = 4b
! = 21

Então temos que colocar 4f4b21 nos números que apareceram quando apertamos F4. Usando as teclas direcionais navegamos até o primeiro número, que no caso é 42 e modificamos para 4f e assim por diante. Note que conforme você modifica o texto vai sendo modificado, então é fácil saber se está modificando para o texto certo ou não.
Mas e agora? A mensagem ficou "OK!g ASRTech!". Para deixar somente o "OK!" basta inserir 0 para o resto dos números.

Obs.: Note que o novo texto tem que ter no máximo o mesmo tamanho do antigo. Ainda não sei como faz para adicionar um texto maior. Quem souber deixe um comentário.

Agora que já modificamos o que queríamos vamos salvar apertando F2 e logo em seguida F10 para sair do HT.

Agora basta executar o nosso arquivo prog para conferir o resultado.

./prog
Ok!

Vídeo complementar:
Pronto, conseguimos modificar o nosso programa pelo binário.

Até mais.
Alex.S.R.

   

Páginas do artigo
   1. Editando
Outros artigos deste autor

Instalando o Opera e plugin Flash Player no Debian

Leitura recomendada

Ponteiros void na linguagem C (parte 2)

Utilizando a biblioteca NCURSES - Parte I

Substituindo a biblioteca conio.h no Linux usando ncurses curses.h

Túnel do Tempo: a função itoa()

Criação e uso de um interpretador de script BrainFuck em C++

  
Comentários
[1] Comentário enviado por julio_hoffimann em 21/10/2010 - 21:07h

Oi Alex,

Muito bom! Não sabia que era possível, de uma forma tão simples, editar um binário. Muito legal!

Abraço!

[2] Comentário enviado por removido em 21/10/2010 - 23:31h

Legal Alex...

Bom artigo.

[3] Comentário enviado por ---Anonymous--- em 28/10/2010 - 11:12h

HAHAHA, muito bacana cara, show de bola. Muito interativo, prende a pessoa a buscar mais conhecimentos. Legal.

[4] Comentário enviado por mtarroyo em 10/11/2010 - 10:45h

Muito interessante.

Abraços!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts