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:

Código:
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:

Código:
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:


Código:
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