Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - mickro

#1
Ingeniería Inversa / Re: Cracking .Net AYUDA!
21 Marzo 2009, 07:34 AM
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
#2
Ingeniería Inversa / Re: Cracking .Net AYUDA!
19 Marzo 2009, 13:35 PM
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)
#3
Ingeniería Inversa / Cracking .Net AYUDA!
19 Marzo 2009, 00:23 AM
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