CODE VIRTUALIZER | RESUMEN  
 

Última Versión: 2.2 | Última Actualización: 2.2.2.0 | Actualizado Día: 17-Feb-2017




Code Virtualizer es un potente sistema de ofuscación de código para aplicaciones Windows, Linux y Mac OS X que ayuda a los desarrolladores de software a proteger sus áreas de código más importantes contra la ingeniería inversa, con una fuerte ofuscación basada en la virtualización del código.

Code Virtualizer convertirá su código original (formado por instrucciones Intel x86/x64) en Instrucciones Virtuales que serán sólo entendidas e interpretadas por una máquina virtual interna. Esas Instrucciones Virtuales y la Máquina Virtual interna generada, serán únicas para cada aplicación protegida, evitando un ataque general sobre Code Virtualizer.

Code Virtualizer puede proteger las áreas de código más importantes en archivos nativos PE/ELF/Mach-O (como archivos ejecutables/EXEs, servicios de sistema, DLLs, OCXs, controles ActiveX, objectos compartidos, protectores de pantalla y drivers de dispositivos).




Cuando se esté creando una aplicación, el Compilador compilará su código fuente en distintos ficheros objetos compuestos de código máquina. Estos ficheros objetos serán enlazados en una fase posterior para crear la aplicación final.



Figura 1: Compilación del código fuente

Cuando un atacante intente atacar una aplicación compilada, usará un descompilador para ayudarle a transformar el código máquina en un lenguaje más fácil de entender, como lenguaje ensamblador u otro lenguaje de más alto nivel. Una vez que se haya transformado el código máquina a un lenguaje más fácil de entender, el atacante empezará su estudio sobre la aplicación a atacar.



Figura 2: Fases en la descompilación de una aplicación

Cuando el atacante haya recolectado información suficiente sobre la aplicación a atacar, podrá modificar la ejecución de la aplicación compilada tal y como desee. Por ejemplo, un atacante podría interceptar la rutina que chequea si una aplicación está o no registrada y forzar a la aplicación a que se mantenga registrada continuamente.




La virtualización de código consiste en la transformación de código binario para un procesador específico en código binario totalmente distinto que puede ser entendido por otro procesador. En otras palabras, el juego de instrucciones que un procesador es capaz de entender es totalmente traducido a un nuevo juego de instrucciones que será entendido por otro procesador. La siguiente figura representa la transformación de un bloque de instrucciones de Intel x86 en un nuevo juego de instrucciones para otro procesador (específicamente un procesador RISC de 32 bits):



Figura 3: Transformación de x86 a CPU RISC 32-bit

Code Virtualizer puede generar múltiples tipos de máquinas virtuales con distinto juego de instrucciones en cada una, lo que significa que un mismo bloque de instrucciones de Intel x86 puede ser convertido en diferentes juegos de instrucciones, evitando que un atacante llegue a reconocer cualquier instrucción transformada a partir de una instrucción Intel x86. La siguiente figura representa cómo un bloque de instrucciones de Intel x86 es convertido a un diferente juego de instrucciones para distintos procesadores o máquinas virtuales.



Figura 4: Transformación de x86 a múltiples CPUs Imaginarias

Cuando un atacante intente descompilar un bloque de código que fue protegido por Code Virtualizer, no encontrará las instrucciones originales en Intel x86, sino instrucciones totalmente desconocidas y que no podrá descompilar con ninguna herramienta. Esto forzará al atacante a tener que realizar el arduo trabajo de estudiar cómo es ejecutada cada instrucción y cómo funciona la máquina virtual que procesa esas instrucciones en esa aplicación específica. Code Virtualizer ofusca totalmente la forma en la que las instrucciones virtuales son ejecutadas y dificulta extraordinariamente el traceo sobre la máquina virtual generada para evitar el estudio de ella y cómo son ejecutadas las instrucciones.




Code Virtualizer puede usarse con facilidad en aplicaciones Windows de 32 y 64 bits y también sobre Drivers de dispositivos (Device Drivers). Simplemente hay que seleccionar en el código fuente las secciones que desean ser protegidas con Code Virtualizer. El siguiente ejemplo muestra cómo insertar Code Virtualizer dentro de una aplicación en lenguaje C.

  #include <stdio.h>
  #include "VirtualizerSDK.h"

  void main()
  {
      VIRTUALIZER_START      // the area to protect starts here

      printf("Hello World");

      VIRTUALIZER_END       // end of area to protect
 }

Las macros VIRTUALIZER_START/VIRTUALIZER_END son macros vacías que no interfieren en la ejecución de la aplicación original, por lo que pueden utilizarse con comodidad mientras testea su aplicación sin proteger. En la fase de protección es cuando Code Virtualizer reconocerá esas macros y protegerá el código que existe dentro de ellas, convirtiendo las instrucciones originales (Intel x86) en instrucciones totalmente distintas y que pueden ser ejecutadas por una máquina virtual específica.

La siguiente figura muestra la diferencia entre la aplicación original y la aplicación protegida con Code Virtualizer:



Figura 5: Aplicación Original frente a Aplicación Protegida

Como muestra la figura, Code Virtualizer necesita incluir la máquina virtual generada dentro de la aplicación protegida con el fin de poder emular las instrucciones virtuales cuando necesitan ser ejecutadas. El tamaño de la máquina virtual puede variar entre 10 y 30 Kb (dependiendo de la complejidad seleccionada), lo cual no tiene un gran impacto sobre el tamaño final de la aplicación protegida.




Code Virtualizer es una poderosa tecnología que evita a posibles atacantes la forma de estudiar las rutinas que decida proteger, como por ejemplo las rutinas que validan un número serie para su aplicación. También modifica ligeramente la cabecera de las aplicaciones protegidas, lo cual significa que la aplicación protegida podría ser comprimida o reprotegida sin problemas por otro protector software.

Si eres un desarrollador de Drivers de dispositivos (Device Drivers) y se ha sentido desplazado en el mundo de la protección por no poder protegerlos, Code Virtualizer ofrece la misma tecnología para proteger sus Drivers de dispositivos (tanto las versiones en 32 y 64 bits), así como sus aplicaciones y DLLs.

Pruebe Code Virtualizer hoy mismo y empiece a incluir la última tecnología en protección software en sus aplicaciones y Drivers de dispositivo para Windows, Linux y Mac OS X, tanto para 32 como para 64 bits!
 
 
   
Copyright © 2004-2017 Oreans Technologies. Todos los Derechos Reservados. -- Oreans, Themida y WinLicense son marcas registradas.
El resto de marcas registradas pertenecen a sus respectivos propietarios.