Criptografia no MSX

Transcrição

Criptografia no MSX
Criptografia no MSX
Resumo
O objetivo deste artigo é demonstrar como é possível proteger jogos no sistema MSX,
através de criptografia de deslocamento da tabela ASCII.
1- Introdução
Devido a facilidade de se editar um programa e nele encontrar as palavras que aparecem
em jogos, como “SALTAR”, “ANDAR”, etc, torna-se possível outra pessoa alterar o seu
programa e modificar o conteúdo das frases dele, inclusive, alterando os créditos para si.
2- Deslocamento de ASCII
Fig. 2.1 - Tabela ASCII do MS-DOS
A tabela acima representa todos os símbolos usados no MS-DOS, padrão brasileiro. O
número das linhas junto com o número da coluna, dá o valor em hexa Por exemplo, a letra
‘a’ minúscula tem o valor hexadecimal 61 (linha ,coluna).
Quando criamos uma string em algum jogo, cada letra da string tem um código ASCII
associado à ela. Por exemplo, a palavra “casa” tem os seguintes códigos em hexadecimal:
c = 63
a = 61
s = 73
a = 61
Portanto, editando-se o jogo em programas como o XTGOLD (para PC) ou Hello (para
MSX), “casa” virá 63 61 73 61 na parte de hexa e “casa” na parte de ASCII.
Assim, fica fácil para ser encontrado e modificado.
Se pegássemos a palavra “casa” e deslocássemos os códigos ASCII dela para cima ou
para baixo, sumiria a palavra casa. Por exemplo, se deslocarmos a tabela para 64 posições
(40 em hexa) para baixo, teríamos o seguinte resultado:
Antes:
c = 63-20
a = 61-20
s = 73-20
a = 61-20
Depois:
# = 23
! = 21
3 = 33
! = 21
Verifica-se que “#!3!” nada tem a ver com “casa”. Logo, nenhum recurso de busca
comum ou o ser humano é capaz de associar “#!3!” a casa.
Para retornar a palavra certa, o programa deverá somar 64 a cada letra da palavra.
Devemos lembrar que esta tabela é cíclica, ou seja, -1 volta a 255, -2 a 254, 256 a 0,
257 a 1, etc. Por exemplo “casa”:
Este procedimento deve ser aplicado somente as strings. Caso você desloque os
bytes do código do programa, ele fatalmente não irá funcionar.
3- Créditos
Este artigo foi escrito por Marcelo Teixeira Silveira, Engenheiro de Sistemas e
Computação, formado pela UERJ.
Home Page: www.marmsx.cjb.net