Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Eleкtro en 8 Marzo 2015, 03:32 am



Título: [TUTORIAL] Craquear user-control: Quantum Whale Editor.Net
Publicado por: Eleкtro en 8 Marzo 2015, 03:32 am
Quantum Whale Editor.NET (http://www.qwhale.net/products/editor.htm/) es un set de controles de usuario para WinForms y WPF,
con este user-control se puede implementar de forma sencilla un avanzado editor de sintaxis para VB.Net/C# (entre otros cómo Java y JS), con capacitades de Auto-completado, IntelliSense (para .Net), Regiones .Net, Expansión/Colapso de bloques de código, y más:

(http://uimg.in/images/2015/03/06/cZQ5W3.gif)

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 (para WinForms) en la siguiente url: http://www.qwhale.net/download/editor.htm

Se trata de un instalador MSI, ustedes cómo prefieran, lo instalan o extraen el contenido con el siguiente con la aplicación msiexec (u otro unpacker), en consola:
Código:
msiexec.exe /a "QWhale_Editor_WinForms_2.3.msi" /qb TARGETDIR="%CD% Unpacked"



Nombre del ensamblado:
  • QWhale.Common.dll

Protección:
  • Contador Trial de 30 días.
  • Se muestra una caja de texto informando del estado de los días retsantes.

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

Herramientas necesarias:
  • .Net Reflector + Plugin Reflexil
  • (Opcionalmente) StrongName Tool (sn.exe) del SDK de Microsoft .Net Framework.
  • (Opcionalmente) MSIexec u otro unpacker de MSI (Microsoft Installer)
  • (Opcionalmente) Visual Studio

Empecemos...





1. Veamos lo que sucede al intentar utilizar este user-control en un nuevo proyecto WinForms.

(http://i.imgur.com/eafnuZH.png)

Al iniciar la aplicación (o al arrastrar el user-control a nuestro Form, en tiempo de diseño), nos saldrá este Dialog que nos avisa de que estamos utilizando una versión trial, y los días restantes:

(http://i.imgur.com/hofhLiI.png)

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

(http://i.imgur.com/vLMuXnp.png)

3) Expandimos la Class 'TrialVersion' y encontramos el método 'CheckTrialVersion', el cual obtiene los días restantes y además muestra el Dialog que nos apareció en el paso nº1.

(http://i.imgur.com/87Zwm8B.png)

4) La obtención de los días restantes es muy básica, se basa en el reloj interno del SO (sin mayores protecciones, al modificar la fecha se modifican los días restantes) e indiferentemente de si la versión trial ha expirado o no, se mostrará el diálogo, así que es suficiente con eliminar la llamada a dicho diálogo,
pero además eliminaremos el resto de instrucciones para evitar que se efectuan llamadas innecesarias a otros métodos (ej: 'GetDaysLeft') y así obtendremos una ínfima mejora en el rendimiento del código, por ende, esta sería la representación visual de lo que vamos a hacer:

(http://i.imgur.com/WCnH1iO.png)

5) Seleccionamos TODAS las instrucciones del método 'CheckTrialVersion' que nos aparecen en el Reflexil, menos la última instrucción (opcode RET), pulsamos click derecho y seleccionamos la opción "Delete"

(http://i.imgur.com/08e4SSq.png)

6) Guardamos los cambios en el ensamblado a un nuevo archivo:

(http://i.imgur.com/lW3966Q.png)

7) Debido a que el ensamblado está firmado con un StrongName, al momento de guardar, nos saldrá el siguiente diálogo, donde elegiremos la primera opción:

(http://i.imgur.com/xa8LnEY.png)

FIN.