construção de um protótipo de uma máquina virtual para execução de código binário aluno:...

23
Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da Silva Curso: Ciência da Computação Uberlândia, 27 de Julho de 2013

Upload: internet

Post on 17-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Construção de um protótipo de uma máquina virtual para execução de código binário

Aluno: Wlysses Sebastião PereiraOrientador: Marcos Alberto Lopes da SilvaCurso: Ciência da Computação

Uberlândia, 27 de Julho de 2013

Page 2: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Objetivo da apresentação

• Descrever modelos de execução de códigos executáveis.

• Falar sobre alguns ambientes de execução virtual.

• Descrever estruturas e módulos usados em ambientes de execução.

Page 3: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Objetivo da apresentação

• Apresentação do estudo de caso.– Protótipo de máquina virtual para execução de

código binário.– Compilador assembler para criação de código

binário a partir de código fonte de entrada.– Demonstração da execução de códigos binários.

Page 4: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Modelos de execução

• Execução direta de código binário em hardware:

Código executável.

Hardware nativo.

Page 5: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Modelos de execução

• Interpretação textual:

Código executável.

Hardware nativo.

Le o conteúdo de texto do arquivo e efetua as ações.

Page 6: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Modelos de execução

• Processadores/máquinas virtuais:

Hardware nativo.

Código executável.

Hardware virtual.

Page 7: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Alguns ambientes de execução virtual

• Máquina virtual java (JVM):

Arquivo CLASS.

Máquina virtual Java.

Ambiente hospedeiro.

Page 8: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Alguns ambientes de execução virtual

• Plataforma .NET:

Arquivo .exe

Plataforma .NET

Ambiente hospedeiro.

Page 9: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Alguns ambientes de execução virtual

• Parrot:

Código executável.

Máquina virtual Parrot

Ambiente hospedeiro.

Page 10: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Estruturas e módulos usados em ambientes de execução

• Opcode (Código de operação):

Instrução Valor numérico

MOV EAX, DWORD PTR [EBP+8] 0x7C90EBC2

MOV ECX, DWORD PTR [EBP+4] 0x7C90EBC5

PUSH 1 0x7C90EC34

... ...

Page 11: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Estruturas e módulos usados em ambientes de execução

• Carregador de Opcode:

Memória

Código executável

Área de código

OPCODES

Page 12: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Estruturas e módulos usados em ambientes de execução

• Just in Time

Page 13: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Estudo de Caso

• Protótipo de Máquina virtual

Processador Memória

R0, R1, R2, R3, R4, R5, R6, R7,

CS, DS, SS, IP, SP, BP, FLAG_Z, FLAG_S

0 ... 65535

1 byte2 bytes

Page 14: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Protótipo de Máquina virtual

• Código binário para execução

• Opcode de três bytes– De (00 00 00) até (FF FF FF)

W 1 6 CS DS SS CÓDIGO 0xFF DADOS 0xFF

1 byte 1 byte 1 byte 2 bytes 2 bytes 2 bytes3 ou N bytes

1 byte0 ou N bytes

1 byte

Page 15: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Protótipo de Máquina virtual

• Memória

Memória

Código Dados Pilha

Page 16: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Protótipo de Máquina virtual

• Execução de um código

Memória

Código executável

Área de código

OPCODES

Page 17: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Protótipo de Máquina virtual

• Executado pelo executor de Opcodes.

• Exibido os valores dos registradores e das áreas da memória.

Page 18: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Estudo de Caso

• Compilador assembler– Linguagem parecida com assembly.– Sem diferenciação entre maiúsculo e minúsculo.

.VAR$variavel

.PROGRAM

MOV R0 2ST0 0x0A

.END

Page 19: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Demonstração da execução de códigos binários

Page 20: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Conclusão

•A máquina virtual executa com satisfação mesmo sendo sobre um ambiente virtual.

•Mostrado na prática o desenvolvimento e execução de um ambiente virtual.

Page 21: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Sugestões de trabalhos futuros

• Desenvolvimento de uma linguagem de alto nível para criação de programas na máquina virtual.

• Expandir a máquina migrando-a para alguma linguagem de baixo nível, como por exemplo C++.

Page 22: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Perguntas

Page 23: Construção de um protótipo de uma máquina virtual para execução de código binário Aluno: Wlysses Sebastião Pereira Orientador: Marcos Alberto Lopes da

Obrigado