Importância da linguagem de Programação de Baixo Nível

Importância da linguagem de Programação de Baixo Nível. As linguagens de baixo nível continuam sendo importantes para a Segurança da Informação, a linguagem assembler (assembly) continua tendo o seu espaço.

As linguagens de programação evoluíram muito ao longo dos anos, hoje existem centenas de linguagens diferentes, por exemplo: C♯, VB.NET, Java, Object Pascal, Objective-C, PHP, Python, SuperCollider e Assembly.

Cada linguagem possui uma característica e melhor aplicação de acordo com a necessidade do programador. Na web por exemplo utiliza-se muito o HTML e quando requer algum tipo de interação mais complexa utiliza-se o Java.

Fonte  PetNews – http://www.dsc.ufcg.edu.br/~pet/jornal/maio2014/materias/historia_da_computacao.html

As linguagens são comumente chamadas de “Alto Nível” ou “Baixo Nível” de acordo com a sua facilidade de uso ou a sua proximidade da linguagem binária do computador.

Nesse artigo, iremos abordar a importância de se estudar e conhecer uma linguagem de programação baixo nível, principalmente quando se trata de segurança da informação.

Dentro da proposta deste artigo iremos abordar o uso do Assembly.

Assembly

A linguagem Assembly existe desde os primórdios da computação, sendo praticamente a primeira linguagem estruturada, criada em meados dos anos 50, que nos permitiu programar os computadores .

A linguagem assembly é conhecida como uma linguagem de baixo nível ao contrário de C ou C++ .

Ela é uma versão legível da linguagem de máquina, utiliza palavras mais conhecidas como mnemônicos.

Podemos exemplificar a codificação Assembly da seguinte forma:

mov eax,1 ; Interrupção Exit

mov ebx,0 ; Argumento em EBX

int 80h ; Chamada da interrupção

A linguagem Assembly utiliza códigos mnemônicos (ADD, SUB, …), mais fáceis de aprender e memorizar que os códigos numéricos cada instrução de máquina e tem uma correspondência de um-para-um com as instruções em linguagem de máquina.


código assembly x código de maquina
Fonte  PetNews – http://www.dsc.ufcg.edu.br/~pet/jornal/maio2014/materias/historia_da_computacao.html

A transformação de um código assembly para linguagem de máquina é chamado de assembler (montagem) ou compilação.

Para se programar em assembly é necessário ter sólidos conhecimentos a respeito da estrutura do processador que se deseja programar, pois cada tecnologia possui suas próprias características de chamadas e códigos.

Segurança da Informação

Diversos malwares e vírus atuam a em nível de comandos internos de sistemas operacionais e linguagem de máquina, conhecer a linguagem assembly é fundamental para podermos decodificar e interpretar as ações realizadas por estes códigos maliciosos.

Desta forma, nas atividades de segurança da informação relacionadas a “Threat Defense” você pode usar o recurso chamado de “engenharia reversa” para transformar um programa já compilado em código assembly.

Realizando o processo de de-compilação você é capaz de entender o comportamento de um malware ou ransoware via instruções de baixo nível, quebrar códigos de proteção e crackear programas.

Abaixo segue exemplo de um arquivo executável que foi decodificado no software IDA-PRO, para visualizarmos o código assembler resultante desse executável.

Esse processo é conhecido como “disassembler” ou “de-compilação”

Conclusão

O uso das linguagens tem evoluído muito nas últimas décadas, e a busca por facilidades e velocidade na programação de novos aplicativos tem demandado um constante aprimoramento das linguagens buscando interatividade e processos intuitivos para que o tempo gasto na programação seja cada vez menor.

No entanto, conhecer a linguagem assembler continua tendo a sua relevância para aqueles que se dedicam nas análises de códigos maliciosos e ou que atuam em pesquisas e desenvolvimento de novas tecnologia.

O Assembly continua sendo ferramenta relevante na análise de malware ou outros softwares maliciosos.

Ignorar este conhecimento pode significar estar nas mãos de invasores e reféns de softwares de empresas de segurança, que nem sempre estão tão atualizadas como os próprios invasores.

Por Celso Faquer 

Veja também:

Sobre mindsecblog 2401 Artigos
Blog patrocinado por MindSec Segurança e Tecnologia da Informação Ltda.

1 Trackback / Pingback

  1. Importância da linguagem de Programação de Baixo Nível – Neotel Segurança Digital

Deixe sua opinião!