'Hello, world' em Assembly no Linux - Parte 1

preview_player
Показать описание
O NASM (Netwide Assembler) é um compilador Assembly multiplataforma que apresentamos neste vídeo introdutório ao Assembly no Linux. A ideia é se ambientar com o ambiente de compilação para proporcionar uma base para futuros estudos. Se você sempre quis saber como criar um programa em Assembly no Linux, este vídeo é pra você! ;)

-NASM

-Syscalls do Linux

-Treinamento de Engenharia Reversa
Рекомендации по теме
Комментарии
Автор

Até que enfim um tutorial que explica ao invés de tacar a porcaria do código na sua cara

banzeirao
Автор

Incrivel! Parabéns!
Muito bacana mesmo cara, obrigado. XD

Estava a ler o livro 'Programação Avançada em Linux' (um dos poucos materiais que encontrei sobre desenvolvimento ambiente linux que tive condições de ter acesso) e essas aulas ajudarão bastante.

Desde já ajudando a divulgar o canal!
Materiais e trabalhos como estes devem ser valorizados e divulgados; pois ajudam muitas pessoas.

Abraços fraternos e cordiais.
W.R.

wandeson
Автор

Top demais, na BSides tive o prazer de acompanhar essa explicação e mais algumas outras ao vivo.

marciorag
Автор

Muito bom. Parabéns pelo canal e pelos vídeos que além de serem excelentes, abordam temas que não são muito comuns no YouTube brasileiro.
Você está fazendo um trabalho fantástico!

rboalves
Автор

Muito obrigado por mais uma de suas excelentes aulas, Fernando!
Estou usando o Termux em meu smartphone. Consegui compilat com o nasm, mas não consegui, de forma alguma, linkar com o ld.
Tentei falar contigo no Discord, mas não soube sequer usar.
Grande abraço!

balbino
Автор

Muito legal o vídeo. Assistirei o seguinte! Abrações!

akinhieurukin
Автор

Muito bacana eu adoro assembly desde a época de meu Z80, eu estou a algum tempo desenvolvendo um curso de ASM 32/64 para Linux, o de 32 bits já esta bem adiantado espero mesmo que o canal traga mais adeptos eu no que puder contribuir estou disposto, grande abraço, e grande trabalho.

Автор

Olá, vídeo muito bom, mas acabei ficando com muitas dúvidas, talvez a dúvida mais básica seria sobre a relação de um programa com o SO. Uma sugestão seria você explicar o funcionamento básico do SO, o papel do kernel, a relação com as syscalls e como os programas interagem com SO. Outra sugestão seriam as etapas de compilação, o papel do link, como um programa faz uso de uma lib estática e como usa uma lib dinâmica (estou falando explicar a vera e não como boa parte dos livros fazem, com um único parágrafo de explicação).

Desculpa pelas muitas sugestões, mas estou gostando muito do canal e acabo criando muita espectativa sobre o que vou apender.

Novamente, parabéns pelo ótimo conteúdo.

firminodefaria
Автор

Ótimo tutorial, foi difícil achar um conteúdo de qualidade. :)

Unnamed
Автор

Faça isso comigo não mano, é muita emoção para um humilde coração..
Vlw Mercês, obrigado!

juliodossantos
Автор

parabens pelo video. excelente explicação. adoro esse site!!!!

ronpdf
Автор

Mt bom mano, daria 1000 likes se pudesse

gustavohenriquesantiagodas
Автор

Muito bom, gostaria de sugerir que o CURSO de assembly fosse online, teria maior acesso aos interessados

hadsonbastos
Автор

Outra coisa, bota online este treinamento mano, vai ajudar muita gente, eu por exemplo!

juliodossantos
Автор

@Merces: Depois que eu tenho visto você usando o ponto de exclamação para executar o último comando, eu já não sei mais o que é procurar pelo último comando executado. HAUHAUAHUAHAUHAUHUAHAU... Me acostumei bem rápido!

leonardosena
Автор

Como funciona a linguagem de alto nível ??

Bem, ela usa uma biblioteca para "traduzir" para assembly e do assembly vai para OPcode direto para o processador?

alexnascimento
Автор

Excelente video como todos os demais, ai ja usou o mips para emular processador ? Quando aprendi um pouco de ASM foi com ele, achava top ver os dados trocando de registradores kkkk abraços mano e obrigado por compartilhar seu conhecimento conosco.

sergio
Автор

Em 2:25 quando tem compilado um código em C e se deparou com um erro, foi porque já havia um "sai.o" no mesmo diretório compilado para ser gerado um ELF de 32-bit (i386). Assim, teve a incompatibilidade do arquivo object de 32-bit ["sai.o"] no momento de link:


Já que sua máquina é x64, o link por default irá usar a flag "elf_x86_64":
ld: i386 architecture of input file `sai.o' is incompatible with i386:x86-64 output

Eu só não entendi porque foi alertado que existe múltiplos "_start" definidos. Se o código objeto não é compatível para gerar o executável final, então porque raios ele ainda analisou o objeto? -- Na minha percepção esses dois objetos são:
1. O arquivo objeto gerado pelo GCC usando um nome "aleatório" (AFAIK, 8 caracteres), assim não sobrepõe o "sai.o";
2. O arquivo compilado manualmente pelo nasm, um ELF de 32-bit (i386).

No momento estou usando o GCC 7.2.0, e pelo visto, a versão do GCC que aparenta ser no vídeo é a 4.9. Será que nessa versão o GCC tentava "incorporar" todos os arquivos objetos presente no mesmo diretório e por isso foi identificado os múltiplos "_start"?

leonardosena
Автор

Estou tendo a seguinte mensagem de erro: "cannot execute binary file: Exec format error"
Quando digito "file sai", tenho a seguinte resposta: "ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped". Alguém pode me ajudar? Estou usando o subsistema do Ubuntu embutido no Windows. Será que isso? Já compilei programas em c neste subsistema, mas nunca tive problema ao executar.

matheuscezar
Автор

Vou ter que dar uma estudada boa nessas coisas ai!!!

brunoborges
welcome to shbcf.ru