RosAsm

RosAsm é um assembler (montador ou ajuntador) para X86, de código-fonte livre e aberto.
RosAsm é um IDE com plena integração da assembler, linker, recursos editor, depurador e disassembler. RosASM é autocompilável e guarda todo o código fonte dentro do dos arquivos Executáveis Portáteis (PE). A sintaxe é inspirado pelo NASM, outro montador. Para remover o código fonte dentros do excutáveis basta utilizar a ferramenta SourceKiller distribuída no próprio site do RosAsm.

Foi lançado sob uma licença compatível com a do GNU GPL, adaptada para se conformar com a legislação de softwares de diversos países, inclusive o Brasil, já que quem elaborou a licença do programa foi o advogado paulista Gustavo Trigueiros, que também é colaborador e um dos co-autores do RosAsm.

RosAsm não precisa de includes, cabeçalhos ou protótipos, por usar Sintax Intel simplificada e um grande sistema de macros o que torna o RosAsm um rápido assembler. O Autor original do RosAsm se chama René Tournois que trouxe à comunidade assembly esta maravilhosa ferramenta de programação.

Page oficial do RosAsm
Forum oficial do RosAsm

Compartilhe com a Blogosfera ! These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Reddit
  • Technorati
  • YahooMyWeb
Post Relacionados:

Se você gostou deste post, escreva um comentário e/ou cadastre-se em nosso feed.

Comentários
Eu uso o RosAsm e o SourceKiller para retirar o código fonte dos executáveis.
Ontem sai a nova versão do RosAsm no site a versão: V.2.050a.

As melhorias e inovações são:

* Editor: O armazenamento de alguns caracteres estavam faltando com a ferramenta do Undo, quando as linhas estavam sendo reescritas. Problema corrigido

* O item de Ajuda da Ferramenta de Clippings (Exemplso de asm) estava obsoleto. Atualizamos

* Corrigido um pequeno erro no visualizador de Clippings (estava procurando pelo caractere ‘:’, ainda quando não havia nenhum dentro do exemplo). Problema corrigido.

* Quando especificado o mouse/cursor na primeira linha/coluna do Editor de Fonte, as funções de Ctrl-X / D não estavam assumindo o parágrafo que faltava, localizado na posição 2 do cursor um pouco abaixo da linha de edição. Problema corrigido

* Nova versão do escaneador de bibliotecas.

* Nova versão da caixa de diálogo que mostras os símbolos, funções e dados não utilizados no seu codigo-fonte

* Revisão da lógica dos comando de Rodar (Run), assemblar (Compile) e otimizar (Optimize).

que no RosAsm a fonte está inserida dentro do proprio executavel, asim o usuario nunca as perde.

Para vc ler a fonte, basta vc baixar o RosAsm e abrir os executaveis nele.

Para assemblar, basta vc ir no menu e aperta o item “Compile”, ou “Run” (Que ele assembla e roda)

Esses exesmplos do Test Department nos convertemos para o RosAsm, mas mantivemos os comentarios. São inteiros sem macros.

Algumas pessoas acham mais complicado exemplso maiores sem o uso de macros, outras preferem iniciar o aprendizado com macros. Enfim, é questão de ver qual o melhor para vc aprender.

No RosAsm as macros não são fixas… É o proprio usuario que as define se quiser. Nos exemplso que tenham macros, na realidade, não está em alto nivel, poiis a sintaxe propria de baixo nivel ainda esta disponivel e visivel. (Para isso vc apenas desdobra a macro clicando em cima do nome dela com o botão da direita do oue se indo no menu “Unfold Macro” Ai vc le a sintaxe que é passado ao assembler em baixo nivel.

Para os exemplos que nao tem macro nao há a necessidade de usar essa ferramenta, basta vc seguir o codigo.

Em assembly, o uso de macros é imperativo em projetos de médio ou grande porte. Especialmente para garantir a legibilidade do codigo criado, para garantir a manutenção da fonte caso vc esteja trabalhando com equipes diferentes, para evitar que se cometam erros durante a programação (O que é comum, mesmo em programadores experientes quando lidam com projetos grandes ou médios).

O proprio codigo fonte do RosAms (Que vc le, abrindo uma copia dele- do exe - e o abrindo no proprio rosasm), contem aprosimadamente 4 Mb ou mais de codigo fonte… nele usamos centenas de rotinas em baixo nivel, como usamos macros em outras rotinas para facilitar a manutenção entre os membros da equipe.

No caso do Fasm, é a mesma coisa. Veja no site do JohnFound (Johnny) e baixe a IDE Fresh se quiser, ou veja no Forum do Thomasz (Autor do Fasm) sobre os exemplos que ele dispoe.

O que o Delphi fez ? ASM faz melhor..
e aê ASMers, mês passado me lembro, que baixei o fasm 1.64 e nele veio uns programas feitos em asm(óbvio) pra win32. Onde nestes exemplos tinha um editor de textos simples, o qual seu tamanho é apenas 4Kb. Daí, fiz um programa bem semelhante, só que em Delphi….. A diferença foi enorme.

enquanto em ASM o tamanho foi 4Kb, em Delphi o arquivo chegou a ter 486Kb de tamanho, Vejam que “absurdo” diferença.

Vai a minha pergunta, o que o delphi fez pra “ENTUPIR” o arquivo desse jeito ?

Principalmente, bibliotecas
O Delphi (e outras linguagens, como C/C++, etc) possuem um conjunto grande de bibliotecas linkadas dentro do executável, o que o torna enorme.
Além das bibliotecas, há que reparar que tratamento de erro em geral também incha um executável.
Otimização para tempo também pode aumentar o tamanho do executável. Um bom exemplo é uma biblioteca de tratamento de strings, que vai poder também fazer a conversão de ansi para unicode, que estou montando. Ao invés de usar ifs para valores particulares (como fazem as bibliotecas Windows), pretendo implementar através de uma tabela. Isto fará com que a tabela de conversão de Unicode para ansi tenha 64K, e isto vai ‘inchar’ o meu código (em compensação, *acho* que vou ganhar performance).
Os meus arquivos .obj (com tratamento de erro, orientação a objetos implementada via macros entre outras ‘cositas más’) estão compilando como algo em torno de 4K cada um. Quaisquer produtos que eu faça posteriormente com estas bibliotecas vão partir de um tamanho inicial de 100Kb (em compensação, vão ter tratamento de excessões, alocação e destruição automática de variáveis e objetos, e coisas que um assembly ‘puro’ não fornece).
O editor de textos que vc pegou era extremamente particular; usando a api padrão do windows. Este é o motivo pelo qual ele ficou tão pequeno. Se você adicionar coisas no assembly que o Delphi te dá, então seu executável também vai aumentar um pouco. Talvez não aumente tanto quanto um executável compilado no Delphi ou no C/C++, mais irá aumentar substancialmente.
em que se usa assembler?
Tudo que roda numa CPU é assembly
Então… as respostas acima são muito boas! Vo listar alguns lugares onde se usa assembly atualmente

- Embeded Systems (Sistemas Embarcados) baseados em Microcontroladores Programáveis os vulgos “PIC”, para as mais diversas atividades que necessitem de automação.
- É usado largamente no desenvolvimento de kernels, sejam eles exo, endo, ou microkernel. E.G Windows, Linux. Os bootloaders mais primitivos eram todos em ASM puro, mas hje combinam ASM/C++.

E o mais divertido!!! Eu uso ASM pra brincar de REVERSING, KEYGENING e crackear… Particularmente adoro reversing e entender assembly é essencial pra kem ker crackear, fazer reversing ou criar keygens… É ISSO…. SÓ USA ASSEMBLY KEM É OLD-SCHOOL MESMO!!!

VIVA O MASM32!!!!! i love asm… LoL

A linguagem do montador Assembler é uma linguagem próxima à linguagem da máquina. Próxima, ou seja, significa que NÃO É linguagem de máquina.

Nas décadas de 60 e 70 os computadores de grande porte foram adotados por diversas empresas com grandes quantidades de dados para processamento eletrônico.

A forma mais simples e direta de utilizar essas máquinas de grande porte era utilizar uma linguagem mais próxima à linguagem da própria máquina, ou seja, o “Assembler”.

Muitos programas para resolver problemas comerciais foram escritos em Assembler nessa época (system /360/370). Paralelamente eram escritos programas em Cobol.

O Assembler era útil para resolver problemas específicos como recuperar um “label” (identificação) de fita, por exemplo. Lembre-se que naquela época tínhamos unidades de fita magnética. Coisa típica de mainframe. Então o Assembler resolve problemas que o Cobol, por ser uma linguagem mais de alto nível (mais distante da linguagem de máquina e próxima à linguagem humana), não consegue resolver.

São realmente inúmeras as aplicações específicas do Assembler do mainframe, eu deixaria uma lista enorme para você aqui. Mas para resumir, basta você ter em mente que o Assembler pode manipular os bits enquanto o Cobol funciona bem manipulando bytes.

Em tudo, desde programação de Sistemas Operacionais, como o Windows, o Linux, passando por programas utilitários muito eficientes, além de ser o preferido pelos maus programadores que fazem vírus.

É uma linguagem que deixa o código fonte “limpo”, que faz apenas o que desejamos, sem perder tempo com coisas triviais….

RosAsm, o assembler para ReactOS. Perfeitamente apropriado para iniciantes em linguagem assembly, desde o nível mais básico ao avançado.

A maneira fácil para escrever aplicativos de 32 bits em Assembly.

RosAsm é a continuação do projeto SpAsm, com várias pequenas diferenças:

Declara-se claramente um assembler para ReactOS, e os interesses políticos e éticos que vêm com este e com o GLP são definidos claramente.

O RosAsm atual permanecerá como uma versão em desenvolvimento por algum tempo.

Isso significa, que não estamos voltados para usuários-finais que estejam procurando por um Assembler para Windows gratuito, mas, visando à voluntários que queiram contribuir com os desenvolvimentos e modificações, e/ou queiram ajudar a testar, revisar documentos e assim por diante…

Este programa é totalmente gratuito e com o código-fonte aberto (Ou seja, nós fornecemos o código fonte junto com o aplicativo principal).

RosAsm é um assembler (ajuntador ou montador) específico para 32 bits com uma IDE integrada.

Ao contrário de outras IDEs para Assembly que tendem impressionar o usuário por uma sobrecarga pesada das características e das janelas múltiplas, o existente no RosAsm é tão despido e simples como possível.

A maioria de características avançadas requerem a leitura do manual, como o poderoso Clique-Direito do mouse, no qual você poderá se perder caso não leia a secção Editor de Código fonte.

Para o assembler propriamente dito, o autor (René Tournois) o escreveu com os seguintes objetivos e características:

Produção de aplicativos completos escritos com o assembler.

- Auto-suficiente (standalone).
- Acesso completo de vários aplicativos em um só.
- Tende a incluir todas as ferramentas necessitadas em Asm32 (debugger, linker, disassembler, editores dos recursos, IDE).

Saída rápida. Um aplicativo com 1.000.000 de octetos (1 milhão é consistente para um código escrito em ASM), é construído em apenas 3,16 segundos em um processador K6 com 300 Mhz usndo o win95, desde a análise completa do código-fonte até a contrução do PE (Arquivo executável).

Não há nenhuma relação com a velocidade usual de codificação dada em documentação de outros Assemblers. O que existe no RosAsm é extraordinariamente rápido e conta para poucos quando se trata de cálculos.

Linguagem assembly verdadeiramente pura, sem quaisquer similaridade com estilos típicos de programação em C. (Nada de STRUC, PROC, USOS, LOCALS e assim por diante…).

Tais características de HLL são fáceis de simular com as macros do RosAsm.

O objetivo desta exclusão é permitir aos usuários definirem qual abstração de HLL desejam.

RosAsm remanesce como o mais baixo nivel quanto possível (HLA) para um assembler de Win32, mas o sistema de macros são uma vasta porta aberta aos estilos de escrita do nível elevado (HLL).

Os exemplos para iniciantes estão em Tut 5.

Adicionado às possibilidades de definição de macros pelos usuário, RosAsm pode também incluir Pre_Parsers (Pré-Analisadores) selecionáveis, permitindo sintaxe “Não-Assembly”, bem como “Front-End” externas (Finalizações de apresentação) fariam.

Ajuste completo de instruções de 32 Bits(Acima de Pentium, FPU, MMX, 3D Now!, XMM SSE/SSE2).

Programação específica. - Uma versão específica para cada tipo da aplicação. Esta primeira versão é para a produção das arquivos PE (Executáveis) do ReactOs (É um tipo de Sistema Operacional). Enquanto ReactOs está ainda sob desenvolvimento, você pode usá-lo para as aplicações em Win32 (Win95/98/NT/2000)
Apenas algumas palavras para dizer o que eu significo com específico. Eu uso esta palavra em ambos os dois significados simultaneamente:

Específico como projetado exclusivamente para somente um tipo de produção de arquivo;

Específico como um estilo de programação que faça coisas da maneira mais simples, sem alguma portabilidade ou reinvidicação de reuso. A portabilidade é uma idéia dirigida de forma errada.

A reutilização de rotinas deve ser evitada o tanto quanto possível, pois você codifica muitas informações para pouco uso. Seria o mesmo que você contratasse um caminhão de frutas para transportar apenas um só morango ou uma só laranja.
Produção de aplicativos em uma única etapa (Do código-fonte até o aplicativo final em um único click no botão “Compile” (Compilar))

Facilidade de utilização

Não há tarjas vermelhas (absolutamente). É tudo tão simples como possível (sintaxe reformulada)

Todas as ferramentas necessárias estão em um programa único auto-sustentável.Não há necessidade de nenhum linker externo, debugger, etc.

Arquivos externos necessários para a compilação: Constantes de Win32

Outros arquivos externos: Estruturas e Funções de Win32/ Arquivos de Ajuda
Controle completo para o programador saber o que está ocorrendo

Inexistência de macros internas escondidas (As macros definidas pelo próprio usuário são fáceis e poderosas).

Controle completo do tamanho dos saltos entre as linhas de código.

Não há, de modo algum, recolocação de características (É melhor, assim o usuário desenvolve o sistema do “faça você mesmo”).

Supressão radical de problemas infindáveis com relação à endereçamento de Labels/Símbolos ou de endereços/conteúdo. (Sintaxe reformada, mas, tão tão próxima quanto possível ao do NASM).

Programa gratuito de código-aberto escrito em linguagem assembly para RosAsm, é claro. O que também acaba garantindo que o programa funcione, ao menos, para a auto-compilação de seu próprio código-fonte (Acima de 1.8 Mb - não um demo minúsculo… -).

Escreva um Comentário

(obrigatório)

(obrigatório)