Brincando com o Editor HT

por Alex.S.R

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:

http://hte.sourceforge.net/downloads.html

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.

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):

1
2
3
4
5
6
7
8
9
//www.asrtech.wordpress.com <--- entre e comente!
#include <stdio.h>

int main()
{
   printf(Blog ASRTech!\n);

   return 0;
}

Salve como prog.c e compile com o gcc.

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

Agora nós temos dois arquivos, como pode ser visto na figura abaixo.

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.

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.

Obs: 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 de 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 assemble.

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 assemble. 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.

Bom agora vamos apertar F4 para entrar no modo de edição.

Repare que agora no inicio 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.

Vídeo Complementar

Click aqui para assistir o vídeo.

Pronto, conseguimos modificar o nosso programa pelo binário.

Até mais.

Alex.S.R.

2 Comentários to “Brincando com o Editor HT”

  1. Muito útil, obrigado.

  2. “Ainda não sei como faz para adicionar um texto maior. Quem souber deixe um comentário.”

    O problema de adicionar um comprimento maior é que você teria que deslocar todos as instruções posteriores fazendo com que o endereço ( posição ) das instruções mudem e ai todos os jumps vão ficar errados.

    Para inserir um texto maior você deve:
    – ou alterar todos os jumps
    – ou então colocar o dado no final do arquivo. E quando for imprimir este dado usar o endereço no final do arquivo.

    A segunda opção é bem melhor né?

    Não sei se esse editor permite fazer isso mas trata-se de algo bem simples. Você não precisa de um editor para isso. Em qualquer linguagem você pode ler o arquivo em binário e manipulá-lo, depois gerar outro arquivo a partir dele.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: