Arquivo da tag: Engenharia reversa

Repórter Retro 104

Este é o Repórter Retro 104, produzido pela A.R.N.O. (Agência Retropolitana de Notícias)!

Do que falamos?
Trilha sonora

Random Chiptune Mix 8

Antes de sair…

Os episódios do Repórter Retro estão, como todo o conteúdo de Retrópolis, em muitos lugares: Spotify, Google Podcasts, Apple Podcasts, Deezer e, usando nosso feed RSS, qualquer programa para escutar podcasts. Ou então, se você é dazantiga que nem a gente, pode baixar o MP3 deste episódio clicando neste link para escutar mais tarde.

Além disso, não se esqueça de deixar seu comentário aí embaixo; afinal, seu comentário é o nosso salário. No entanto, caso você prefira, entre diretamente em contato conosco.

Um Amiga Dev faz arqueologia de si próprio

Petri Häkkinen, autor do jogo Bloodfest para Amiga, de 1995, resolveu fazer engenharia reversa no próprio jogo. Explica-se: ele não tem mais o código-fonte nem os arquivos das artes (imagens, sons e animações). Só a  ̶p̶i̶r̶a̶t̶a̶r̶i̶a̶ preservação digital garantiu que ao menos o jogo em si esteja disponível.

Nesta sequência de posts ele narra o processo de desvendar os obscuros formatos de empacotamento e codificação usados. E de quebra você, que conhece pouco de desenvolvimento em Amiga, fica sabendo de um poderoso ambiente de programação chamado AMOS.

Ganha um doce quem adivinhar em que jogo este aqui se inspirou.

Repórter Retro Nº 023

O Seu Repórter Retro

Bem-vindos a mais uma edição do Repórter Retro.

Ficha técnica:

  • Número do episódio: 023
  • Participantes: Ricardo, João, Cesar, Giovanni e Juan
  • Duração aproximada: 82 minutos
  • Músicas de fundo: Músicas sortidas
  • Download em ZIP

URLs do podcast:

Não se esqueça de deixar seu comentário aí embaixo; afinal, seu comentário é o nosso salário. No entanto, caso você prefira, entre diretamente em contato conosco.

Engenharia reversa em jogos

Interessado em fazer aquele port daquele jogo mas ainda sem ideia de por onde começar? Então vale a pena visitar a Kroah’s Game Reverse Engineering que, além de um fórum para troca de ideias, há diversas ferramentas já prontas que permitem extrair/visualizar gráficos, mapas e outras informações interessantes de vários jogos, além de algumas explicações bastante interessantes sobre a mecânica deles.

‘ReM’: a arte perdida da arqueologia de código-fonte

CSDb__-_Beach_Head_1a_ReM_V2_by_Reengine___Mod__2016_-500x430

O acesso ao código-fonte também é parte importante do esforço de preservação dos programas; no entanto, na maioria dos casos, este código sumiu, está indisponível ou foi vítima dos problemas de conservação das mídias.

Este post, fruto do esforço conjunto do Vintage is the New Old e do Commodore.Ninja, conta o trabalho dos arqueólogos digitais e do surgimento do ‘ReM’ no mundo do Commodore 64.

Para quem foi apresentado agora ao ‘ReM’, é um acrônimo de Re-engineer and Modify: a partir de um trabalho cuidadoso de decompilação do binário disponível, o código-fonte é analisado e reconstruído de tal maneira que, ao ser compilado, gera o mesmo binário, com a vantagem da documentação.

O Ataque dos Clones – Parte 3

Clones

(Este artigo é uma tradução do original de Jimmy Maher, no blog The Digital Antiquarian.)

⇐ Parte 2

Por outro lado, o Compaq Portable, lançado no início de 1983, também foi bem-sucedido por ser um produto de qualidade excelente e — não obstante as opiniões de J. Flannigan — inovador. Ao lançar um portátil antes da própria IBM, a Compaq provou que clones não precisavam ser cópias desprovidas de originalidade e com apenas um preço menor a título de diferença. Lembrando que “portátil”, em 1983, não significava o mesmo que significa hoje. O Portable era maior e mais pesado (12,5 kg) do que a maioria das máquinas desktop de hoje em dia. Era carregado como uma mala de viagem, não deslizado suavemente para dentro do bolso ou da mochila. Ele nem sequer tinha bateria, ou seja, o profissional em viagem podia exercer sua computação “portátil” apenas no quarto do hotel. Ainda assim, era um projeto extremamente inteligente dadas as limitações técnicas da época: por exemplo, ele podia ser conectado a um monitor maior e com gráficos coloridos em vez do pequeno monitor mono embutido de 9 polegadas — um primeiro passo para as docking stations de hoje em dia.

Por uma feliz coincidência, tudo isto acontecia enquanto algumas trapalhadas de fabricação, junto com a demanda inesperadamente alta pelo recém-lançado IBM PC/XT, tornou os micros da IBM difíceis de conseguir em algumas regiões. Isso fez o Portable decolar como um foguete. Foram vendidas aproximadamente 53.000 unidades no primeiro ano, gerando uma receita de 111 milhões de dólares; um recorde entre start-ups de tecnologia. A IBM, vendo-se na estranha posição de ter que correr atrás, lançou seu próprio portátil no ano seguinte, com menos capacidades mas — e isto foi realmente inacreditável — mais barato que o Compaq Portable.

Ao forçar a toda-poderosa IBM a competir em preço, a Compaq aparentemente virou o mundo de cabeça para baixo. O Portable PC da IBM foi um fracasso comercial, e consequentemente o primeiro sinal de que a IBM começava a perder o controle sobre o monstro que criou. Enquanto isso, a Compaq respondia lançando, no mesmo ano e com grande sucesso, sua própria linha de desktops: os DeskPro.

A Apple atacava a IBM em comerciais melodramáticos e se declarando em batalha do Bem contra o Mal representado pela IBM. Mas a IBM parecia nem notar os “combatentes da liberdade” da Apple. O único concorrente que realmente importava, a única empresa que legitimamente metia-lhes medo, não era a estilosa Apple, mas a quadrada e careta Compaq.

Mas a Compaq estava longe de ser o único problema da IBM. O processo de clonagem só fazia ficar mais e mais fácil, para qualquer um. No primeiro semestre de 1984, duas pequenas empresas chamadas Award Software and Phoenix Technologies anunciaram produtos idênticos quase ao mesmo tempo: BIOS IBM-compatíveis, legalmente produzidos por engenharia reversa, disponíveis para serem licenciados por qualquer um disposto a usá-los para fazer um clone. E muitas empresas fizeram exatamente isso, arremessando a Phoenix e a Award ao topo do que logo se tornou um próspero nicho de mercado (a rivalidade entre as duas logo seria resolvida como empresas civilizadas o fazem: com uma fusão). Com o fim da última dificuldade significativa para fazer um clone, o processo se tornou uma trivialidade, mera questão de juntar um punhado de componentes, o MS-DOS e um BIOS, montar e jogar porta afora; um hobista ambicioso poderia fazer tudo isso em casa, se lhe desse na veneta. Em 1986, clones foram vendidos em quantidade consideravelmente maior que micros da IBM, cujas vendas patinavam.

Nesse mesmo ano, a Intel começou a produzir o microprocessador 80386, a terceira geração das CPUs que moviam os IBM PCs e seus clones. A IBM decidiu esperar antes de fazer uso do novo chip, considerando que o de segunda geração (80286), em uso no bem-sucedido PC/AT de 1984, era poderoso o suficiente para o momento atual. Foi uma péssima decisão, baseada num grau de dominação que a IBM já não possuía. A Compaq sentiu cheiro de oportunidade e fez seu próprio micro baseado no 80386, o DeskPro 386 — o primeiro a usar o novo chip. Até este momento, os clonadores sempre se satisfizeram em deixar a IBM desbravar o caminho em avanços fundamentais como esse. O DeskPro 386 marca a chegada da Compaq, e da indústria de clones em geral, à idade adulta. Não mais ao sabor das ondas deixadas pela IBM, limitando-se a ajustar formatos, preços e capacidades, agora eles estavam determinando os eventos. Já em novembro de 1985, Bill Machrone (colunista da PC Magazine) vislumbrava aonde tudo isso ia levar: “Agora que ela [a IBM] criou o mercado, o mercado não precisa mais da IBM para obter as máquinas.” Vemos aqui a computação corporativa sofrendo sua segunda grande transformação (a primeira foi a transição do CP/M para o MS-DOS). O que antes era um ecossistema da IBM e de seus clones, tornou-se um conjunto de padrões; às vezes menos do que ideais, às vezes acidentais, mas ainda assim um foco de consenso maior do que a IBM ou do que qualquer um. A IBM, segundo Machrone, deveria passar a se ajustar aos padrões ou sofrer as consequências, como todo mundo. Sintomaticamente, é por esta época que a expressão “clone de IBM” começa a desaparecer, dando lugar a “máquina MS-DOS” ou “máquina Intel”.

O rolo compressor Microsoft/Intel (note-se a ausência de “IBM” na designação) acabaria conquistando também os lares. Pelo meio dos anos 80, algumas variedades da espécie já começavam a manifestar características que poderiam atrair o usuário doméstico. Vamos voltar um pouco no tempo e dar uma olhada no mais importante destes, que mencionei em alguns artigos anteriores mas nunca dei-lhe o crédito devido.

Quando o pessoal da Radio Shack, sem ideias sobre o que fazer com a já envelhecida linha TRS-80, olhou para o fracassado IBM PCjr, viu coisas dignas de serem salvas: o chip gráfico de 16 cores e o sintetizador de som de três vozes, ambos muito superiores ao que podia ser encontrado nos irmãos maiores. Por que não clonar esses componentes, colocá-los dentro de um clone de PC razoavelmente convencional, e vender o resultado como o PC perfeito, no qual poderiam ser rodados aplicativos críticos de negócios mas também jogos com a qualidade daqueles do Commodore 64 com os quais as crianças estavam acostumadas? Graças ao bombardeio de mídia que acompanhou o lançamento do PCjr, havia várias editoras de software com estoques imensos de títulos que davam suporte ao audiovisual do PCjr, e muito dispostas a livrar-se deles bem barato. Com esses títulos para dar força, quem sabe aonde as coisas poderiam chegar?

Lançado no final de 1984, o Tandy 1000 foi o primeiro clone de IBM a ter como público-alvo não tanto o escritório, e sim o consumidor. Além das melhorias audiovisuais e preços agressivos, incluía o DeskMate, uma interface de usuário mais ou menos pré-GUI projetada para isolar o usuário das complicações do prompt do MS-DOS e dar acesso rápido a seis aplicações embutidas. Uma ideia brilhante em todos os aspectos, o Tandy 1000 salvou a Radio Shack da irrelevância computacional. Foi também a tábua de salvação de várias editoras que tinham apostado alto no PCjr; John Williams afirma que o Tandy 1000 literalmente salvou a Sierra ao criar um mercado para o King’s Quest, um jogo desenvolvido para o PCjr a um custo astronômico e que vinha tendo vendas ínfimas, dado o fracasso comercial da plataforma. O Tandy 1000 revelou-se tão popular que levou vários fabricantes de jogos a olhar com mais carinho para o mundo bege e chato dos clones. À medida que pegavam o bonde do MS-DOS, muitos tomaram o cuidado de aproveitar as melhorias audiovisuais do Tandy 1000. Milhares de títulos passaram a ter um balão com os dizeres “Tandy graphics support” nas caixas e na propaganda. Tendo garantido o mercado corporativo, o caminho da arquitetura Intel/Microsoft rumo à hegemonia na computação doméstica, mais longo e difícil, começou para valer com o Tandy 1000. Enquanto isso, a pobre IBM sequer tinha o crédito sobre o padrão gráfico que eles mesmos criaram. Derrota total.

Outro sinal do crescimento inexorável do binômio Intel/Microsoft na computação doméstica veio logo depois do Tandy 1000, com a chegada do primeiro jogo a fazer donos de Apples, Atari e Commodores desejarem ter um Tandy 1000, ou até mesmo algum dos seus parentes menos coloridos. Chegaremos lá — juro! — mas antes há outro desvio a fazer.

(Desta vez há um excesso de abundância de fontes. Lista rápida de periódicos: Creative Computing, Janeiro de 1983; Byte, Janeiro de 1983, Novembro de 1984 e Agosto de 1985; PC Magazine, Janeiro de 1987; New York Times, 5 de Novembro de 1982, 26 de Outubro de 1983, 5 de Janeiro de 1984, 1º de Fevereiro de 1984 e 22 de Fevereiro de 1984; Fortune, 18 de Fevereiro de 1985. O livro Computer Wars, de Charles H. Ferguson e Charles R. Morris, é um ótimo estudo a respeito das tribulações da IBM no período. Mais informações sobre os clones fabricados pela EACA podem ser encontradas no site de Terry Stewart. Material sobre as raízes da Compaq em Houston podem ser encontradas na Texas Historical Association. Outros links imprescindíveis estão espalhados ao longo deste artigo.)

Turbo Pascal 3.0 visto “de dentro”

http://pascal.hansotten.com/uploads/msx/stpfloppy.gif

Na página do pessoal da PC Engines (uma empresa suíça especializada em computação embarcada — e obviamente em menor escala) há um artigo bastante interessante sobre as entranhas da geração do código compilado no Turbo Pascal 3.0 com detalhes sobre a estrutura do binário produzido, como o compilador converte alguns comandos e, claro, dicas de como utilizar este conhecimento acelerar seu programa.

( GDMSX no Google+ )

O Ataque dos Clones – Parte 2

Clones

(Este artigo é uma tradução do original de Jimmy Maher, no blog The Digital Antiquarian.)

⇐ Parte 1

O IBM PC foi, do mesmo modo, visualizado como não só um computador, mas o ponto focal de uma família de computação interoperável, em evolução permanente, que poderia viver por anos ou décadas. Três anos depois do lançamento da máquina original, já era possível escolher entre duas CPUs (Intel 8088 ou 80286); entre tamanhos de RAM de 16 KB a 640 KB; entre quatro sistemas de vídeo diferentes (do MDA, apenas texto, ao caro e complexo Professional Graphics Controller); uma grande variedade de periféricos como drives de disquete e HD, backup em fita, modems, interfaces de impressora etc. O denominador comum era um sistema operacional único, o MS-DOS, que rapidamente se estabeleceu como o único dos quatro sistemas suportados pelo PC original que as pessoas realmente usavam. Aqui vemos uma diferença-chave entre o System/360 e o IBM PC, que no futuro causaria grandes dores de cabeça à IBM: ao passo que o SO do primeiro foi desenvolvido internamente, o do segundo pertencia à Microsoft.

A arquitetura do IBM PC diferia da do Apple II no fato do SO residir em disco, sendo copiado para a memória na inicialização, e não em ROM. Mas todo computador precisa ter algum software em ROM. Num IBM PC, esse código se chamava “Basic Input/Output System” (Sistema Básico de Entrada/Saída), ou BIOS, um nome que a IBM pegou emprestado do CP/M. O BIOS era responsável por fazer algumas verificações e configurações de hardware no momento da inicialização, e por carregar o sistema operacional do disco para a memória RAM. Também possuía um conjunto de rotinas bem básicas e de baixo nível para fazer coisas como ler e escrever de discos, receber caracteres do teclado, e exibir texto na tela; estas são chamadas constantemente pelo MS-DOS e, frequentemente, por aplicativos. O BIOS era o único software no IBM PC que a própria IBM escreveu e detinha os direitos. Obviamente, eles não tinham nenhuma intenção de compartilhá-lo com quem quer que fosse. Duas pequenas empresas, Corona Labs e Eagle Computer, simplesmente copiaram o BIOS da IBM, à la Franklin. Levou um dia para a gigante entrar com um processo e obter rendição total e retirada do mercado das duas máquinas, quando elas chegaram ao conhecimento da IBM em 1984.

Bem antes disso, outros candidatos a clonadores, mais sensatos, perceberam que criar uma versão “sala limpa” e compatível do BIOS da IBM seria a chave para criar um clone legal. A ênfase do IBM PC em modularidade e expansibilidade futura fazia com que a máquina fosse um pouco mais tolerante do que o Apple II nesse respeito. Mesmo assim, criar um BIOS IBM-compatível seria um empreendimento técnica e financeiramente arriscado.

À época do lançamento do IBM PC, três executivos da Texas Instruments — Rod Canion, James Harris, and William Murto — namoravam ideias para sair do que eles viam como uma cultura avessa à inovação na TI. Animados para abrir o próprio negócio, eles cogitaram de tudo, desde um restaurante mexicano a gadgets como um bip para achar chaves perdidas. Até que começaram a perguntar o que as pessoas em volta deles na TI queriam nas suas vidas profissionais mas não podiam obter. A resposta veio rápido: um computador pessoal portátil e usável, que executivos e engenheiros pudessem levar em viagem, e barato o suficiente para que o departamento de compras não reclamasse. Outras empresas exploraram o conceito antes, com destaque para a Osborne Computer com seu Osborne 1, mas esses produtos falhavam seriamente no quesito usabilidade. A tela do Osborne 1, por exemplo, tinha míseras 5 polegadas; só de pensar nela, os olhos dos usuários já começavam a doer. Os disquetes armazenavam não mais que 91 KB. A memória era de 64 KB. Todos esses portáteis precursores rodavam CP/M, até então o SO padrão da computação corporativa. Canion, Harris e Murto perceberam que os dias do CP/M estavam contados a partir da adoção do MS-DOS pela IBM. Para evitar depender de um sistema moribundo, eles inicialmente planejaram criar um próprio. Mas ao consultar as grandes editoras de software sobre o interesse em desenvolver para mais uma máquina incompatível, as respostas não foram encorajadoras. Só havia uma saída: o portátil teria que, de alguma maneira, ser compatível com o IBM PC. Se eles conseguissem lançar uma máquina nesses moldes antes que a IBM o fizesse, o retorno poderia ser gigantesco. Ben Rosen, um proeminente investidor de risco, concordou e investiu 2 milhões e meio de dólares para fundar a Compaq Computer Corporation em fevereiro de 1982. Com dinheiro no banco e conexões na indústria, Canion, Harris e Murto estavam convencidos de que poderiam facilmente projetar um portátil compatível a nível de hardware que fosse melhor que qualquer coisa disponível então. Faltava o software.

Dada a reputação de Bill Gates como o Maquiavel da indústria da computação, não nos parece estranho que, segundo alguns jornalistas, ele teria antecipado a ascensão dos clones de PC antes mesmo do lançamento do primeiro IBM PC. Mas não foi esse o caso. Tudo indica que Gates negociou um acordo de licenciamento com a IBM (em vez de vender o MS-DOS) apenas na expectativa de que o próprio IBM PC fosse um grande sucesso, fazendo com que as licenças por unidade fossem mais lucrativas a longo prazo do que uma soma única. Logo, ele ficou tão surpreso quanto qualquer um quando a Compaq e alguns outros candidatos a clonadores solicitaram acordos de licenciamento para suas próprias máquinas. Claro, Gates sendo Gates, não deve ter levado dez minutos para ele perceber todas as implicações do que estava sendo pedido, e começar a assinar contratos que, por sinal, pagavam consideravelmente mais que o da IBM.

O BIOS seria mais difícil — a cabeça-de-praia na qual a invasão do território da Big Blue seria um sucesso ou um fracasso. Sabendo que simplesmente copiar as ROMs da IBM não seria sábio, a Compaq contratou uma equipe de quinze programadores que dedicariam os meses seguintes a criar uma imitação fiel. Um programador que tivesse qualquer familiaridade com o BIOS da IBM era conhecido como “sujo”, e proibido de trabalhar no projeto. Ao invés de confiar nas especificações do BIOS publicadas pela IBM (que poderiam muito bem estar incorretas, seja por negligência ou má-fé), a equipe pegou os 30 mais populares aplicativos do mercado e passaram um pente-fino em um de cada vez, analisando que chamadas à BIOS cada um fazia, e determinando por tentativa e erro que retorno eles esperavam. Os dois programas mais complicados, que viriam a se tornar um tipo de stress-test padrão de compatibilidade tanto dentro como fora da Compaq, foram o Lotus 1-2-3 e o Microsoft Flight Simulator.

Antes do fim do ano, a Compaq estava demonstrando o novo portátil para a imprensa e o público, e trabalhando freneticamente para construir uma rede de vendas forte. Para esta última tarefa eles praticaram um pouco de headhunting e trouxeram da IBM H. L. ”Sparky” Sparks, o homem que montou a rede de vendas do IBM PC. Sabedor de como os varejistas pensavam e do que era importante para eles, Sparks estabeleceu uma margem padrão de 36%, contra os 33% oferecidos pela IBM. Assim, os vendedores tinham motivo para considerar com carinho se um Compaq poderia atingir as expectativas de um consumidor tão bem ou melhor que um da Big Blue.

O primeiro computador da Compaq, o Portable
O primeiro computador da Compaq, o Portable

Esse tipo de realpolitik inteligente tornou-se uma marca registrada da Compaq. Clones anteriores vinham tipicamente de empresas de garagem, e tinham um ar de improvisação.

O pior vizinho de assento possível: um executivo com um Portable.
O pior vizinho de assento possível: um executivo com um Portable.

A Compaq, com seu QG num subúrbio de Houston, era diferente — não só de outros clonadores mas também das empresas estabelecidas do Vale do Silício. A Compaq era mais “velha”, mais conservadora. Ela se interessava em mudar o mundo apenas na medida em que isso significasse mais micros Compaq nas mesas e nos bagageiros dos aviões. “Não acho difícil convencer alguém de 20 anos de idade a alimentar seu ego ‘melhorando’ um IBM”, diz J. Steven Flannigan, líder da equipe de engenharia reversa do BIOS. “Quando você é um quarentão gordo e tem um monte de patentes, nem precisa tentar.” Era uma atitude que gerentes de compras podiam entender. Realmente, a Compaq passou a trazer consigo muito do mesmo sentimento de “apatia confiável” comumente associado à IBM. Não chegaram a ser os primeiros no mercado com um clone de “BIOS limpo” (essa honra pertence à Columbia Data Products, uma empresa bem menos organizada que estaria extinta em 1985), mas foi a Compaq que legitimou o conceito aos olhos da América Corporativa.

Parte 3 ⇒