Sunday 22 October 2017

Netwide Assembler Binary Options


O que é Nasm O Netwide Assembler, NASM, é um montador 80x86 projetado para portabilidade e modularidade. Ele suporta uma variedade de formatos de arquivo de objeto, incluindo Linux e NetBSD / FreeBSD a. out, ELF, COFF, Microsoft de 16 bits OBJ e Win32. Ele também irá produzir arquivos binários simples. Sua sintaxe é projetada para ser simples e fácil de entender, semelhante ao Intel39s, mas menos complexo. Suporta Pentium, P6, MMX, 3DNow. SSE e SSE2 opcodes, e tem capacidade macro. IMPORTANTE A versão do Windows está um pouco desatualizada. Por favor, siga este link para obter a versão mais recente 0.98.39. Por que este site NASM é primariamente um projeto Linux. Este site oferece pacote de instalação para Windows 9x / NT / 2k / XP e BeOS Release 5, notas adicionais de instalação para Integração Visual Studio e integração BeIDE e formato de documentação CHM. Instalando o NASM em Windows Depois de ter obtido o arquivo Win32 para NASM, nasmw-inst-XXX. exe (onde XXX indica o número de versão do NASM contido no arquivo), clique duas vezes no programa de instalação automática e instale-o em seu próprio diretório Por exemplo C: Program FilesNASM). O arquivo conterá dois arquivos executáveis: os arquivos executáveis ​​do NASM nasmw. exe e os arquivos executáveis ​​NDISASM ndisasm. exe e ndisasmw. exe. Em cada caso, o arquivo cujo nome termina em w é um executável do Win32, projetado para ser executado no Windows 95 ou Windows NT Intel Integração no Microsoft Visual Studio 6 Desde 0.95.36, o NASM é totalmente oficialmente compatível com o Microsoft Visual Studio 6 /.NET - Em Ferramentas / Opções / Diretórios, selecione 39Entrar diretórios para: 39 em 39Executa arquivos39. Adicione um novo caminho quotC: Program FilesNASMquot (ou onde você instalou o Nasm) - Na área de trabalho do projeto, crie uma nova pasta 39Assembler Files39. - Nesta pasta, clique com o botão direito do mouse e selecione 39Configurações.39 - Em Geral, ative 39Always use o passo de compilação personalizado39. - Em Custom Build, altere as seguintes configurações: Integração no Microsoft Visual. NET 2003/2005/2008 - Em Ferramentas / Opções / Projetos, selecione 39VC Diretórios 39 e 39Show diretórios para: 39 39Executable files39 - Deve ser o padrão. Pressione Ctrl-Insert ou pressione o ícone39New Line39. Selecione o caminho quotC: Program FilesNASMquot (ou onde você instalou o Nasm) - Na área de trabalho do projeto, crie uma nova pasta 39Assembler Files39. - Nesta pasta, clique com o botão direito do mouse e selecione 39Configurações.39 - Em Geral, ative 39Always use custom39 build step39. - Em Custom Build, altere as seguintes configurações: Comandos nasmw. exe - f win32 - Xvc - o quot (IntDir) (InputName).objquot (InputDir) (InputName).asm Instalando o NASM no BeOS Depois de ter obtido o arquivo BeOS para NASM , Nasm-beos-XXX. pkg (onde XXX indica o número de versão do NASM contido no arquivo), clique duas vezes no programa de instalação automática e instale-o em seu próprio diretório Como usar o NASM no BeIDE Desde o BeOS 5, o NASM é suportado Com o plugin Integração NASM - Abra a opção Configurações do Projeto, - Adicione um novo destino 39.asm39 e escolha a ferramenta 39nasm39. - Adicione seus arquivos. ASM em seu projeto. - Alternativamente, selecione. CC e mude para ASM e NASM. Como escrever uma simples rotina Assembler com NASM. Bits 32 seção. bss align16 seção. data align16 seção. text align16 global myFunction myFunction: empurrar ebp mov ebp, esp mov eax, ebp 8 // tipo seu código aqui. Pop ebp ret END se usar MSC, para exportar o procedimento: int cdecl myFunction (parâmetro int) se estiver usando o GCC, para exportar o procedimento: int myFunction (int parameter) Como entrar em contato com o autor Getting NASM special edition 0.98.36 ---- --- Update rdoff - bibliotecário / arquivador - rec - docs comuns Fix problemas assinados / unsigned. Corrija a etiqueta JMP FAR e a etiqueta CALL FAR. Adicionar novo suporte de multisseção - mapear arquivos - corrigir alinhar bug Corrigir sysexit, movhps / movlps reg, reg bugs em insns. dat quotQuot ou quotOquot sufixos indic octal Suporte Prescott novas instruções. Instruções Cyrix XSTORE. E também, a documentação NASM é fornecida na versão CHM para o Pacote do Windows. Instalação do BeOS 5. 286 KB Instalação do Win32. 634 KB (C) Copyright 1999-2004 realtech VR. Todos os direitos reservados. NASM está sob LGPL. Por favor, consulte o arquivo Licença, fornecido como parte de qualquer arquivo de distribuição NASM, para as condições de licença sob o qual você pode usar NASM. The Netwide Assembler: NASM O Netwide Disassembler, NDISASM O Netwide Disassembler é um pequeno programa complementar ao Netwide Assembler, NASM . Parecia uma vergonha ter um assembler x86, completo com uma tabela de instruções completa, e não fazer tanto uso dela quanto possível, então heres um disassembler que compartilha a tabela de instruções (e alguns outros bits de código) com NASM. O Netwide Disassembler não faz nada, exceto para produzir desmontagens de arquivos de origem binários. NDISASM não tem qualquer compreensão de formatos de arquivo de objeto, como objdump. E ele não vai entender os arquivos DOS. EXE como o depuração. Apenas desmonta. Consulte a seção 1.3 para obter instruções de instalação. NDISASM, como NASM, tem uma página de manual que você pode querer colocar em algum lugar útil, se você estiver em um sistema Unix. Para desmontar um arquivo, normalmente você usará um comando do formulário NDISASM pode desmontar código de 16, 32 ou 64 bits com a mesma facilidade, desde naturalmente que você se lembra de especificar com qual ele deve trabalhar. Se nenhuma opção - b estiver presente, NDISASM funciona no modo de 16 bits por padrão. A opção - u (para USE32) também invoca o modo de 32 bits. Mais duas opções de linha de comando são - r que relata o número de versão do NDISASM que você está executando e - h que fornece um breve resumo das opções da linha de comando. Para desmontar um ficheiro DOS correctamente, um desmontador deve assumir que a primeira instrução no ficheiro é carregada no endereço 0 x 100. Em vez de zero. NDISASM, que assume por padrão que qualquer arquivo que você dá é carregado em zero, portanto, precisará ser informado disto. A opção - o permite que você declare uma origem diferente para o arquivo que você está desmontando. Seu argumento pode ser expresso em qualquer um dos formatos numéricos NASM: decimal por padrão, se começa com ou 0x ou termina em H seu hex. Se termina em Q seu octal. E se termina em B seu binário. Assim, para desmontar um arquivo: vai fazer o truque. Suponha que você está desmontando um arquivo que contém alguns dados que não são código de máquina e, em seguida, contém algum código de máquina. NDISASM fielmente arado através da seção de dados, produzindo instruções de máquina onde quer que pode (embora a maioria deles vai olhar bizarro, e alguns podem ter prefixos incomuns, por exemplo, FS ou AX, 0x240A) e gerar instruções DB sempre tão frequentemente se o seu totalmente stumped . Em seguida, ele alcançará a seção de código. Supondo que o NDISASM acabou de gerar uma instrução de máquina estranha de parte da seção de dados, e sua posição de arquivo é agora um byte antes do início da seção de código. É perfeitamente possível que outra instrução espúria seja gerada, começando com o byte final da seção de dados e, em seguida, a primeira instrução correta na seção de código não será vista porque o ponto de partida saltou sobre ela. Isso não é realmente ideal. Para evitar isso, você pode especificar um ponto de sincronização, ou mesmo tantos pontos de sincronização como você gosta (embora NDISASM só pode manipular 2147483647 pontos de sincronização internamente). A definição de um ponto de sincronização é a seguinte: NDISASM garante acertar pontos de sincronização exatamente durante a desmontagem. Se ele está pensando em gerar uma instrução que faria com que ele saltar sobre um ponto de sincronização, ele irá descartar essa instrução e saída um db vez. Então ele vai começar a desmontagem exatamente a partir do ponto de sincronização, e assim você verá todas as instruções em sua seção de código. Os pontos de sincronização são especificados usando a opção - s: são medidos em termos da origem do programa e não da posição do arquivo. Então, se você quiser sincronizar após 32 bytes de um arquivo, você teria que fazer Como mencionado acima, você pode especificar vários marcadores de sincronização se você precisar, apenas repetindo a opção - s. Suponha que você está desmontando o setor de inicialização de um disquete do DOS (talvez ele tenha um vírus, e você precisa entender o vírus para que você saiba que tipos de danos pode ter feito você). Normalmente, isso irá conter uma instrução JMP, em seguida, alguns dados, em seguida, o resto do código. Portanto, há uma chance muito boa de NDISASM sendo desalinhados quando os dados termina eo código começa. Portanto, um ponto de sincronização é necessário. Por outro lado, por que você deve especificar o ponto de sincronização manualmente O que você faria para encontrar onde o ponto de sincronização seria, certamente, seria ler a instrução JMP e, em seguida, usar seu endereço de destino como um ponto de sincronização . Então, o NDISASM pode fazer isso para você A resposta, é claro, é sim: usando uma das opções também - a (para sincronização automática) ou - i (para sincronização inteligente) ativará o modo de sincronização automática. O modo de sincronização automática gera automaticamente um ponto de sincronização para qualquer instrução de salto ou de chamada relativa ao PC com referência direta que o NDISASM encontrar. (Uma vez que o NDISASM é um passo, se encontrar um salto relativo ao PC cujo alvo já tenha sido processado, não há muito que ele possa fazer sobre isso.) Somente saltos relativos a PC são processados, uma vez que um salto absoluto é através de um registrador (Caso em que NDISASM não sabe o que o registo contém) ou envolve um endereço de segmento (caso em que o código de destino isnt no mesmo segmento que NDISASM está trabalhando, e assim o ponto de sincronização não pode ser colocado em qualquer lugar útil). Para alguns tipos de arquivo, esse mecanismo automaticamente colocará pontos de sincronização em todos os lugares certos e o salvará de ter que colocar qualquer ponto de sincronização manualmente. No entanto, deve ser salientado que o modo de sincronização automática não é garantido para capturar todos os pontos de sincronização, e você ainda pode ter que colocar alguns manualmente. O modo de sincronização automática não impede que você declare pontos de sincronização manuais: apenas adiciona os gerados automaticamente aos que você fornece. É perfeitamente possível especificar opções - i e algumas - s. Outra advertência com o modo auto-sync é que se, por algum acaso desagradável, algo em sua seção de dados deve desmontar a uma chamada relativa ao PC ou instrução de salto, NDISASM pode obedientemente colocar um ponto de sincronização em um lugar totalmente aleatório, por exemplo, no Meio de uma das instruções na sua seção de código. Assim, você pode acabar com uma desmontagem incorreta mesmo se você usar a sincronização automática. Mais uma vez, não há muito que eu possa fazer sobre isso. Se você tiver problemas, você precisará usar pontos de sincronização manuais ou usar a opção - k (documentada abaixo) para suprimir a desmontagem da área de dados. A opção - e pula um cabeçalho no arquivo, ignorando os primeiros N bytes. Isso significa que o cabeçalho não é contado para o deslocamento de desmontagem: se você fornecer - e10 - o10. A desmontagem começará no byte 10 no arquivo, e isso será dado o deslocamento 10, não 20. A opção - k é fornecida com dois argumentos numéricos separados por vírgulas, o primeiro dos quais é um deslocamento de montagem e o segundo é um número de Bytes para ignorar. Isto irá contar os bytes ignorados para o deslocamento de montagem: o seu uso é suprimir a desmontagem de uma seção de dados que wouldnt conter qualquer coisa que você queria ver de qualquer maneira. Não há erros conhecidos. No entanto, qualquer que você encontrar, com patches, se possível, deve ser enviado para nasm-bugslists. sourceforge. net. Ou para o site de desenvolvedores em nasm. us/ e bem tentar corrigi-los. Sinta-se livre para enviar contribuições e novos recursos também. Você está certo. NASM não suporta ARM. Há uma razão muito simples. ARM assembly não tem nada a ver com qualquer x86 assembly. Uma montagem está vinculada à arquitetura de hardware para a qual foi feita. As instruções de montagem são mnemônicos para o conjunto de instruções do processador real e o conjunto de instruções ARM não tem nada em comum com a instrução x86, porque a arquitetura ARM não é compatível com x86. Qualquer código de assembly escrito para x86 cant ser usado em ARM. É por isso que as linguagens de nível superior (como C) foram desenvolvidas.

No comments:

Post a Comment