Strike Force Cobra (Piranha)
Eletrônica

Strike Force Cobra (Piranha)


Depois de um longo tempo, converti um jogo para disco Beta.


Strike Force Cobra é um jogo 3D isométrico em que se controlam 4 personagens alternadamente. Destaca-se dos demais do gênero - em geral monocromáticos - por ter cores na área de jogo.

A princípio parece ser um programa sem proteção, como de afirma no World of Spectrum. O seu carregador BASIC parece bem simples:

1 CLEAR 24750: INK 7: PAPER 7: POKE 23624,63: CLS : POKE 23692,255
2 LOAD ""CODE
3 LOAD ""CODE 24576
4 RAND USR 24576

Porém esta aparência é falsa, pois as linhas 3 e 4 jamais são executadas. O que parece ser o simples carregamento de uma tela na linha 2, sobrepõe-se sobre a área BASIC pelo código extra que vem junto com este bloco. Se uma tela normal tem tamanho de 6912 bytes, este bloco é de 8366 bytes. Para entender o que se está passando, deve-se carregar o  bloco em endereço 20000 bytes mais adiante, com o comando LOAD ""CODE 36384.

Feito isto, basta analisar com POKE o conteúdo deste bloco, em especial as variáveis de sistema do BASIC. Resumindo os resultados, não há programa BASIC neste bloco, porém foi encontrado um comando digitado no modo imediato:

RAND USR a : STOP

A variável a contém o valor 25000, que não está presente no código mas provavelmente trata-se de um programa para salvar o jogo. A seguir vem o comando STOP, que levanta um estado de erro do BASIC. Analisando o endereço da rotina de tratamento de erros, apontado pela variável ERR_SP (em 23613), finalmente encontrei o endereço verdadeiro do carregador do código de máquina do jogo: 23351. Fazendo o disassembly a partir deste endereço pode-se compreender em fim, o carregamento e a decodificação do código de máquina do jogo.

Este exemplo mostra que a aparente falta de proteção de um jogo é enganadora. Não deixa de ser uma forma de proteger bastante eficaz, pois pode iludir o hacker achando que é só copiar os blocos tipo CODE.

Para baixar os arquivos Hobeta, clique neste link.



loading...

- Menor Valor De Ramtop Com Beta 48/128
Uma das aplicações de compressores como Lerm Code Compressor 1 ou o mais recente ZX7, é liberar espaço para o carregador BASIC. Sobra a pergunta: qual espaço mínimo é necessário para o programa BASIC? Fonte: Wikipédia O endereço de início do...

- Gyroscope V. 2 E Carregador Assembly Para Lerm Cc1
Em postagem anterior sobre adaptação do Gyroscope para Beta 48, mostrei como é possível comprimir bloco de bytes para ter espaço de memória. Mesmo assim, se a interface de drive for uma Beta 128, pode não haver espaço de RAM suficiente para...

- Pyracurse
Mais um jogo para TK90X foi adaptado para a Beta 48, desta vez é Pyracurse. Eu achei algo interessante na listagem do carregador BASIC deste programa. Pyracurse não apresenta nada novo em relação ao tipo de proteção, pois usa a estratégia já...

- Adaptação De Jogos De Fita Para Beta 48 (parte 2)
Na parte 1 dei o ponta-pé inicial falando sobre a correspondência de comandos entre o BASIC do TK90X e o DOS Beta (ou TRDOS). Entretanto estamos longe de termos adaptado algum jogo, pois os arquivos devem ainda ser salvos no disco. As...

- Gyroscope E Lerm Code Compressor 1
Adaptei o jogo Gyroscope do TK90X para a interface Beta 48, que está disponível aqui neste link. Aproveitando esta ocasião, apresento o ótimo Lerm Code Compressor 1 que tanto tem me ajudado nas adaptações dos programas para a Beta 48. O programa...



Eletrônica








.