como ofuscar código

Iniciado por colcrt, 28 Octubre 2018, 07:53 AM

0 Miembros y 1 Visitante están viendo este tema.

colcrt

hola, se que de esto ya se ha hablado bastante  :rolleyes: el inconveniente es que llegue tarde  ;D quiero ofuscar un codigo c++ pero por mas que he buscando info en google no encuentro nada util (si lose ese buscador ha perdido calidad ) en fin no quiero que se pongan tristes me pase por aquí quizás alguno de ustedes me pueda colaborar este es el código que quiero ofuscar ya que es el index y la key para generar una contraseña que permite leer unos archivos cifrados

static DWORD s_PackKey[] =
{
420344441,
9763345,
65734421,
101331,
};

static DWORD s_adwSecurityKey[] =
{
7283452,
538433234,
1492,
47548276,
};

AlbertoBSD

Para que ofuscar el codigo, cualquier que pueda decompilar el programa podra obtener las llaves, yo en lo personal prefiria utilizar algun sistema de cifrado asimetrico. pero no se cual sea el fin de tu programa.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

colcrt

es el ejecutable de un juego mmorpg, esta parte es muy susceptible y no quiero que modifiquen el mismo para obtener provecho

elgilun

Tu sistema debería tener en cuenta a qué tipo de "cracker" quieres frustrar. Un programa siempre puede crackearse; si vale la pena, tus claves se leerán.

Muchas veces ni siquiera es necesario leer ni descifrar ninguna clave, sólo tocando un "if" para que la condición sea siempre "true" ya queda resuelto (o provocando un salto que pase de largo de cualquier comprobación).

En términos prácticos, lo que me parece más razonable es dedicar la cantidad de energía "protectora" necesaria para dejar fuera a la mayor cantidad de parásitos.

Puedes verlo como una pirámide, donde abajo está la masa inocente que ni siquiera lo intentaría; después, a medida que subes, te encontrarás con los que intentarán algo y desistirán prontamente; luego los que googlearán con algo más de criterio y malicia; y así subiendo hasta los niveles en que "si vale la pena, se hará". Prevenir el primer escalón es gratis, por el segundo algo hay que pagar, ... y el precio sube en forma exponencial hacia la punta, en que para simples como nosotros se vuelve infinito (No dejes de tener en cuenta el nivel de las otras preguntas y respuestas :).

Después de aclara lo que me parecía moralmente necesario... Hay varios sistemas más o menos prácticos que apuntan a distintos escalones de esa pirámide:

El primero consiste en "jamás poner las claves sin transformar en el código".

Otro: "nunca depender de un puto if".

Y así, lo que google y tu imaginación te dicten.

Conozco un sistema razonable, que deja fuera a una buena proporción de esa pirámide sin un esfuerzo monumental, que consiste en generar un hash del programa compilado y guardar ese mismo hash en el programa. De este modo tu programa puede chequearse a sí mismo y si detecta que fue modificado, bueno, tú sabrás.

La dificultad consiste en guardar ese hash en un espacio predeterminado del ejecutable e ir iterando las compilaciones hasta obtener un ejecutable con el mismo hash que se haya integrado. No es fácil pero tampoco es un proceso eterno, con criterio, práctica y un buen procesador (refrigerado) en unos días lo tienes.

Suerte, y no nos cuentes.


MCKSys Argentina

Cita de: elgilun en 28 Octubre 2018, 17:46 PM
Conozco un sistema razonable, que deja fuera a una buena proporción de esa pirámide sin un esfuerzo monumental, que consiste en generar un hash del programa compilado y guardar ese mismo hash en el programa. De este modo tu programa puede chequearse a sí mismo y si detecta que fue modificado, bueno, tú sabrás.

La dificultad consiste en guardar ese hash en un espacio predeterminado del ejecutable e ir iterando las compilaciones hasta obtener un ejecutable con el mismo hash que se haya integrado. No es fácil pero tampoco es un proceso eterno, con criterio, práctica y un buen procesador (refrigerado) en unos días lo tienes.

El uso de CRC (u otra técnica de hash) para proteger el ejecutanle contra modificaciones es muy antiguo. Suele ser un método efectivo para los newbies, pero no contra un cracker con técnicas medias de reversing.

Si tu juego llega a ser muy usado (o si se pone de moda) es muy probable que te rompan cualquier protección que puedas idear. Incluso usando packers comprados.

Como dijo elgilun:

Cita de: elgilun en 28 Octubre 2018, 17:46 PM
... si vale la pena, tus claves se leerán.

Normalmente, puedes empezar a tratar de hacer las cosas lo más difíciles posibles y luego, si el juego triunfa, colocarle algún packer de pago.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


colcrt

hola,  ::) un packer me serviría contra un editor hexadecimal? o como podria bloquearlo ? tambien contra el cheat engine que es otro que usan muy seguido