O que são softwares de baixo nível?

Se você vem seguindo o mesmo guia de estudos, vai chegar uma hora em que vai partir pro JavaScript e mais cedo ou mais tarde vai se aprofundar ainda mais em programação e é aí que você ouve alguns termos meio confusos como esse:

JavaScript é uma linguagem de programação de alto nível.

Mas e dae? Quer dizer que ela é uma linguagem de programação da realeza? É uma princesa? Ou um princeso? O que significa isso?

  • Linguagem de alto nível
  • E a linguagem de baixo nível?
  • Qual é mais difícil de se trabalhar?
  • Exemplos

Linguagem de alto nível permalink

Essas são aquelas cuja sintaxe se aproxima mais da nossa linguagem e se distanciam mais da linguagem de máquina.

Elas possuem um nível de abstração que faz com que você entenda aquele código mais facilmente, pois foi removido da sintaxe o que você não precisa entender em um primeiro contato com programação ou pra quem nunca vai mexer com linguagens de baixo nível.

Você não vai precisar conhecer coisas como registradores ou instruções do processador para conseguir fazer seu Hello World. - Apesar que ninguém ensina isso antes de te mostrar o Hello World mesmo em linguagens de baixo nível né, mas deu pra entender a mensagem... ;)

Alguns exemplos de linguagens de alto nível:

  • JavaScript <3 +++
  • Python <3 +++
  • PHP <3 ++
  • Ruby <3 +

E a linguagem de baixo nível? permalink

É aquela que se aproxima mais da linguagem de máquina.

Essas são as que você precisa ter o conhecimento direto da arquitetura do computador para fazer alguma coisa. Tem um pouquinho mais para conhecer sobre elas aqui.

Qual é mais difícil de se trabalhar? permalink

Nenhuma.

Ambas tem suas características e seus objetivos, então não tem qual é mais fácil ou difícil de se trabalhar.

É a mesma coisa de ficar na briga de qual linguagem de programação é melhor ou qual S.O. é melhor. Não tem, não existe. Cada uma se aplica a um cenário/uma necessidade.

Claro que um iniciante, só com lógica de programação, aprende a programar em uma linguagem de alto nível como Python, PHP, JS facilmente, porém ele vai sentir alguma dificuldade para uma de baixo nível. Mas não é nada que ele não se acostume ou que não aprenda com dedicação.

Se você planeja aprender uma linguagem de baixo nível, vai sem medo. O que vai acontecer é você ter de pesquisar mais no Google se não tiver conhecimento da arquitetura.

Exemplos permalink

Pega esse Hello World em JS (Alto nível):

console.log('Hello World!');

Agora em Assembly (Baixo nível):

%ifdef NetBSD section .note.netbsd.ident dd 7,4,1 db "NetBSD",0,0 dd 200000000 ; amd64 supported since 2.0 %endif %ifdef OpenBSD section .note.openbsd.ident align 2 dd 8,4,1 db "OpenBSD",0 dd 0 align 2 %endif section .text %ifidn __OUTPUT_FORMAT__, macho64 ; MacOS X %define SYS_exit 0x2000001 %define SYS_write 0x2000004 global start start: %elifidn __OUTPUT_FORMAT__, elf64 %ifdef UNIX ; Solaris/OI/FreeBSD/NetBSD/OpenBSD/DragonFly %define SYS_exit 1 %define SYS_write 4 %else ; Linux %define SYS_exit 60 %define SYS_write 1 %endif global _start _start: %else %error "Unsupported platform" %endif mov rax,SYS_write mov rdi,1 ; stdout mov rsi,msg mov rdx,len syscall mov rax,SYS_exit xor rdi,rdi ; exit code 0 syscall section .data msg db "Hello, world!",10 len equ $-msg

Outros exemplos aqui ;).

Este conteúdo te ajudou? permalink

Se eu consegui te ajudar, considere contribuir com o meu trabalho através dos links abaixo.

Qualquer valor é muito bem vindo e os apoios começam a partir de 1 real. Apoiar via Apoia.se Apoiar via PayPal

As linguagens de baixo nível continuam sendo importantes para a Segurança da Informaçã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 – //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 maquinaFonte  PetNews – //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 assembly 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.

Veja também:

Desenvolvedores sabem sua Responsabilidade de Segurança, mas falta Treinamento.

Fortinet – Threat Intellingence Brief

Vulnerabilidade no Oracle IDM é Crítica e Pode ser Explorada sem Autenticação

Vulnerabilidade no Bluetooth Expõe 5bi de Dispositivos

Por Celso Faquer 14/11/2017

Quais são as linguagens de baixo nível?

As linguagens de baixo nível são aquelas cuja sintaxe está mais distante daqui que conhecemos por linguagem. Estas linguagens se classificam em dois tipos: as linguagens de máquina e as linguagens de montagem, conforme citadas no tópico anterior.

O que é baixo nível?

O que é Baixo nível: Que possui o nível abaixo do normal, abaixo do esperado.

O que são linguagens de baixo e alto nível?

Como falei anteriormente, existem linguagens de alto e baixo nível e a principal diferença entre ambos é o seguinte: A linguagem de alto nível se aproxima mais com a linguagem humana. A linguagem de baixo nível está mais próxima da linguagem de máquina.

Qual a linguagem de programação mais baixo nível?

Linguagens de programação de baixo nível são aquelas cujos símbolos são uma representação direta do código de máquina. Exemplo: Assembly.

Toplist

Última postagem

Tag