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:
Protección:
Protección adicional (Packer/Obfuscator):
Herramientas necesarias:
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. |