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