[C con Clase] Protección de datos

Programante programante en gmail.com
Mar Dic 30 02:26:35 CET 2008


Samuel Porras escribió:
> Bueno mi duda es la siguiente,
> Si por un casual quiero hacer un programa que tenga unos datos que no
> se puedan modificar, hasta que punto un .exe o una dll creada en C y
> C++ puede estar protegida, se que en las clases esta el protected y el
> private, pero eso no quita que alguien con un editor hexadecimal o
> cualquier programa pueda modificar un exe o una dll, no?
> Sería una buena opción usar una base de datos con esos datos para
> todos los usuarios del programa?
La protección perfecta no existe, dado que les vas a dar el programa
para que puedan usarlo. Lo único que puedes hacer es añadir
dificultades, pero alguien suficientemente determinado, podrá seguir
rompiéndolo.

> Ej: Un juego en red, por ejemplo un personaje tiene 100 de hp y solo
> puede saberse con una formula mediante la vitalidad que tenga ese
> personaje, si esa formula es una función en una dll, puede ser
> modificada por un programa externo y tener 1000hp en vez de sus 100hp
> que le corresponden, verdad?
Este caso es algo diferente. No podrías evitar al 100% que jugando por
su cuenta (tras mucho esfuerzo para modificarte el programa) puedan
cambiar las condiciones del juego. Pero si están jugando en red con
otros clientes originales, esto podría ser detectado.
Por ejemplo, todos los jugadores podrían conocer lso hp de todos los
personajes. Si se lleva la cuenta por parte de todos, verían que sigue
luchando cuando debería haber muerto, detectarían que al atacarle no
queda herido, etc. El jugador podría haber cambiado su programa para
empezar con 1000hp, pero si todos los demás clientes le desconectan
cuando pasa de 900hp (tras perder los 100hp) no le servirá de nada.
El caso más completo de control sería cuando todos los jugadores conocen
toda la partida. De ese modo, no podría "inventarse" que tiene un elixir
por ejemplo. El problema es que si el programa lo conoce todo, el abuso
puede provenir de mostrar los datos que el juego conoce pero el cliente
original no muestra al usuario.
Si en vez de ser un juego entre iguales hay un servidor, el problema se
simplifica mucho ya que las comprobaciones puede realizarlas el
servidor, revelando a los clientes únicamente los datos que deberían
saber. Las partes al conectarse depositan la confianza en el servidor,
que es quien monitoriza que no haya abusos.


> Usando campos private o protected ( son dos cosas diferentes pero
> tienen mucha mas proteccion que un campo public ) estarán esas
> formulas protegidas de curiosos?
Protected y private es algo interno para organizar la programación. Una
vez compilado, da igual que lo hubieras hecho public, protected o private.
> Espero haberme explicado bién.
> Un cordial saludo a toda la lista y muchas grácias.
>
Un saludo. Felices Navidades.





Más información sobre la lista de distribución Cconclase