Idioma
Ver el código de Desproteger programas de BASIC
Esta vez aplicaremos una funcionalidad que incorpora el emulador ((http://www.virtualdub.org/altirra.html Altirra)) para desproteger de forma rápida y fácil programas creados en Basic o Turbo Basic con protección del listado, esto se vio en ((/Apuntes/TécnicasdeProtecciónparaBASIC Técnicas de protección para Basic)). {{toc numerate=1}} ===Recuperar variables=== **Primero :** Cargamos nuestro programa Basic con altirra, ya sea desde ATR, CAS, H:, etc.. Para este ejemplo usaremos el copiador famoso de casete llamado tapetape del ((http://www.retrobits.net/atari/treasurechest.shtml tesoro del pirata)). Al cargar el programa se ve que tiene la protección de cambiar variables por caracteres inválidos. %%(wacko wrapper=text wrapper_align=center)((https://www.atariware.cl/archivos/altirra/despro01.png))%% **Segundo :** Presionamos **F8** para el modo Debug y aparecerá la consola dejando al emulador parado. %%(wacko wrapper=text wrapper_align=center)((https://www.atariware.cl/archivos/altirra/despro02.png))%% **Tercero :** En la zona de consola donde dice "Altirra >" escribimos lo siguiente : %%(code) .basic_dumpline -c 0 %% Al ejecutar verás el listado del programa por la consola %%(wacko wrapper=text wrapper_align=center)((https://www.atariware.cl/archivos/altirra/despro03.png))%% **Cuarto :** Ahora vamos a restablecer la tabla de variables del programa, con el siguiente comando : %%(code) .basic_rebuildvnt %% %%(wacko wrapper=text wrapper_align=center)((https://www.atariware.cl/archivos/altirra/despro04.png))%% **Quinto :** Ahora volvemos a presionar **F8** para salir del modo Debug y el emulador está corriendo, ahora hacer un LIST %%(wacko wrapper=text wrapper_align=center)((https://www.atariware.cl/archivos/altirra/despro05.png))%% Y verás que el programa tendrá todas sus variable recuperadas. Ahora solo queda guardarlo ya sea desde Basic usando SAVE"D:TAPETAPE.BAS, CSAVE o desde la consola: %%(code) .basic_save g:/tapetape.bas %% para guardarlo directo a nuestro disco duro del PC. ===Recuperar listado=== Cargamos nuestro programa con **LOAD**. Escribimos **LIST** y presionamos **ENTER**. %%(wacko wrapper=text wrapper_align=center)((https://www.atariware.cl/archivos/altirra/despro10.png))%% El emulador no mostrara nada, entonces vamos al debug presionado **F8**. En la consola escribimos los siguientes comandos : %%(code) .basic_rebuildvnt .basic_dumpline -c 0 %% %%(wacko wrapper=text wrapper_align=center)((https://www.atariware.cl/archivos/altirra/despro11.png))%% Veremos en la consola que aparecerá el listado del programa cargado en memoria, el programa original es este : %%(code) 10 GRAPHICS 2 20 POSITION 5,4: ? #6;"ATARIWARE" 30 GOTO 30 32766 END 32767 POKE PEEK(138)+256*PEEK(139)+2,0:SAVE "H:PRUEBA.BAS":NEW %% Como se ve entre la consola y el programa original falta una línea que es **32767** la cual activa la protección para no listar el programa. Ahora necesitamos saber el final de la penúltima línea, que corresponde **32766**. El final de ella esta marcado entre paréntesis que es el fin de la línea en memoria {end **$1DB9**} Con ese dato ahora vamos a eliminar esa línea de la memoria usando el siguiente comando: %%(code) e 1DB9 00 80 %% %%(wacko wrapper=text wrapper_align=center)((https://www.atariware.cl/archivos/altirra/despro12.png))%% Después podemos salir del modo debug presionando otra vez **F8**. Ahora te mostrara el listado y el Basic esta liberado. %%(wacko wrapper=text wrapper_align=center)((https://www.atariware.cl/archivos/altirra/despro13.png))%% %%(info type="note" title="NOTA IMPORTANTE") Si es posible recuperar la línea **32767**. No es importante ya que la linea es muy conocida y única, pero si quieres recuperarla esta explicado en la ayuda de altirra desde su menú **HELP > Contents > Debugging BASIC programs** %%