Assembly, quem utiliza isso hoje em dia???
Bom, diretamente quase ninguém. Mas indiretamente todo mundo!
Como assim? Vou tentar ser mais claro: a única linguagem que os computadores realmente entendem é a linguagem binária, ou seja, 0 (zero) e 1 (um), que significa desligado/ligado, sem corrente/com corrente. Essa é a linguagem que os micro transistores do processador entendem. Um transistor é um componente que possui base, coletor e emissor. Dependendo do caminho percorrido pela corrente elétrica a CPU identifica o sinal como zero ou um.
Mas programar utilizando zeros e uns é um tanto inviável. Foi ai que surgiu a linguagem de montagem, ou seja, assembler, que passou a ser chamada de Assembly.
Porém, esta linguagem é muito básica, chamada de baixo nível, e realmente é um pouco complicado de se trabalhar com ela se o cara não é um Engenheiro da Computação.
Foi dai que surgiram as linguagens de médio nível, como C, e as de alto nível, como C++, etc.
Enfim, não importa qual a linguagem que você utiliza para programar. No fim, tudo será convertido para linguagem de montagem (Assembly) e interpretado por zeros e uns no processador.
Conhecendo Assembly temos o poder de compreender como um programa realmente funciona por dentro, e acompanhar seu passeio pelos registradores da CPU.
Se a sua intenção é debugar programas, escrever exploits, desenvolver um crack para um software qualquer ou, simplesmente, escovar bits, então não tem como fugir do nosso amigo Assembly.
Existem vários compiladores para Assembly, tando em Linux, MS-DOS, quanto Windows.
Estou postando aqui um pacote de ferramentas para você começar a programar em Assembly na plataforma do tio Bil Gates. Acredito que é uma boa forma de começar.
Futuramente irei postar alguns código gerados nesse ambiente, e falar um pouco do que costumo chamar de "pseudo assembly", ou seja, um conjunto de macros da ferramenta em questão que facilitam, em muito, o desenvolvimento.
O pacote contém os seguintes arquivos:
- Masm32 - o compilador Assembly (quem realiza o trabalho pesado)
- WinAsm - a IDE de desenvolvimento
- LEIAME.txt - um txt mostrando como configurar o ambiente
Aguardem os próximos posts e bons estudos :)