existe algo llamado CRC, HASH, MD5, firmas digitales.<br>todas esas cosas son para lo que vos queres hacer <br><br><div class="gmail_quote">El 29 de diciembre de 2008 23:26, Programante <span dir="ltr"><<a href="mailto:programante@gmail.com">programante@gmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Samuel Porras escribió:<br>
<div class="Ih2E3d">> Bueno mi duda es la siguiente,<br>
> Si por un casual quiero hacer un programa que tenga unos datos que no<br>
> se puedan modificar, hasta que punto un .exe o una dll creada en C y<br>
> C++ puede estar protegida, se que en las clases esta el protected y el<br>
> private, pero eso no quita que alguien con un editor hexadecimal o<br>
> cualquier programa pueda modificar un exe o una dll, no?<br>
> Sería una buena opción usar una base de datos con esos datos para<br>
> todos los usuarios del programa?<br>
</div>La protección perfecta no existe, dado que les vas a dar el programa<br>
para que puedan usarlo. Lo único que puedes hacer es añadir<br>
dificultades, pero alguien suficientemente determinado, podrá seguir<br>
rompiéndolo.<br>
<div class="Ih2E3d"><br>
> Ej: Un juego en red, por ejemplo un personaje tiene 100 de hp y solo<br>
> puede saberse con una formula mediante la vitalidad que tenga ese<br>
> personaje, si esa formula es una función en una dll, puede ser<br>
> modificada por un programa externo y tener 1000hp en vez de sus 100hp<br>
> que le corresponden, verdad?<br>
</div>Este caso es algo diferente. No podrías evitar al 100% que jugando por<br>
su cuenta (tras mucho esfuerzo para modificarte el programa) puedan<br>
cambiar las condiciones del juego. Pero si están jugando en red con<br>
otros clientes originales, esto podría ser detectado.<br>
Por ejemplo, todos los jugadores podrían conocer lso hp de todos los<br>
personajes. Si se lleva la cuenta por parte de todos, verían que sigue<br>
luchando cuando debería haber muerto, detectarían que al atacarle no<br>
queda herido, etc. El jugador podría haber cambiado su programa para<br>
empezar con 1000hp, pero si todos los demás clientes le desconectan<br>
cuando pasa de 900hp (tras perder los 100hp) no le servirá de nada.<br>
El caso más completo de control sería cuando todos los jugadores conocen<br>
toda la partida. De ese modo, no podría "inventarse" que tiene un elixir<br>
por ejemplo. El problema es que si el programa lo conoce todo, el abuso<br>
puede provenir de mostrar los datos que el juego conoce pero el cliente<br>
original no muestra al usuario.<br>
Si en vez de ser un juego entre iguales hay un servidor, el problema se<br>
simplifica mucho ya que las comprobaciones puede realizarlas el<br>
servidor, revelando a los clientes únicamente los datos que deberían<br>
saber. Las partes al conectarse depositan la confianza en el servidor,<br>
que es quien monitoriza que no haya abusos.<br>
<div class="Ih2E3d"><br>
<br>
> Usando campos private o protected ( son dos cosas diferentes pero<br>
> tienen mucha mas proteccion que un campo public ) estarán esas<br>
> formulas protegidas de curiosos?<br>
</div>Protected y private es algo interno para organizar la programación. Una<br>
vez compilado, da igual que lo hubieras hecho public, protected o private.<br>
<div class="Ih2E3d">> Espero haberme explicado bién.<br>
> Un cordial saludo a toda la lista y muchas grácias.<br>
><br>
</div>Un saludo. Felices Navidades.<br>
<div><div></div><div class="Wj3C7c"><br>
<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br> (\__/) <br>(='.'=)This is Bunny. Copy and paste bunny into your <br>(")_(")signature to help him gain world domination. <br><br>