Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: anonimo12121 en 8 Marzo 2011, 00:30 am



Título: Ocultar un variable para programas externos.
Publicado por: anonimo12121 en 8 Marzo 2011, 00:30 am
Hola como toy aprendiendo clases etc...

Y ma dado la curiosidad del private.
He provado para comprovar si era modificable la variable. y oro en private se muede modificar desde el cheat enginer , hay formas para que no se pueda hacer esto?
Código:
#include <iostream>
using namespace std;
class clase{
    private:
        int oro;
    public:
        void addoro(int x);
        int vieworo();
};
void clase::addoro(int x){
    oro=x;
};
int clase::vieworo(){
    return oro;
};
int main(int argc,char *argv[]){
    clase pj;
    pj.addoro(23);
    while(1){
        cout << pj.vieworo() << "\t" << endl;
        cin.get();
    }
    cin.get();
    return 0;
}


Título: Re: Ocultar un variable para programas externos.
Publicado por: ace332 en 8 Marzo 2011, 01:00 am
Citar
                                                                                    Privacy Versus Security
Declaring methods or data private enables the compiler to find programming mistakes before they become bugs. Any programmer worth his consulting fees can find a way around privacy if he wants to. Stroustrup, the inventor of C++, said, "The C++ access control mechanisms provide protection against accident--not against fraud." (ARM, 1990.)
Fuente: Teach Yourself C++ in 21 Days, Second Edition


Título: Re: Ocultar un variable para programas externos.
Publicado por: anonimo12121 en 8 Marzo 2011, 10:57 am
Fuente: Teach Yourself C++ in 21 Days, Second Edition
El google traductor no es muy bueno. Y no lo entendido muy bien.


Título: Re: Ocultar un variable para programas externos.
Publicado por: ace332 en 9 Marzo 2011, 22:02 pm
Bueno, aqui va una traducción un tanto informal:

Citar
                                                                     Privacidad Versus Seguridad


Declarar métodos o datos private habilita al compilador a encontrar errores de programación antes de que estos se conviertan en bugs. Cualquier programador competente puede encontrar la manera de violar esta privacidad si así lo desea. Stroustrup, el inventor del C++, dice, "El mecanismo de control de acceso del C++ provee protección contra accidentes -- no contra fraudes."
Fuente: Aprenda Ud. mismo C++ en 21 dias, Segunda edición.

Un saludo 


Título: Re: Ocultar un variable para programas externos.
Publicado por: Littlehorse en 9 Marzo 2011, 22:43 pm
Hay varios niveles de complejidad que dependen de que tanto queres proteger un programa.
Por ejemplo, ofuscando el código podes lograr que quien quiera utilizar Cheat Engine tenga que primero analizar la lógica que empleaste. Es decir, en lugar de tener una variable 'A' con el dato especifico, tenes la variable 'A', 'B' y 'C' que combinadas de una forma en particular generan el valor necesario para el progreso del programa, utilizando algún tipo de cifrado, etc.
Con la ofuscación te aseguras que por lo menos no puedan hacer trampa los típicos usuarios que utilizan Cheat Engine buscando un valor y luego limitando el rango buscando nuevamente que valores cambiaron. No podrás frenar a los creadores de cheats solo ofuscando el código, pero si podrás frenar a los que podríamos denominar newbies.

Saliendo de la ofuscación, algo coherente y que la mayoría de juegos online hacen es usar un sistema de protección aparte, donde el núcleo es un driver. A grandes rasgos lo que se hace es hookear ciertas funciones y chequear los parámetros para permitir o denegar las operaciones, en pos de poder evitar la modificación de la memoria del juego.
Al hacer eso, para usar algo como Cheat Engine, primero tendrían que saltar el sistema de protección, lo cual complica un poco mas el asunto para los que quieran modificar datos que no corresponde.

Saludos!


Título: Re: Ocultar un variable para programas externos.
Publicado por: anonimo12121 en 10 Marzo 2011, 11:57 am
Ok gracias. ya entendí