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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  [TUTORIAL] Craquear librería Nostalgia.Net (Reflection)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [TUTORIAL] Craquear librería Nostalgia.Net (Reflection)  (Leído 3,783 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
[TUTORIAL] Craquear librería Nostalgia.Net (Reflection)
« en: 5 Marzo 2015, 14:10 pm »

Greatis Nostalgia.Net es una librería comercial desarrollada en C# cuya finalidad es ofrecer un wrapper a distintas funcionalidades de la WinAPI para un manejo más sencillo e intuitivo, es muy útil por ejemplo para desarrollar un KeyLogger o registrar otro tipo de eventos del sistema,
esta librería servirá cómo ejemplo educativo para este tutorial.



Debo aclarar que mi experiencia en la ingeniería inversa es practicamente nula y el nivel de este ejercicio es básico, y quizás se podría haber llevado a cabo de una forma más simple, no lo se, pero a mi me ha servido así.

El tutorial lo dividiré en dos posts, uno orientado a programadores de VB.Net, y el otro a programadores de C#.

Lo primero de todo será descargar la versión trial en la siguiente url: http://www.greatis.com/dotnet/nostalgia/download.html

Nombre del ensamblado:
  • Greatis.Nostalgia.dll

Protección:
  • Se muestra una caja de texto informando de la versión Trial.

Protección adicional (Packer/Obfuscator):
  • Ninguna.

Herramientas necesarias:
  • .Net Reflector + Plugin Reflexil
  • (Opcionalmente) Visual Studio

Empecemos...
« Última modificación: 8 Marzo 2015, 03:42 am por Eleкtro » En línea



Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: [TUTORIAL] Craquear librería Nostalgia.Net (Reflection)
« Respuesta #1 en: 5 Marzo 2015, 14:11 pm »

Versión VB.Net


1. Veamos lo que sucede al intentar utilizar los miembros de esta librería en un nuevo proyecto WinForms, utilizando el siguiente código:

Código
  1. Public Class Form1
  2.  
  3.    Private WithEvents clipboardMonitor As New Greatis.Nostalgia.ClipboardMonitor With
  4.        {
  5.            .Active = True
  6.        }
  7.  
  8.    Private Sub ClipboardMonitor_ClipboardChanged(ByVal sender As Object, ByVal e As EventArgs) _
  9.    Handles clipboardMonitor.ClipboardChanged
  10.  
  11.        Dim data As IDataObject = Clipboard.GetDataObject()
  12.  
  13.        If data.GetDataPresent(DataFormats.Text) Then
  14.            Debug.WriteLine(DirectCast(data.GetData(DataFormats.Text), String))
  15.        End If
  16.  
  17.    End Sub
  18.  
  19. End Class

Al iniciar la aplicación, nos saldrá este molesto aviso:


2) Abrimos la aplicación .Net Reflector, activamos el plugin Reflexil (Tools > Reflexil), cargamos la librería Greatis.Nostalgia.dll, expandimos el namespace Greatis.Nostalgia,
y encontramos dos Classes con nombres muy intuitivos, que nos señalan la funcionalidad de la licencia:


3) Expandimos la Class NostalgiaLP y encontramos la función GetLicense, la cual muestra el MessageBox que nos apareció en el paso nº1.


4) Nuestra intención será reemplazar el código para eliminar todas las instrucciones menos la del valor de retorno:


5) Cómo la Class NostalgiaLicense es un miembro con visibilidad privada, para poder reemplazar el código mediante Reflexil primero debemos modificar la visivilidad de dicha class para hacerla pública:


6) Para que el cambio de visibilidad del miembro tenga efecto, debemos guardar los cambios efectuados en el ensamblado a un nuevo archivo.


7) Cargamos el ensamblado parcheado en .Net reflector con el cambio de visibilidad de la class NostalgiaLicense, nos dirigimos de nuevo al método GetLicense en la Class NostalgiaLP,
seleccionamos TODAS las instrucciones, pulsamos click derecho para abrir el menú del Reflexil y seleccionamos la opción "Replace all with code"


8) Nos aparecerá un Form de edición con el código reemplazable,
y lo que debemos hacer ahora es modificar el valor de retorno del método GetLicense para devolver una nueva instancia de la Class NostalgiaLicense, pasándole el parámetro "granted" al Constructor de la Class:




Tras compilar la modificación, así es cómo quedarán los OpCodes del método GetLicense:


9) Por último, guardamos los cambios en el ensamblado a un nuevo archivo cómo hicimos en el paso nº6.

Ya hemos finalizado de bypassear esta protección que solo consistía en eliminar la llamada al mensaje de texto, ahora la librería no molestará con ningun aviso.
En línea



Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: [TUTORIAL] Craquear librería Nostalgia.Net (Reflection)
« Respuesta #2 en: 5 Marzo 2015, 14:11 pm »

Versión C#


1. Veamos lo que sucede al intentar utilizar los miembros de esta librería en un nuevo proyecto WinForms, utilizando el siguiente código:

Código
  1. using Microsoft.VisualBasic;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Diagnostics;
  7. public class Form1
  8. {
  9. private Greatis.Nostalgia.ClipboardMonitor withEventsField_clipboardMonitor = new Greatis.Nostalgia.ClipboardMonitor { Active = true };
  10.  
  11. private Greatis.Nostalgia.ClipboardMonitor clipboardMonitor {
  12. get { return withEventsField_clipboardMonitor; }
  13. set {
  14. if (withEventsField_clipboardMonitor != null) {
  15. withEventsField_clipboardMonitor.ClipboardChanged -= ClipboardMonitor_ClipboardChanged;
  16. }
  17. withEventsField_clipboardMonitor = value;
  18. if (withEventsField_clipboardMonitor != null) {
  19. withEventsField_clipboardMonitor.ClipboardChanged += ClipboardMonitor_ClipboardChanged;
  20. }
  21. }
  22. }
  23.  
  24. private void ClipboardMonitor_ClipboardChanged(object sender, EventArgs e)
  25. {
  26. IDataObject data = Clipboard.GetDataObject();
  27.  
  28. if (data.GetDataPresent(DataFormats.Text)) {
  29. Debug.WriteLine((string)data.GetData(DataFormats.Text));
  30. }
  31. }
  32. }
  33.  
  34. //=======================================================
  35. //Service provided by Telerik (www.telerik.com)
  36. //=======================================================

Al iniciar la aplicación, nos saldrá este molesto aviso:


2) Abrimos la aplicación .Net Reflector, activamos el plugin Reflexil (Tools > Reflexil), cargamos la librería Greatis.Nostalgia.dll, expandimos el namespace Greatis.Nostalgia,
y encontramos dos Classes con nombres muy intuitivos, que nos señalan la funcionalidad de la licencia:


3) Expandimos la Class NostalgiaLP y encontramos la función GetLicense, la cual muestra el MessageBox que nos apareció en el paso nº1.


4) Nuestra intención será reemplazar el código para eliminar todas las instrucciones menos la del valor de retorno:


5) Cómo la Class NostalgiaLicense es un miembro con visibilidad privada, para poder reemplazar el código mediante Reflexil primero debemos modificar la visivilidad de dicha class para hacerla pública:


6) Para que el cambio de visibilidad del miembro tenga efecto, debemos guardar los cambios efectuados en el ensamblado a un nuevo archivo.


7) Cargamos el ensamblado parcheado en .Net reflector con el cambio de visibilidad de la class NostalgiaLicense, nos dirigimos de nuevo al método GetLicense en la Class NostalgiaLP,
seleccionamos TODAS las instrucciones, pulsamos click derecho para abrir el menú del Reflexil y seleccionamos la opción "Replace all with code"


8) Nos aparecerá un Form de edición con el código reemplazable,
y lo que debemos hacer ahora es modificar el valor de retorno del método GetLicense para devolver una nueva instancia de la Class NostalgiaLicense, pasándole el parámetro "granted" al Constructor de la Class:




Tras compilar la modificación, así es cómo quedarán los OpCodes del método GetLicense:


9) Por último, guardamos los cambios en el ensamblado a un nuevo archivo cómo hicimos en el paso nº6.

Ya hemos finalizado de bypassear esta protección que solo consistía en eliminar la llamada al mensaje de texto, ahora la librería no molestará con ningun aviso.
En línea



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

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: [TUTORIAL] Craquear librería Nostalgia.Net (Reflection)
« Respuesta #3 en: 5 Marzo 2015, 18:48 pm »

Excelente tutorial  ;-) y pensar que al principio solo pedías ayuda y mírate ahora eres un experto, te felicito  ;-) sigue así, creo que sepas depurar C# te potencia mucho con tus habilidades de programación en C#, te felicito amigo  ;-)
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: [TUTORIAL] Craquear librería Nostalgia.Net (Reflection)
« Respuesta #4 en: 5 Marzo 2015, 21:44 pm »

Que pelota :P, .:UND3R:., sabes que soy un pollito recien nacido en comparación con el resto que manejais mejor esta temática, jaja, yo solo me defiendo un poco cuando se trata de ing. inversa mediante Reflection, me pones un binario de C/C++ y ya no se que hacer, ¡pero te agradezco mucho los ánimos!, intentaré aprender a craquear poco a poco... que con saber depurar .Net no es suficiente, ni de lejos.

Gracias.

Saludos!
« Última modificación: 5 Marzo 2015, 22:34 pm por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tutorial de la librería Ming para PHP
PHP
дٳŦ٭ 4 3,457 Último mensaje 22 Agosto 2007, 01:20 am
por дٳŦ٭
[Tutorial] Introducción a System.Reflection « 1 2 »
.NET (C#, VB.NET, ASP)
[D4N93R] 15 14,800 Último mensaje 7 Junio 2010, 07:05 am
por raul338
[TUTORIAL]Compilar la librería Qt estáticamente bajo Windows. « 1 2 3 »
Programación C/C++
avesudra 20 18,053 Último mensaje 20 Agosto 2016, 01:06 am
por avesudra
[TUTORIAL] Craquear user-control: Quantum Whale Editor.Net
Ingeniería Inversa
Eleкtro 0 3,618 Último mensaje 8 Marzo 2015, 03:32 am
por Eleкtro
(Petición) Tutorial sobre la librería LWJGL3
Java
Seyro97 4 3,394 Último mensaje 2 Abril 2015, 04:12 am
por Seyro97
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines