You are on page 1of 13

1) Teora de Programacin Orientada a Objetos (POO)

1.1) Concepto de Objeto: Atributos y Mtodos Un objeto es cualquier cosa real o abstracta de la cual nos interesa su comportamiento y que tiene una identidad nica que la distingue de las dems.Un objeto es una unidad atmica formada por la unin de estado+comportamiento. Un Objeto se compone de: -Atributos(datos o variables): Informacin que posee cada objeto y que identifica su estado. -Mtodos(operaciones o funciones): Conjunto de instrucciones que definen el comportamiento del objeto. Reciben unos argumentos y devuelven un resultado. Slo se puede acceder a los atributos de un objeto a travs de sus mtodos. Imaginemos que nuestro objeto es un exploit y que su plantilla es la siguiente:

-----------------------------------------| Dame el lenguaje | | Dame la vulnerabilidad | | --------------| | | Autor | | | | |Dame el autor | | |Vulnerabilidad | | | | | | | | Lenguaje | | | | | | | --------------| | | | Introduzco nuevo offset | | | -----------------------------------------Este diagrama representa la estructura de un objeto. La parte interna del objeto no es accesible y contiene los atributos. La parte externa o interfaz del objeto es accesible y contiene los mtodos.

Citar Para los que no conocen mucho sobre los exploits, les recomiendo que se den una vuelta porhttp://foro.elhacker.net/index.php/board,32.0 Para poder comprender este ejemplo, slo es necesario saber que un exploit es un cdigo (codificado por un autor) que explota una vulnerabilidad para lograr ejecutar cdigo arbitrario en el sistema comprometido. La codificacin puede haberse hecho en el lenguaje que prefiera el autor: C, C++, Perl... Antes de lanzar un exploit contra un objetivo remoto, por ejemplo, debemos conocer su sistema operativo y a veces es necesario cambiar la direccin offset dentro del cdigo del exploit, en funcin del sistema operativo y la versin de service pack que el objetivo tenga instalada, para ajustar el exploit a las caractersticas del sistema objetivo.

Bien, nuestroobjeto-exploittiene algunos atributos como elautordelexploit (= Lion), lavulnerabilidadque explota (= Serv-U FTPD 3.x/4.x "SITE CHMOD" CommandRemotestack buffer overflow) y ellenguajeen que se ha codificado el exploit (= Lenguaje C). Si otro objeto quiere acceder a estos atributos, no lo puede hacer directamente, sino a travs de los mtodos del objeto-exploit. Es decir, si quiere saber el autor que codific el exploit, llamar al mtodo "dame el autor" del objetoexploit y recibir como resultado el tipo string con el nombre del autor = "Lion". si quiere introducir una nueva direccin offset, llamar al mtodo "introduzco nuevo offset" y le pasar como argumento el tipo string con la direccin offset = "0x7ffa4a1b" a introducir para que el exploit nos funcione. Generalmente, a estos mtodos q "obtienen" o "introducen" se les llama mtodosgettersysetters. De

esta forma, los mtodos del objeto-exploit pasarn a codificarse bajo los nombresgetAutor, getVulnerabilidad, getLenguaje, y setOffset. Continuando con el ejemplo... el prototipo del mtodo getAutor ser: StringgetAutor () String (antes del mtodo), indica que la llamada al mtodo devuelve un tipo String, como es una cadena de caracteres con el nombre del autor. Sin embargo, no hace falta pasarle ningn argumento al mtodo, por lo que dejamos los parntesis () vacos. el prototipo del mtodo setOffset ser: voidsetOffset (String offset) void (antes del mtodo), indica que la llamada al mtodo no devuelve ningn tipo. Sin embargo, es necesario pasarle un argumento tipo String, como es la cadena de caracteres de la direccin offset para que, por ejemplo, el cdigo del mtodo implemente esa direccin offset y entonces lance el exploit ya ajustado a las caractersticas del sistema objetivo. Si este ejemplo del objeto-exploit te ha resultado demasiado confuso por los tecnicismos empleados, quizs te resulte ms fcil comprender un objeto-reloj. Tiene los atributos Hora (= 19:00), Fecha (= 31/12/2004) y Marca (=Casio) y sus mtodos podran ser getHora (para pedir la hora que marca el reloj), getFecha (para pedir la fecha que marca el reloj), getMarca (para pedir la marca del reloj), setHora (para introducir una nueva hora en el reloj) y setFecha (para introducir una nueva fecha en el reloj). Jejejeje, mejor as??

1.2) Concepto de Clase. Justo antes del dibujo del objeto-exploit, he remarcado que ese diagrama representaba su "plantilla". Es decir, imagina que tenemos una plantilla para crear muchos objetos-exploit, todos ellos con los mismos tipos de atributos y los mismos mtodos, pero cada uno con suidentidad propia. Otro ejemplo de objeto-exploit diferente podra contener la siguiente informacin en sus atributos: Autor = fiNis, Vulnerabilidad = Jordan Telnet Server Buffer Overflow, Lenguaje = C y tener los mismos mtodos para acceder a estos atributos, pero como ves, la identidad es distinta. Las clases son una especie de plantilla para los objetos, es decir, si se piensa en una clase como un molde de galletas, los objetos que se crean a partir de esa clase son las galletas. Definimos formalmenteclase como la representacin de la estructura (atributos) y comportamiento (mtodos) de un objeto. La creacin de un objeto a partir de una clase se denomina "instanciacin". Cualquier objeto que se instancie de una clase crear una copia de la definicin de atributos de la clase y dispondr de los mtodos definidos en ella. Para crear objetos, se invoca al constructor de la clase, que es un mtodo que se llama igual que la clase. Tipos de clases: -Clase abstracta: ningn objeto pertenece directamente a dicha clase. -Clase concreta: exiten objetos que pertenecen directamente a dicha clase.

1.3) Atributos y Mtodos de Objeto/Clase Antes hemos visto que un Objeto se compone de: - Atributos (datos o variables): Informacin que posee cada objeto y que identifica su estado. - Mtodos (operaciones o funciones): Conjunto de instrucciones que definen el comportamiento del objeto. Reciben unos argumentos y devuelven un resultado. Y hemos dicho que la nica manera de acceder a los atributos de los objetos, es a travs de los mtodos. Los mtodos son un conjunto de instrucciones al cual se le pueden pasar unos argumentos y/o devolver unos resultados. Existen dos tipos de mtodos: -Mtodos de instancia: invocados en los objetos. -Mtodos de clase: invocados en las clases. Estos atributos y mtodos sern compartidos por todos los objetos creados a partir de una misma clase.

Para comprender el concepto de atributo/mtodo de instancia o de clase, volvamos al ejemplo del objeto-reloj: Imaginemos una clase-reloj que crea objetos-reloj, todos de la misma marca = Casio. Estos objetosreloj implementan los atributos Hora, Fecha y Marca; y los mtodos getHora, getFecha, getMarca, setHora y setFecha. Sin embargo, algunos de estos atributos y mtodos son de clase y otros son de instancia: -Atributos de instancia: Hora Fecha -Mtodos de instancia: getHora getFecha -Atributos de clase: Marca -Mtodos de clase: getMarca Se puede distinguir las diferencias entre unos y otros de manera sencilla: Si le preguntamos a dos objetos (relojA y relojB) con getHora o getFecha, nos pueden contestar un valor diferente para cada objeto. Estos atributos y mtodos sern denominadosatributos de instanciaymtodos de instancia. Si le preguntamos a dos objetos (relojA y relojB) con getMarca, ambos contestarn el mismo valor = Casio, ya que la clase-reloj se lo ha asignado forzsamente. Estos atributos y mtodos sern denominadosatributos de claseymtodos de clase. En este caso, por ejemplo, si existiera el mtodo setMarca y modificaramos el atributo Marca de cualquier objeto a travs de l, este atributo se modificara para todos los objetos, pues estamos tratando con mtodos de clase. CONSECUENCIAS Cualquier objeto creado a partir de una clase contendr la definicin de los atributos de clase y dispondr de los mtodo de clase. Por tanto, cuando se modifica un atributo de clase a travs de un objeto, se modifica ese atributo en todos los objetos creados a partir de esa clase.

Especificaciones sobre los mtodos: Un objeto de clase no puede acceder a un mtodo de instancia, porque no sabemos si el objeto al que intenta acceder ha sido ya creado. Sin embargo, el resto de accesos son posibles: mtodo de clase - mtodo de clase mtodo de instancia - mtodo de instancia mtodo de instancia - mtodo de clase Asimismo, un mtodo de instancia de un objeto A no puede acceder directamente a los atributos (variables) de un objeto B, pero puede hacer referencia a un mtodo de instancia del objeto B, y que sea este el que acceda a los atributos del objeto B.

1.4) Modificadores de acceso. Alcance de los modificadores de acceso prefijos a atributos y mtodos: -public: accesible desde cualquier lugar de la aplicacin (por el resto de clases). -private: slo accesible desde la clase a la que pertenece. -protected: disponible para la clase actual, clases del mismo paquete y subclases derivadas de esa clase.

1.5) Paradigmas de la POO 1.5.1)Abstraccin Consiste en abstraer conceptualmente los atributos y comportamiento (mtodos) comunes a un

determinado conjunto de objetos y almacenarlos en una clase. 1.5.2)Encapsulamiento El encapsulamiento es el principio por el cual se ocultan los detalles de implementacin al usuario. Cada clase tiene dos partes: ElInterfazes la parte pblica con la que interacta el usuario (mtodos pblicos) LaImplementacines el cdigo que realiza todas las operaciones de la clase (mtodos privados) 1.5.3)Herencia La herencia permite crear una clase nueva (subclase o clase derivada) que tenga el mismo comportamiento que otra (superclase o clase base) y adems extienda o adapte ese comportamiento a unas necesidades especficas. La nueva subclase heredar los atributos y los mtodos de la clase base, los cuales se aadirn a los definidos en la propia subclase. Continuando con el ejemplo de la clase-exploit, observamos que por Internet circulan bastantes exploits que afectan a vulnerabilidades en servicios de Microsoft Windows. Por qu no agrupar todo este conjunto de objetos-exploit bajo una nueva clase-winexploit?. Esta nueva clasewinexploithereder los mismos atributos (Autor, Vulnerabilidad y Lenguaje) y los mismos mtodos (getAutor, getVulnerabilidad, getLenguaje y setOffset) de la clase-exploit. A su vez, "extender su comportamiento" implementando otros atributos y otros mtodos especficos como, por ejemplo, el atributo CodigoMS (referente al Codigo Microsoft Security Bulletin asignado a la vulnerabilidad) y el mtodo getCodigoMS. La clase-winexploit quedara as:

-----------------------------------------| getLenguaje | | getVulnerabilidad | | --------------| | | Autor | | | | | getAutor | | |Vulnerabilidad | | | | | | | | Lenguaje | | | | CodigoMS | | | --------------| | | | setOffset | | getCodigoMS | -----------------------------------------Un ejemplo de objeto-winexploit podra ser el siguiente: - Atributos: (atributos heredados de la clase-exploit) Autor: Wirepair Vulnerabilidad: Windows Workstation Service WKSSVC.DLL Buffer Overflow Lenguaje: C (nuevos atributos implementados por la clase-winexploit) CodigoMS: MS03-049 - Metodos: (mtodos heredados de la clase-exploit) getAutor getVulnerabilidad getLenguaje setOffset (nuevos mtodos implementados por la clase-winexploit) getCodigoMS

La sintaxis en Java para indicar que una nueva clase hereda de otra superclase es: Cdigo:

classwinexploitextendsexploit
Especificaciones sobre la Herencia: Adems de "extender" el comportamiento implementando nuevos atributos y nuevos mtodos, una clase heredada puede "adaptar" el comportamiento sobreescribiendo la funcionalidad de la clase base, esto es, sobreescribiendo la implementacin del algn mtodo heredado de la clase base para que al llamar a ese mtodo desde la nueva clase heredada, en vez de ejecutar el cdigo original del mtodo heredado, se ejecute un nuevo cdigo adaptado al comportamiento de la nueva clase. (Polimorfismo) 1.5.4)Polimorfismo El Polimorfismo es la respuesta distinta frente a una llamada a un mtodo dependiendo de la naturaleza del objeto. Consiste en definir mtodos distintos, que comparten el mismo nombre, pero que se aplican a clases diferentes. Por ejemplo, un mtodo llamado breathe puede responder de manera distinta dependiendo de quien lo invoque: Cdigo

class animal { publicvoidbreathe() { System.out.println("Respirar..."); } } class pez extends animal { publicvoidbreathe() { System.out.println("Burbujear..."); } }
Si se invoca el mtodo breathe desde un objeto-perro, imprimir en pantalla "Respirar...", pero si es invocado desde un objeto-trucha, imprimir en pantalla "Burbujear...".

Otra forma de utilizar polimorfismo es mediante lasobrecarga de funciones: Cdigo:

charconvertir_numero_cadena(int valor, char cadena, int base) charconvertir_numero_cadena(long valor, char cadena, int base)
En este caso, cuando se invoca la funcin, el compilador debe analizar los argumentos de la llamada y, en funcin de su tipo, deducir cual de las distintas versiones del mtodo con ese nombre debe recibir el control.

http://foro.elhacker.net/java/ejercicios_java_teoriaejemplos-t34891.0.html#ixzz1R1bvctvP

2) Soporte para el desarrollo en Java

2.1) JDK (Java Development Kit) Es el entorno de desarrollo para aplicaciones Java. Se define como elconjunto de herramientas, utilidades, documentacin y ejemplos para desarrollar aplicaciones Java. Componentes del JDK: 2.1.1)JRE (Java RuntimeEnviroment) Es elentorno de ejecucin para aplicaciones Java. Se define como el intrprete en tiempo de ejecucin. Para ejecutar un archivo de clase Java *.class, la sintaxis es la siguiente: Cdigo:

java [opciones] clase_a_ejecutar [argumentos]


-opciones: se especifican las opciones relacionadas con la forma en que el intrprete Java ejecutar la aplicacin. -clase_a_ejecutar: ser el nombre de la clase *.class principal que contiene el mtodo main(). -argumentos: se especifican los argumentos que recibir el mtodo main(String[] args), por si la aplicacin necesita parmetros de ejecucin. Por supuesto, es necesario haber compilado la aplicacin antes de ejecutarla. 2.1.2)Compilador Permite compilar archivos de cdigo fuente Java *.java en archivos de clases Java ejecutables *.class. Se crea un archivo de clase para cada archivo de cdigo fuente que contiene la aplicacin. Para compilar un archivo de cdigo fuente Java *.java, la sintaxis es la siguiente: Cdigo:

javac [opciones] codigo_fuente_a_compilar


-opciones: se especifican las opciones de compilacin -codigo_fuente_a_compilar: ser el nombre del archivo de cdigo fuente *.java a compilar 2.1.3)Visualizador de applets Es una herramienta que permite visualizar los applets tal y como se mostraran el navegador. Al ser llamado, muestra una ventana con el contenido del applet. Para visualizar un applet, la sintaxis es la siguiente: Cdigo:

appletviewer [opciones] applet


-opciones: se especifican las opciones para ejecutar el applet Java. -applet: especifica la ruta que contiene una pgina HTML con el applet Java empotrado. 2.1.4)Depurador Es una utilidad de comandos que permite depurar aplicaciones Java. Permite encontrar los errores en el cdigo fuente de la aplicacin Java. Para depurar un cdigo fuente Java, la sintaxis es la siguiente: Cdigo:

jdb [opciones]
2.1.5)Desensamblador de archivos de clase Permite desensamblar un archivo de clase, mostrando los atributos y mtodos de la clase desensamblada. Es til cuando no se tiene el cdigo fuente de una clase de la que se quiere saber

cmo fue codificada. Para desensamblar un archivo de clase, la sintaxis es la siguiente: Cdigo:

javap [opciones] [nombres_de_clases_a_desensamblar]


-opciones: se especifica la forma en la que se han de desensamblar las clases. -nombres_de_clases_a_desensamblar: especifica la ruta de las clases a desensamblar, separadas por espacios. 2.1.6) Ms componentes como el Generador de cabecera y archivo de apndice, generador de documentacin, etc. CICLO DE VIDA DE UNA APLICACIN JAVA BSICA Edicin del cdigo fuente en un editor de textos (notepad, vi...) ->Codigo fuente Java: MiClase.java > -> Compilacin: javacMiClase ->Codebyte Java: MiClase.class -> -> Ejecucin del programa: java MiClase -> Salida del programa

2.2) Obtener e instalar el JDK Se puede obtener el JDK enhttp://java.sun.com,concretamentehttp://java.sun.com/j2se/1.4.2/download.html Necesitamos descargarnos el SDK (Software Developmente Kit), el cual ya incluye el JRE (Java RuntimeEnvironment), as que pinchamos en Download J2SE SDK. Posteriormente, elegiremos la plataforma de sistema operativo que vayamos a utilizar. Aviso: Windows Offline Installation, Multi-language (j2sdk-1_4_2_05-windows-i586-p.exe) -> 51.0 MB Para usuarios de Windows, despus de haber instalado el SDK, vamos a agregar la carpeta bin al PATH del sistema de forma que podamos usar todos los comandos del SDK/JRE desde cualquier carpeta del sistema... Inicio > Panel de Control > Sistema > Opciones Avanzadas > Variables de Entorno. En Variables del Sistema, seleccionamos Path y pinchamos en Modificar. Agregamos -> ;C:\j2sdk1.4.2_05\bin al final del todo y Aceptar, Aceptar, Aceptar. [Nota: adaptad esta linea a vuestra ruta donde habis instalado el SDK]. Ahora, desde cualquier carpeta del sistema, podemos ejecutar los comandos de consola del SDK/JRE como java, javac, etc.

2.3) IDE (IndegratedDevelopmentEnvironment) Mientras que un JDK/SDK ofrece las herramientas para compilar y ejecutar aplicaciones Java, este no ofrece un entorno de trabajo cmodo para proyectos complejos. Los IDEs ofrecen unentorno de trabajo con aspecto grficoen los que se tiene acceso a un mayor nmero de herramientas avanzadas: gestin de workspaces y proyectos para clasificar las aplicaciones, debuggers ms elaborados, check-points durante la compilacin y ejecucin, "wizards" para acelerar el desarrollo, etc. Algunos IDEs: NetBeans Open-Source @http://www.netbeans.org/ Eclipse Open-Source @http://www.eclipse.org/(muy bueno, pero consume muchos recursos) JBuilder de Borland @http://www.borland.com/jbuilder/ Mi favorito:JCreator@http://www.jcreator.com/

2.4) Cmo codificar, compilar y ejecutar una aplicacin Java

Como no poda ser de otra forma, nuestra primera aplicacin Java mostrar por pantalla "Hola Mundo!". 2.4.1)Cmo codificar, compilar y ejecutar una aplicacin Java de manera clsica. Utilizaremos para ello un editor de texto plano como el notepad y los comandos de consola del SDK y JRE. Lo primero es abrir el notepad y escribir el siguiente cdigo: Cdigo

classMiClase//La clase se llama igual que el archivo de codigo fuente *.java que la contiene { publicstaticvoidmain(String[]args) { System.out.println("Hola mundo!"); } }
Guardamos este archivo de cdigo fuente Java como c:\MiClase.java Procedemos acompilar: abrimos consola, vamos a c:\ y tecleamos: Cdigo:

javac MiClase.java
Con el proceso de compilacin, hemos obtenido el archivo de clase MiClase.class en la misma carpeta. Procedemos aejecutarla aplicacin tecleando: Cdigo:

javaMiClase
y obtenemos: Cdigo:

Hola Mundo!
Si obtienes Cdigo:

Exception in thread "main" java.lang.NoClassDefFoundError: loquesea


es q no lo has hecho exactamente como yo te he dicho!! 2.4.2)Cmo codificar, compilar y ejecutar una aplicacin Java a travs del IDE JCreator Una vez que ya tenemos JCreator listo para utilizar sin restricciones (ya me entendis...), creamos un nuevo archivo de cdigo fuente Java para codificar nuestra primera aplicacin Java. Pinchamos en File > New > Files > Java File. En Location seleccionamos la carpeta destino donde queremos almacenar nuestra aplicacin. Despus, en la casilla nombre escribimos MiClase y damos a Aceptar. Ante nosotros aparecer la barra de mens, las barras de herramientas y tres ventanas: superior izqda. para la jerarqua de archivos en el workspace; inferior izqda. para la jerarqua de clases y mtodos; ventana grande al centro-dcha. para escribir el cdigo fuente. Por tanto, en esta ltima ventana, escribimos el siguiente cdigo Cdigo

classMiClase//La clase se llama igual que el archivo de codigo fuente *.java que la contiene { publicstaticvoidmain(String[]args) { System.out.println("Hola mundo!"); } }
Procedemos acompilarla aplicacin: Men Build> Compile File y debera aparecerProcesscompleted. en la ventana de abajo (informacin sobre el proceso de compilacin).

Paraejecutarla aplicacin: Men Build>Execute File y debera aparecer una nueva ventana de consola con el texto Cdigo:

"Hola Mundo!"
Tamben podemos utilizar los iconos en las barras de herramientas para compilar y ejecutar.

http://foro.elhacker.net/java/ejercicios_java_teoriaejemplos-t34891.0.html#ixzz1R1cMuzXQ

3) Sintaxis de Java Java utiliza casi la misma sintaxis que C, para ms informacin >http://www.dcc.uchile.cl/~lmateu/Java/Apuntes/tiposprim.htm http://foro.elhacker.net/java/ejercicios_java_teoriaejemplos-t34891.0.html#ixzz1R1cRw4mp

4) Ejemplo de Aplicacin Bsica en Java La siguiente aplicacin sirve para mostrar, de forma prctica, los conceptos de clases, objetos, atributos, mtodos, herencia... La aplicacin en s se divide en 3 clases: - La clase Exploit que define los atributos y mtodos de los objetos-Exploit - La clase WinExploit, heredada de la clase Exploit. Hereda los mismos atributos y mtodos que la clase Exploit y, a su vez, define nuevos atributos y mtodos a implementar. - La clase app, que contiene el mtodo Main para la ejecucin de la aplicacin (clase principal). En esta clase se crean 2 objetos-Exploit y 2 objetos-WinExploit invocando a los mtodos Constructores de sus respectivas clases. Tambin accede a los objetos creados a travs de sus mtodosgettersysetters. Clase Exploit Cdigo

classExploit { //Definimos las variables o atributos String Autor; String Vulnerabilidad; String Lenguaje; //Constructor - Construye el objeto-exploit e identifica sus atributos //con los parmetros recibidos. Exploit(String a, String v, String l) { Autor = a; Vulnerabilidad = v; Lenguaje = l; } //Mtodos StringgetAutor() { return Autor;//Devuelve autor } StringgetVulnerabilidad() { return Vulnerabilidad; } StringgetLenguaje() { return Lenguaje; } StringgetInfoComun()//Devuelve toda la informacin de golpe { return("\tAutor: "+ Autor +"\n\tVulnerabilidad : "+ Vulnerabilidad +"\n\tLenguaje: "+ Lenguaje); } intsetOffset(String o)

{ //Se implementa el parmetro offset en la funcin que se quiera System.out.println("\n\n[*] Implementando la direccion offset "+ o +" en el exploit...\n"); //Un ejemplo de esta implementacin: //Se configura el cdigo del exploit en C para que necesite como // parmetro de entrada la direccion offset. Este mtodo de la // aplicacin Java, realizara una llamada externa al ejecutable // del exploit y le pasara como parmetro de entrada, este offset //Si se ha implementado con exito, el mtodo devuelve 0. return(0); } }

Clase WinExploit Cdigo

classWinExploitextendsExploit { //Adems de disponer de los atributos heredados de la clase padre... //Definimos las nuevas variables o atributos a aadir StringCodigoMS; //Constructor - Construye el objeto-exploit e identifica sus atributos con los parmetros recibidos. WinExploit(String a, String v, String l, Stringcms) { super(a,v,l);//Estos atributos son implementados por el constructor de la clase padre CodigoMS=cms; } //Adems de disponer de los mtodos heredados de la clase padre... //Definimos los nuevos mtodos StringgetCodigoMS() { returnCodigoMS; } StringgetInfoWin()//Devuelve toda la informacin de golpe { String s; s =this.getInfoComun()+"\n\tCogigo MS: "+CodigoMS; return s; } }

Clase app Cdigo

classapp { publicstaticvoidmain(String[]args) { //Creamos dos objetos-Exploit llamando al Constructor Exploit e1 =newExploit("Lion", "Serv-U FTPD SITE CHMOD CommandStack Buffer Overflow", "C"); Exploit e2 =newExploit("fiNis", "Jordan Telnet Server Buffer Overflow", "C"); //Creamos dos objetos-WinExploit llamando al Constructor WinExploit w1 =newWinExploit("Wirepair", "Windows Workstation Service WKSSVC.DLL Buffer Overflow", "C", "MS03-049"); WinExploit w2 =newWinExploit("HoD", "Lsasrv.dll RPC buffer overflow", "C", "MS04-011"); //Imprimimos las caractersticas de los objetos (se puede hacer de dos formas) System.out.println("\nInfo de e1\n"); System.out.println("\tAutor: "+ e1.getAutor()); System.out.println("\tVulnerabilidad: "+ e1.getVulnerabilidad()); System.out.println("\tLenguaje: "+ e1.getLenguaje()); System.out.println("\n\nInfo de e2\n"); System.out.println(e2.getInfoComun()); System.out.println("\nInfo de w1\n"); System.out.println("\tAutor: "+ w1.getAutor()); System.out.println("\tVulnerabilidad: "+ w1.getVulnerabilidad()); System.out.println("\tLenguaje: "+ w1.getLenguaje()); System.out.println("\tCodigo MS: "+ w1.getCodigoMS()); System.out.println("\n\nInfo de w2\n"); System.out.println(w2.getInfoWin()); int resultado = w2.setOffset("0x7517123c"); if(resultado ==0) { System.out.println("[!] La direccion offset se implemento con exito\n"); } else { System.out.println("[!] Error durante la implementacion de la direccion offset\n"); } } }

You might also like