elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Ayuda para modificar una dll .NET
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para modificar una dll .NET  (Leído 10,438 veces)
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Ayuda para modificar una dll .NET
« Respuesta #10 en: 8 Enero 2014, 07:20 am »

Si intentamos registrar con un serial incorrecto, nos aparecerá lo siguiente:


Arrancamos SAE y buscamos métodos interesantes, uno de ellos es el encargado de checkear la licencia:


Este siempre debe devolver true, por lo cual si nopeamos todas las instrucciones y agregamos la mostrada en la imagen, siempre retornará true:


Buscamos por la string registered:


Una vez encontrado lo visualizamos en C#, desconozco este lenguaje pero se me hace muy familiar por Java:


NOTA: Notamos dos métodos muy interesantes, los cuales están marcados con un círculo rojo.

Si hacemos clic en el método WSRegister, veremos que retorna un archivo XML con contenido, siempre y cuando la String text no retorne vacío:


Si nos fijamos text, obtiene el valor de acuerdo a lo que retorna Register, por lo que nos dirigimos a el:


Si lo cambiamos a lenguaje MSIL/CIL veremos lo siguiente:


El método debe retornar una String, y como vimos este debe ser un XML así que Eleкtro me obligó!! a tener que aprender una sintaxis básica de XML junto con .NET miren que lindo, por lo que pongo la siguiente sintaxis (ya explicaré como descubrí que era esa):

Código
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <License>
  3. <UserName>UND3R</UserName>
  4. <CompanyName>UND3R</CompanyName>
  5. <LicenseType>40</LicenseType>
  6. <HardwareId>0123456789</HardwareId>
  7. <MachineName>UND3R</MachineName>
  8. <UserCount>100</UserCount>
  9. </License>

Quedándo más menos así:


Si nos vamos a GetRegistrationData (segundo método encerrado en rojo) veremos la estructura del xml (LicenseType parsea 40 por la licencia más cara  :silbar:):


Ya podremos registrarnos con cualquier serial (siempre y cuando tenga el tamaño correcto):




Link DLL:http://www.mediafire.com/download/bgyfn67ffis0mtj/RapidDesign.dll
Tipo Licencia: Corporate license
(No he probado esta DLL por favor dime si funciona)

Curiosidades:
- El programador se tomó la molestia de crear tan solo dos errores, los cuales eran lanzados cuando se producía una excepción, por lo cual cuando se crackeaba mal se producía una excepción, por lo cual estábamos forzados a recibir el XML.

- El proceso de validación era más menos el siguiente:
Se generaba un hardwareid o fingerprint, este se enviaba junto con la licencia introducida, si coincidían los datos, el servidor retornaba un archivo .xml junto con los datos correctos, ahora la validación de estos se hace por el método CheckLicence.

- Quise hacer el juego más divertido, tras algunas horas encontré lo siguiente:
Código
  1. public static int? CheckTrialDaysLeft(RapidDesignPackage package)
  2. {
  3.   int? result = null;
  4.   int num = 14;
  5.   RapidDesignHelpPage helpPage = package.HelpPage;
  6.   XmlDocument licenseXml = package.RegistrationConfigPage.LicenseXml;
  7.   if (!RegistrationManager.CheckLicense(licenseXml))
  8.   {
  9.       result = new int?(num);
  10.       if ((helpPage.FirstUseDate.HasValue && !string.Equals(helpPage.FirstUseDateVerify, helpPage.GetDateVerifyString(helpPage.FirstUseDate.Value))) || (!helpPage.FirstUseDate.HasValue && !string.IsNullOrEmpty(helpPage.FirstUseDateVerify)) || (helpPage.LastUseDate.HasValue && !string.Equals(helpPage.LastUseDateVerify, helpPage.GetDateVerifyString(helpPage.LastUseDate.Value))) || (!helpPage.LastUseDate.HasValue && !string.IsNullOrEmpty(helpPage.LastUseDateVerify)) || (helpPage.FirstUseDate.HasValue && helpPage.FirstUseDate.Value > DateTime.Now) || (helpPage.LastUseDate.HasValue && helpPage.LastUseDate.Value > DateTime.Now))
  11.       {
  12.           result = new int?(0);
  13.       }
  14.       else
  15.       {
  16.           if (helpPage.FirstUseDate.HasValue)
  17.           {
  18.               int days = (DateTime.Now.Date - helpPage.FirstUseDate.Value.Date).Days;
  19.               result = new int?(Math.Max(0, num - days));
  20.           }
  21.       }
  22.   }
  23.   return result;
  24. }

Destaco la siguiente línea:

Código
  1. int num = 14;
  :silbar:

Eso ha sido todo. Creo que debería funcionar a la perfección, en caso que no por favor coméntame.

Bueno todo esto lo he hecho por que (mi memoría no es una de las mejores pero si recuerda los buenos actos) una vez requería de un script muy puntual, sinceramente creo que era específicamente para mi servidor y tu me ayudaste sin problemas, sin contar que llevas años en el foro y estuvimos en el tiempo de guerra con los moderadores y el-brujo (las cuentas siempre estaban baneadas). Saludos.

No hacía un tutorial hace más de un año uff
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Ayuda para modificar una dll .NET
« Respuesta #11 en: 8 Enero 2014, 07:35 am »

Link DLL:http://www.mediafire.com/download/bgyfn67ffis0mtj/RapidDesign.dll
Tipo Licencia: Corporate license
(No he probado esta DLL por favor dime si funciona)

Maravilloso:


Parece que funciona a la perfección, aunque por otro lado no me permite remover la licencia, solo espero que si pasan esos "14" días la licencia no expire o algo parecido, me imagino que no, pero me da miedo xD

Tu investigación ha sido mucho más profundizada que la mía, claro, tu eres el experto,
Además de haberme ayudado he aprendido bastante con tus explicaciones y las de McKsys, os lo agradezco infinítamente.

Bueno todo esto lo he hecho por que (mi memoría no es una de las mejores pero si recuerda los buenos actos) una vez requería de un script muy puntual, sinceramente creo que era específicamente para mi servidor y tu me ayudaste sin problemas, sin contar que llevas años en el foro y estuvimos en el tiempo de guerra con los moderadores y el-brujo (las cuentas siempre estaban baneadas). Saludos.

No debías tomarte tantas molestias por algo así, de nuevo Gracias,
y por supuesto que sí, si algún día te puedo ayudar con alguno de los lenguajes que conozco no dudes en pedirme ayuda.

Puedes cerrar el post si quieres

Un saludo!
« Última modificación: 8 Enero 2014, 07:39 am por Eleкtro » En línea



.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Ayuda para modificar una dll .NET
« Respuesta #12 en: 8 Enero 2014, 07:43 am »

Lo dejaré abierto por si se expira, en cuanto a la eliminación de la licencia es normal, mira lo siguiente:

Código
  1. // RapidDesignAddIn.Configuration.UcRegistration
  2. private void btnRemoveLicense_Click(object sender, EventArgs e)
  3. {
  4.   RegistrationData registrationData = RegistrationManager.GetRegistrationData(this.LicenseXml);
  5.   string text = string.Empty;
  6.   LicenseType licenseType = registrationData.LicenseType;
  7.   if (licenseType <= LicenseType.MultiUser)
  8.   {
  9.       if (licenseType != LicenseType.SingleUser)
  10.       {
  11.           if (licenseType == LicenseType.MultiUser)
  12.           {
  13.               text = "A multi-user license allows you to transfer license from one computer to another 6 times per year per user.";
  14.           }
  15.       }
  16.       else
  17.       {
  18.           text = "A single-user license allows you to transfer license from one computer to another 6 times per year.";
  19.       }
  20.   }
  21.   else
  22.   {
  23.       if (licenseType != LicenseType.Team)
  24.       {
  25.           if (licenseType == LicenseType.Corporate)
  26.           {
  27.               text = "A corporate license allows you to transfer license from one computer to another unlimited number of times.";
  28.           }
  29.       }
  30.       else
  31.       {
  32.           text = "A team license allows you to transfer license from one computer to another 60 times per year.";
  33.       }
  34.   }
  35.   DialogResult dialogResult = MessageBox.Show(string.Concat(new string[]
  36.   {
  37.       "Removing license allows you to register RapidDesign on another computer.",
  38.       Environment.NewLine,
  39.       text,
  40.       Environment.NewLine,
  41.       Environment.NewLine,
  42.       "Do you want to remove your license from this computer?"
  43.   }), "Removing license key", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
  44.   if (dialogResult == DialogResult.Yes)
  45.   {
  46.       try
  47.       {
  48.           int num;
  49.           if (RegistrationManager.WSUnregister(this.LicenseXml, out num))
  50.           {
  51.               this.LicenseXml = null;
  52.               this.OnProductRegistered(EventArgs.Empty);
  53.               this.ShowRegistrationInformation();
  54.               string str = string.Empty;
  55.               if (registrationData.LicenseType != LicenseType.Corporate)
  56.               {
  57.                   str = string.Concat(new object[]
  58.                   {
  59.                       Environment.NewLine,
  60.                       "You can transfer your license for another: ",
  61.                       num,
  62.                       " times this year."
  63.                   });
  64.               }
  65.               MessageBox.Show("Your license information has been successfuly removed." + str, "Remove license", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  66.           }
  67.           else
  68.           {
  69.               MessageBox.Show("Cannot remove your license. You have probably expired your transfer license limit.", "Remove license", MessageBoxButtons.OK, MessageBoxIcon.Hand);
  70.           }
  71.       }
  72.       catch (Exception ex)
  73.       {
  74.           MessageBox.Show(string.Concat(new string[]
  75.           {
  76.               "There has been an unexpected error while trying to remove RapidDesign license.",
  77.               Environment.NewLine,
  78.               "Please try again later, and if the problem still occours, contact the product vendor.",
  79.               Environment.NewLine,
  80.               Environment.NewLine,
  81.               "The error details: ",
  82.               ex.Message
  83.           }));
  84.       }
  85.   }
  86. }

Un Zoom:

Código
  1. if (registrationData.LicenseType != LicenseType.Corporate)
  2.               {
  3.                   str = string.Concat(new object[]
  4.                   {
  5.                       Environment.NewLine,
  6.                       "You can transfer your license for another: ",
  7.                       num,
  8.                       " times this year."
  9.                   });
  10.               }
  11.               MessageBox.Show("Your license information has been successfuly removed." + str, "Remove license", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  12.           }
  13.           else
  14.           {
  15.               MessageBox.Show("Cannot remove your license. You have probably expired your transfer license limit.", "Remove license", MessageBoxButtons.OK, MessageBoxIcon.Hand);
  16.           }

como vez la versión corporate no se puede eliminiar algo extraño  :rolleyes:

Y se cumplió lo que te comenté nunca se sabe que tan difícil puede ser un programa, aunque este me dio una impresión de que fuese fácil y terminé demorándome más de lo habitual.

Saludos

PD: Experto no soy, aquí considero 3 personas superiores años luz a mi nivel, yo solo pedí la moderación para limpiar el foro (barrendero)  :xD
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Ayuda para modificar una dll .NET
« Respuesta #13 en: 8 Enero 2014, 08:36 am »

Ahora me toca a mi poner un pequeño (muy pequeño) granito de arena...

Para generar una registración automática (desatendida) con la dll craqueada es tan simple como agregar esta clave de registro:

Para VisualStudio 2013:
Código:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\DialogPage\ZUIINFRAspzoo.RapidDesign.Configuration.RapidDesignRegistrationPage]
"LicenseXmlString"="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><License><UserName>UND3R</UserName><CompanyName>UND3R</CompanyName><LicenseType>40</LicenseType><HardwareId>0123456789</HardwareId><MachineName>UND3R</MachineName><UserCount>100</UserCount></License>"

Para VisualStudio 2012:
Código:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\DialogPage\ZUIINFRAspzoo.RapidDesign.Configuration.RapidDesignRegistrationPage]
"LicenseXmlString"="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><License><UserName>UND3R</UserName><CompanyName>UND3R</CompanyName><LicenseType>40</LicenseType><HardwareId>0123456789</HardwareId><MachineName>UND3R</MachineName><UserCount>100</UserCount></License>"

Y así no es necesario tener que introducir la clave maunálmente. Esto me sirve mucho porque mi instalación de VisualStudio es totálmente desatendida.


Además, en otra clave de registro se almacena el número de usos, la primera fecha de uso y la última fecha de uso del plugin, al cambiar cualquiera de las fechas el plugin lo toma como válido y genera el string cifrado, así que he forzado las fechas de expiraciones y el número de usos para verificar si funciona todo corréctamente, y así es, la licencia sigue siendo válida y sin expirar ni nada extraño:



No hay de que preocuparse, funciona bien!

EDITO:
Hice un instalador SFX automático que autoregistra el plugin: https://www.mediafire.com/?rrfrtqq6arn2qdm

Saludos!
« Última modificación: 8 Enero 2014, 09:54 am por Eleкtro » En línea



Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda para modificar .exe de MS-DOS 16-bit para saltar serial
Ingeniería Inversa
pic16f876 5 9,183 Último mensaje 12 Febrero 2010, 15:05 pm
por ThunderCls
Ayuda para Modificar dll y exe en .NET para saltarse la licencia
Ingeniería Inversa
alfavigo 1 2,290 Último mensaje 3 Febrero 2014, 16:48 pm
por MCKSys Argentina
[ayuda] Crear para modificar archivos [ayuda]
Dudas Generales
stifmstr 1 2,473 Último mensaje 5 Febrero 2014, 22:27 pm
por z3nth10n
Ayuda para modificar plantilla de Prestashop
Desarrollo Web
Linton 0 1,882 Último mensaje 27 Febrero 2014, 19:39 pm
por Linton
Ayuda para modificar un .exe
Ingeniería Inversa
Soul9810 5 3,046 Último mensaje 16 Noviembre 2018, 20:29 pm
por Soul9810
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines