Controlar la pirateria de mi software

02/01/2009 - 13:04 por Gilbert | Informe spam
Saludos y buen año 2009 para todos

Quisiera si se puede me dijeran alguna tecnica para hacer mas dificil la
pirateria de un software desarrollado en C#.NET para una aplicacion que se
va a distribuir a varias compañias.

Preguntas similare

Leer las respuestas

#16 Gilbert
03/01/2009 - 17:43 | Informe spam
"RFOG" escribió en el mensaje
news:
No saltar cuando se detecta, sino luego, en medio de un algoritmo jodido y
complicado y dejando "enfalustraos" los dispositivos a los cuales se está
sirviendo para forzar un reinicio...

Poner una "trampa": un código que parece que es la protección pero que no
lo es...

Utilizar el propio ejecutable sin modificar como "tamper".

Estos puntos van un poco más allá de lo que viene en el Wiley:
http://geeks.ms/blogs/rfog/archive/...wiley.aspx

http://www.amazon.com/Reversing-Sec...0764574817





Muchisimas gracias RFOG


Es un buen punto de entrada para principiantes (ojo, principiantes en
ingeniería inversa, no principiantes a secas).





No hay problema, de hecho soy tambien principiante hasta en el propio C#,

menos mal que tu no te molestas como SoftJaen :)
Respuesta Responder a este mensaje
#17 JM
06/01/2009 - 17:43 | Informe spam
mmm yo usé en algún momento un soft para decompilar vb6... no es accesible
para todos pero sí que existe software para decompilar

Y mis 20 centavos:

Creo que la mejor forma de proteger tu producto no es utilizar una sola
técnica de protección, si se meten a la casa que sea por que abrieron un
boquete en la pared y no por que olvidaste cerrar una "ventana" o puerta.

Para la empresa en que trabajaba, se contrató una empresa que se encargaba
de proteger apps, y lo que pude entender que hicieron fue lo siguiente:

16 métodos métodos que "activaban la aplicación" aunque en realidad eran 4
los reales
el primer método recibía una cadena 128 carácteres (el serial) y en base a
una serie de comprobaciones determinaba
si el serial era o no válido, una vez determinado que sí, llamaba a el
siguiente método (que podía ser o no bueno) pasandole como parámetro
el checksum de su ultima comprobación hasta llamar los 16 métodos.

y en puntos aleatorios de la app habían métodos para revisar cosas al azar,
pj, el checksum de alguna dll donde se guardaban algunos de los métodos de
validación
o directamente llamar al código de activación (los 16) con un serial que se
sabía que era malo.


es lo que ahora me recuerdo que hacía.


"Eugenio Serrano [MVP]" <eserrano [at] solidq.com> escribió en el mensaje de
noticias:
Hay varios productos. La version gratuita que viene con VS no hace mucha
diferencia http://msdn.microsoft.com/en-us/library/ms227255(VS.80).aspx,
pero con un buen ofuscador, tu codigo puede pasar de algo asi...

for (i=0; i < M.length; i++){
// Adjust position of clock hands
var ML=(ns)?document.layers['nsMinutes'+i]:ieMinutes[i].style;
ML.top=y[i]+HandY+(i*HandHeight)*Math.sin(min)+scrll;
ML.left=x[i]+HandX+(i*HandWidth)*Math.cos(min);
}

A algo asi:

for(O79=0;O79<l6x.length;O79++){var
O63=(l70)?document.layers["nsM\151\156u\164\145s"+O79]:ieMinutes[O79].style;O63.top=l61[O79]+O76+(O79*O75)*Math.sin(O51)+l73;O63.left=l75[O79]+l77+(O79*l76)*Math.cos(O51);}

Podrias convinarlo con alguna rutina de proteccion escrita en C++ no
manejado, y que tu codigo "sensible" llame a esta rutina por medio de
interop para hacer alguna verificacion

Realmente se hace complicado de seguir un codigo asi, pero ten en cuenta
que un buen hacker te hace ingeniera reversa directamente de los bits, asi
que para alguien que realmente quiera hackear tu codigo, se lo dejamos
facil...

Yo diria que hagas una buena repasada a todos los ofuscadores que hay en
el mercado, ya que no solo se limitan a ofuscar tu codigo, sino que
algunos permiten hacer un rebuild de tus librerias haciendo mas complicado
el proceso...

Jejeje, como extraño VB6 que hasta el dia de la fecha no se puede
descompilar :-), pero bueno, como dice un amigo, no todo se puede en la
vida...

Saludos,
Eugenio Serrano
MVP ASP.Net
Solid Quality Mentors


Respuesta Responder a este mensaje
#18 RFOG
06/01/2009 - 17:55 | Informe spam
Eso le cuesta a un profesional de la ingeniería inversa menos de una
hora...


On Tue, 06 Jan 2009 17:43:09 +0100, JM wrote:

mmm yo usé en algún momento un soft para decompilar vb6... no es
accesible para todos pero sí que existe software para decompilar

Y mis 20 centavos:

Creo que la mejor forma de proteger tu producto no es utilizar una sola
técnica de protección, si se meten a la casa que sea por que abrieron un
boquete en la pared y no por que olvidaste cerrar una "ventana" o puerta.

Para la empresa en que trabajaba, se contrató una empresa que se
encargaba de proteger apps, y lo que pude entender que hicieron fue lo
siguiente:

16 métodos métodos que "activaban la aplicación" aunque en realidad eran
4 los reales
el primer método recibía una cadena 128 carácteres (el serial) y en base
a una serie de comprobaciones determinaba
si el serial era o no válido, una vez determinado que sí, llamaba a el
siguiente método (que podía ser o no bueno) pasandole como parámetro
el checksum de su ultima comprobación hasta llamar los 16 métodos.

y en puntos aleatorios de la app habían métodos para revisar cosas al
azar, pj, el checksum de alguna dll donde se guardaban algunos de los
métodos de validación
o directamente llamar al código de activación (los 16) con un serial que
se sabía que era malo.


es lo que ahora me recuerdo que hacía.


"Eugenio Serrano [MVP]" <eserrano [at] solidq.com> escribió en el
mensaje de noticias:
Hay varios productos. La version gratuita que viene con VS no hace
mucha diferencia
http://msdn.microsoft.com/en-us/library/ms227255(VS.80).aspx, pero con
un buen ofuscador, tu codigo puede pasar de algo asi...

for (i=0; i < M.length; i++){
// Adjust position of clock hands
var ML=(ns)?document.layers['nsMinutes'+i]:ieMinutes[i].style;
ML.top=y[i]+HandY+(i*HandHeight)*Math.sin(min)+scrll;
ML.left=x[i]+HandX+(i*HandWidth)*Math.cos(min);
}

A algo asi:

for(O79=0;O79<l6x.length;O79++){var
O63=(l70)?document.layers["nsM\151\156u\164\145s"+O79]:ieMinutes[O79].style;O63.top=l61[O79]+O76+(O79*O75)*Math.sin(O51)+l73;O63.left=l75[O79]+l77+(O79*l76)*Math.cos(O51);}

Podrias convinarlo con alguna rutina de proteccion escrita en C++ no
manejado, y que tu codigo "sensible" llame a esta rutina por medio de
interop para hacer alguna verificacion

Realmente se hace complicado de seguir un codigo asi, pero ten en
cuenta que un buen hacker te hace ingeniera reversa directamente de los
bits, asi que para alguien que realmente quiera hackear tu codigo, se
lo dejamos facil...

Yo diria que hagas una buena repasada a todos los ofuscadores que hay
en el mercado, ya que no solo se limitan a ofuscar tu codigo, sino que
algunos permiten hacer un rebuild de tus librerias haciendo mas
complicado el proceso...

Jejeje, como extraño VB6 que hasta el dia de la fecha no se puede
descompilar :-), pero bueno, como dice un amigo, no todo se puede en la
vida...

Eugenio Serrano
MVP ASP.Net
Solid Quality Mentors









Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación
Quien mal anda, mal acaba.
Respuesta Responder a este mensaje
#19 JM
06/01/2009 - 19:24 | Informe spam
Sí, no es un método infalible, pero todo depende de a qué mercado esté
orientado tu software, si será para las masas
pues es demasiado poco. pero si se lo darás únicamente a 1 cliente, pues
aunque no es suficiente, sí que ayuda un poco :)


"RFOG" escribió en el mensaje de
noticias:
Eso le cuesta a un profesional de la ingeniería inversa menos de una
hora...


On Tue, 06 Jan 2009 17:43:09 +0100, JM wrote:

mmm yo usé en algún momento un soft para decompilar vb6... no es
accesible para todos pero sí que existe software para decompilar

Y mis 20 centavos:

Creo que la mejor forma de proteger tu producto no es utilizar una sola
técnica de protección, si se meten a la casa que sea por que abrieron un
boquete en la pared y no por que olvidaste cerrar una "ventana" o puerta.

Para la empresa en que trabajaba, se contrató una empresa que se
encargaba de proteger apps, y lo que pude entender que hicieron fue lo
siguiente:

16 métodos métodos que "activaban la aplicación" aunque en realidad eran
4 los reales
el primer método recibía una cadena 128 carácteres (el serial) y en base
a una serie de comprobaciones determinaba
si el serial era o no válido, una vez determinado que sí, llamaba a el
siguiente método (que podía ser o no bueno) pasandole como parámetro
el checksum de su ultima comprobación hasta llamar los 16 métodos.

y en puntos aleatorios de la app habían métodos para revisar cosas al
azar, pj, el checksum de alguna dll donde se guardaban algunos de los
métodos de validación
o directamente llamar al código de activación (los 16) con un serial que
se sabía que era malo.


es lo que ahora me recuerdo que hacía.


"Eugenio Serrano [MVP]" <eserrano [at] solidq.com> escribió en el
mensaje de noticias:
Hay varios productos. La version gratuita que viene con VS no hace
mucha diferencia
http://msdn.microsoft.com/en-us/library/ms227255(VS.80).aspx, pero con
un buen ofuscador, tu codigo puede pasar de algo asi...

for (i=0; i < M.length; i++){
// Adjust position of clock hands
var ML=(ns)?document.layers['nsMinutes'+i]:ieMinutes[i].style;
ML.top=y[i]+HandY+(i*HandHeight)*Math.sin(min)+scrll;
ML.left=x[i]+HandX+(i*HandWidth)*Math.cos(min);
}

A algo asi:

for(O79=0;O79<l6x.length;O79++){var
O63=(l70)?document.layers["nsM\151\156u\164\145s"+O79]:ieMinutes[O79].style;O63.top=l61[O79]+O76+(O79*O75)*Math.sin(O51)+l73;O63.left=l75[O79]+l77+(O79*l76)*Math.cos(O51);}

Podrias convinarlo con alguna rutina de proteccion escrita en C++ no
manejado, y que tu codigo "sensible" llame a esta rutina por medio de
interop para hacer alguna verificacion

Realmente se hace complicado de seguir un codigo asi, pero ten en
cuenta que un buen hacker te hace ingeniera reversa directamente de los
bits, asi que para alguien que realmente quiera hackear tu codigo, se
lo dejamos facil...

Yo diria que hagas una buena repasada a todos los ofuscadores que hay
en el mercado, ya que no solo se limitan a ofuscar tu codigo, sino que
algunos permiten hacer un rebuild de tus librerias haciendo mas
complicado el proceso...

Jejeje, como extraño VB6 que hasta el dia de la fecha no se puede
descompilar :-), pero bueno, como dice un amigo, no todo se puede en la
vida...

Eugenio Serrano
MVP ASP.Net
Solid Quality Mentors









Microsoft Visual C++ MVP
==> Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación
> Quien mal anda, mal acaba.

Respuesta Responder a este mensaje
#20 JM
06/01/2009 - 19:25 | Informe spam
Ah y eso fue lo que yo logré ver que hicieron, o al menos que entendí en el
código :P

una parte se ejecutaba en otra sección de memoria ¿Protegida? según decían
ellos, que se encargaba de revisar varias cosas de la app (no sé qué
realmente )


"RFOG" escribió en el mensaje de
noticias:
Eso le cuesta a un profesional de la ingeniería inversa menos de una
hora...


On Tue, 06 Jan 2009 17:43:09 +0100, JM wrote:

mmm yo usé en algún momento un soft para decompilar vb6... no es
accesible para todos pero sí que existe software para decompilar

Y mis 20 centavos:

Creo que la mejor forma de proteger tu producto no es utilizar una sola
técnica de protección, si se meten a la casa que sea por que abrieron un
boquete en la pared y no por que olvidaste cerrar una "ventana" o puerta.

Para la empresa en que trabajaba, se contrató una empresa que se
encargaba de proteger apps, y lo que pude entender que hicieron fue lo
siguiente:

16 métodos métodos que "activaban la aplicación" aunque en realidad eran
4 los reales
el primer método recibía una cadena 128 carácteres (el serial) y en base
a una serie de comprobaciones determinaba
si el serial era o no válido, una vez determinado que sí, llamaba a el
siguiente método (que podía ser o no bueno) pasandole como parámetro
el checksum de su ultima comprobación hasta llamar los 16 métodos.

y en puntos aleatorios de la app habían métodos para revisar cosas al
azar, pj, el checksum de alguna dll donde se guardaban algunos de los
métodos de validación
o directamente llamar al código de activación (los 16) con un serial que
se sabía que era malo.


es lo que ahora me recuerdo que hacía.


"Eugenio Serrano [MVP]" <eserrano [at] solidq.com> escribió en el
mensaje de noticias:
Hay varios productos. La version gratuita que viene con VS no hace
mucha diferencia
http://msdn.microsoft.com/en-us/library/ms227255(VS.80).aspx, pero con
un buen ofuscador, tu codigo puede pasar de algo asi...

for (i=0; i < M.length; i++){
// Adjust position of clock hands
var ML=(ns)?document.layers['nsMinutes'+i]:ieMinutes[i].style;
ML.top=y[i]+HandY+(i*HandHeight)*Math.sin(min)+scrll;
ML.left=x[i]+HandX+(i*HandWidth)*Math.cos(min);
}

A algo asi:

for(O79=0;O79<l6x.length;O79++){var
O63=(l70)?document.layers["nsM\151\156u\164\145s"+O79]:ieMinutes[O79].style;O63.top=l61[O79]+O76+(O79*O75)*Math.sin(O51)+l73;O63.left=l75[O79]+l77+(O79*l76)*Math.cos(O51);}

Podrias convinarlo con alguna rutina de proteccion escrita en C++ no
manejado, y que tu codigo "sensible" llame a esta rutina por medio de
interop para hacer alguna verificacion

Realmente se hace complicado de seguir un codigo asi, pero ten en
cuenta que un buen hacker te hace ingeniera reversa directamente de los
bits, asi que para alguien que realmente quiera hackear tu codigo, se
lo dejamos facil...

Yo diria que hagas una buena repasada a todos los ofuscadores que hay
en el mercado, ya que no solo se limitan a ofuscar tu codigo, sino que
algunos permiten hacer un rebuild de tus librerias haciendo mas
complicado el proceso...

Jejeje, como extraño VB6 que hasta el dia de la fecha no se puede
descompilar :-), pero bueno, como dice un amigo, no todo se puede en la
vida...

Eugenio Serrano
MVP ASP.Net
Solid Quality Mentors









Microsoft Visual C++ MVP
==> Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación
> Quien mal anda, mal acaba.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida