Cracking .Net AYUDA!

Iniciado por mickro, 19 Marzo 2009, 00:23 AM

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

mickro

Estoy dando mis primeros pasos con el cracking, y para empezar estoy practicando con la plataforma .Net, ya que es mas sencillo.
Bueno, resulta que el me he bajado un componente/control para el .net. Nose si las normas del foro me permiten decir el nombre del producto, pero el software sirve para agregar a tus proyectos la administracion de usuairos, roles, permisos, ect.
Al instalarlo su me copiaron 5 archivos dll. Inmediatamente abri el proyecto de prueba que viene con el instalador para observar que limitacion tenia dicho producto.
Y la unica limitacion que existe es que permite administrar hasta 4 usuarios.
Bien, una vez hecho eso abrí las dll con el Reflector y para mi sorpresa el assembly no estaba ofuscado, esto facilito mucho mi tarea, ya que lo unico que tenia que hacer era buscar el lugar en donde el software hacia el control (de no permitir mas de 4 usuarios) y modificarlo.
Cuando encontre la dichosa linea, vi que era un simple If:



if(context.Runtime.RolesProvider.GetMaxUsers(utcNow) <= ((int) context.PrincipalManager.GetSpecialValue("count")))
{
  VGTrace.WriteLineIf(VGTrace.TraceError, SR.UserCreationNotAllowedMaxUserHasBeenReached);
  status = VGMembershipCreateStatus.TooManyUsers;
  return null;
}



El metodo context.Runtime.RolesProvider.GetMaxUsers() devuelva la cantidad de usuarios permitidos por este trial, en este caso 4 y context.PrincipalManager.GetSpecialValue("count") devuelve la cantidad de usuarios ya ingresados en el sistema.
Luego, utilizando ildasm y ilasm logre modificar ese if y que de la siguiente manera:


if(context.Runtime.RolesProvider.GetMaxUsers(utcNow) <= 0)
{
  VGTrace.WriteLineIf(VGTrace.TraceError, SR.UserCreationNotAllowedMaxUserHasBeenReached);
  status = VGMembershipCreateStatus.TooManyUsers;
  return null;
}



es decir, nunca va a dar verdadero y nunca va a entrar en ese if, que era mi objetivo. En realidad, el verdadero objetivo es que no se ejecute esta linea:


status = VGMembershipCreateStatus.TooManyUsers;


Bien, hasta aqui todo bien....pero no. Resulta que la dll estaba firmada (strong name) y aqui empezo mi calvario.
Con la ayuda de la herramienta CFF Explorer removí el Strong Name Signature, pero de vuelta al visual studio me salio el siguiente error :

No se puede cargar el archivo o ensamblado 'xxxxxx.xxxxx.xxxxxxx, Version=2.8.812.19, Culture=neutral, PublicKeyToken=8e423a8f05ffd0dc' ni una de sus dependencias. La definición del manifiesto del ensamblado no coincide con la referencia al ensamblado. (Excepción de HRESULT: 0x80131040)

Pueden ayudarme???, por donde sigo?
Gracias de antemano.


Mickro

KJD

No conozco mucho de firmas digitales, pero podria ser tambien que checkee el si se ha modificado algo dentro de la dll.

Ahora, no hay algo que emule la firma digital??
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

"Keyboard not Found, press F1 To Continue" WTF???

mickro

SI, checkea si se ha manipulado la dll. Asi funciona, por eso elimine el strong name signature.
Pero al eliminarlo me tira esto cuando algun proyecto intenta cargar la dll :

No se puede cargar el archivo o ensamblado 'xxxxxx.xxxxx.xxxxxxx, Version=2.8.812.19, Culture=neutral, PublicKeyToken=8e423a8f05ffd0dc' ni una de sus dependencias. La definición del manifiesto del ensamblado no coincide con la referencia al ensamblado. (Excepción de HRESULT: 0x80131040)

KJD

Lamentablemente no se tanto sobre c# (y eso que programo con el), lo unico que se me ocurre es ver si se puede emular el strong name para dejarlo como antes.
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

"Keyboard not Found, press F1 To Continue" WTF???

KJD

#4
Perdon por el doble post, pero queria seprar los dos temas.

Si bien no tengo idea sobre strong names, leyendo en google encontre un post que explica como "clonar" el strong name de una dll incluso saltear la verificacion de este. te dejo los links, pero eso si, postea si pudiste hacer algo, y si te animas hace un tutorial ya que no hay muchos por ahi.

http://www.atrevido.net/blog/2004/11/28/Cracking+Code+4+Replacing+A+Strong+Name.aspx

http://groups.google.co.uk/group/microsoft.public.dotnet.security/browse_frm/thread/268e8fab2a7124df?hl=en&lr=&rnum=2&prev=/groups%3Fq%3DRahul%2BKumar%2Bgroup:*security*%26hl%3Den%26lr%3D%26selm%3D%2523UDXSOX0EHA.3820%2540TK2MSFTNGP11.phx.gbl%26rnum%3D2



Saludos y espero noticias  :D
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

"Keyboard not Found, press F1 To Continue" WTF???


KJD

Mintaka comom siempre impecable, es lo mismo que encontre yo pero mejor explicado y en castellano  :D

Ahora no se si servira para framework 3.0-3.5, esperemos que mickro de alguna respuesta si le sirvio.
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

"Keyboard not Found, press F1 To Continue" WTF???

mickro

Primero gracias por ayudarme. Este foro es excelente!.
Ahora bien, les cuento que he tenido novedades, mas tarde o mañana con mas tiempo posteo algo.
Nuevamente gracias a todos!

Mickro