22 de Julio de 2018

Archivo para Agosto de 2009 en Ctrl+Alt+Supr, blog de Ollydbg

En la entrada anterior vimos como cambiar el aspecto "visual" de un control de Windows. Hoy vamos a ir un paso más allá. Vamos a ver lo fácil que resulta crear propiedades "personalizadas" para cualquier control de Windows desde .NET.

Cuando añades un control de Windows en tu formulario, se nos muestran una serie de propiedades asociadas a dicho control, por ejemplo para una caja de texto:

Estas propiedades alteran el comportamiento de dicho control. Puede darse el caso en que por comodidad, necesitemos que un control haga algo "especial", lo típico, que por ejemplo una caja de texto sólo acepte números.

Para ello nos crearemos un nuevo control, al que llamaremos OllyTextBOX.vb:


(Haz click  para ampliar la imagen)

Tal y cómo mostramos en el tutorial anterior modificaremos el código de <nombre_del_control>.Designer.vb:

Hoy vamos a ver lo simple que puede resultar cambiar el aspecto visual de prácticamente cuanlquier control de Windows.

En este ejemplo en particular vamos a cambiar la apariencia del control "TAB Control" y le daremos este nuevo aspecto:

Una de las ventajas de cambiar el aspecto de los controles, es que dicho aspecto se mantendrá en todos los sistemas operativos, por lo tanto, el aspecto de ese TAB Control "modificado" se verá igual en Windows XP, en Windows Vista o incluso en Windows Seven.

Los pasos a realizar son los siguientes:

1) Añadir un nuevo "Control de usuario" a nuestro proyecto:


(Haz click para agrandar la imagen)

una vez añadido el control, mostraremos todos los archivos en el explorador de soluciones:

Al mostrarse todos los archivos, veremos que el nuevo control que hemos añadido también dispone de otro arachivo, llamado <nombre_del_control>.Designer.vb:

Ago
28

.NET Tutorial 16. Colisiones 2D

Categorías: ,

Vamos a ver lo sencillo que resulta realizar "colisiones" en 2D bajo .NET

Para este ejemplo controlaremos un "caza de combate" que tendrá que destruir al típico "final boss" de casi cualquier juego de "naves". Hete aquí una foto del resultado de este tutorial:


(Haz click para agrandar la imagen)

Tal y como ya hemos visto en tutoriales anteriores, en cualquier sprite 2D tendremos lo siguiente:

  • Un sprite, independientemente de la "forma" que tenga, será siempre un "rectángulo".
  • Siempre deberemos tener en cuenta la coordenada superior izquierda, que tomaremos como "origen" del sprite.
  • También tendremos que tener en cuenta el "ancho" y el "alto" del sprite.
Teniendo en cuenta estos 3 puntos, la "región" o contorno de nuestros sprites serán los siguientes:


(Haz click para agrandar la imagen)

A lo largo de la historia, el ser humano siempre ha tenido la necesidad de esconder sus más profundos secretros. Ya lo dijo en su dia Robert Reford, encarnando a Martin Bishop en la excepcional película Los fisgones (Sneakers, 1992): "Too many secrets"

Hoy vamos a ver lo simple que es realizar una tarea de "cifrado" y "descifrado" desde .NET:

.NET dispone de un namespace totalmente orientado a trabajar con algoritmos de clave simétrica. El namespace es System.Security.Cryptography

Ahi disponemos de unos cuantos metodos de cifrado y descifrado.

El que hemos usado para este ejemplo es el conocido como Rijnadael y es posiblemente el más seguro (por lo menos, públicamente, a saber lo que tienen montado los chicos de la NSA) hasta la fecha.

Al contrario de lo que pueda parecer a priori, realizar un cifrado / descifrado utilizando las clases y métodos que están en System.Security.Cryptography es tremendamente simple.

Para ello nos hemos creado una clase, a la que hemos llamado Crypto.

Dicha clase tiene dos funciones:

Ago
23

.NET Tutorial 14. Gráficos 2.5D

Categorías: ,

En el mundillo videojuegil se conoce como gráficos 2.5D a la proyección isométrica. En esta entrega realizaremos lo siguiente:

Para ver este video es necesario tener JavaScript activado y el plugin Flash instalado en el navegador.

Existen grandes exponentes en este género. Quizás el más popular sea Diablo. Aunque existen muchísimos y muy antiguos: La abadía del crimen, Knight Lore, Head Over Heels, Alien 8, Ultima Online, etc, etc.

Quien no se acuerda el mítico Head Over Heels:

Para ver este video es necesario tener JavaScript activado y el plugin Flash instalado en el navegador.

(Versión para Amiga)

O no el menos mítico Abadía del Crimen:

Ago
5

Anexo Tutorial 13: Recompilando un ensamblado ofuscado

Os presento un anexo a lo explicado en el Tutorial 13.

No he querido hacer una entrada "al uso" por los motivos que explico dentro del anexo.

En este anexo se podrá comprobar que efectivamente, es posible "recompilar" un ejecutable ofuscado, cosa que a priori parecía imposible.

Os recuerdo lo comentado al principio del Tutorial 11: Esta serie de tutoriales no pretenden en absoluto ser unos tutoriales de "cracking".

Con este anexo doy por concluida de momento esta parte del tutoriales sobre la seguridad.

En breve espero escribir articulos más interesantes sobre todo mas orientados a la programación. Aunque eso será despues de unas merecidiiiisimas vacaciones.

PD: Desde aquí aprovecho para agradecer a todos aquellos usuarios, anónimos o no, que dejan sus comentarios es este humilde blog. Gracias!!!. ;) 

 

Saludos.
mov eax,ollydbg; Int 13h  

 

Tal y como vimos en la anterior entrega, es "relativamente fácil" fisgonear en el código de una aplicación .NET. A continuación veremos varias formas de impedir esto:

Evitando el desensamblado

La forma más simple de evitar el desensamblado es añadir la siguiente directiva en cualquier módulo / clase de nuestro proyecto:

Imports System.Runtime.CompilerServices
<Assembly: SuppressIldasmAttribute()>
 

Si hacemos esto, al cargar nuestro exe dentro del ildasm obtendremos este "bonito" mensaje:

Añadir esta directiva puede persuadir a un "juanker casual". Eludir este "trick" es relativamente fácil para un cracker experimentado. Aunque como ya expliqué en la entrega anterior nuestra intención es eludir a esos "aprendices" de juankers, ya que contra los pr00s poco o nada hay que hacer ¬¬

 

Ofuscando el código