elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
12 Octubre 2008, 05:12  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderador: Casidiablo)
| | | |-+  ¿Cómo lograr compilar de esta manera?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: ¿Cómo lograr compilar de esta manera?  (Leído 769 veces)
Lopardo

Desconectado Desconectado

Mensajes: 102


Solo es el principio...


Ver Perfil WWW
¿Cómo lograr compilar de esta manera?
« en: 30 Octubre 2007, 03:25 »


Bueno hace tiempo toque este tema un poco, solo que ahora vengo con unas cuantas evidencias por así decirlo y bueno espero que en conjunto encontremos la solución a este caso muy particular y realmente extraño, pensé en agregar este mensaje al mismo tema anterior, pero leí unas letras en rojo que decían que habían pasado más de 60 días y bueno preferí crear uno nuevo (bueno en realidad me lo aconsejaba el mensaje, eso creo).

¿Cómo es posible que un método tenga campos con el mismo nombre y métodos con el mismo nombre?


Bueno he intentado compilar clases con algún error y no lo he conseguido. Cuando digo error me refiero a métodos con el mismo nombre (no sobrecargados), es decir, reciben los mismos parámetros ambos y no importa lo que retorna. Mi pregunta es, ¿Cómo se logró compilar esta clase?, se supone que al codificarla en cualquier editor se detectaría el error y no permitiría compilarla, corríjanme si me equivoco.

Se estarán preguntando cual es mi problema con eso, bueno mi problema es que tengo unas cuantas *.class y me gustaría modificarle alguna parte del código, pero al decompilar la clase ya no podré compilarla de nuevo porque me daría error.

¿Cuál creen que sería la solución?.... Claro, aparte de codificar la clase completa, ya que mi idea es hacer uso de una clase cualquiera y modificarla.

Aquí les pongo unas imágenes:


Como se puede ver en la figura la clase “af.class” tiene varios campos con el nombre “a”, en lo único que diferencia es en el tipo de dato, y como sabrán eso no es suficiente para ser permitido en java.


En esta otra se ven varios métodos con el nombre “a()”, no entiendo como es posible tener varios métodos con igual nombre.

La clase ejemplo la obtuve de un jar que descomprimí e hice la pregunta, no tiene importancia su contenido, pero si la quieren la puedo subir.

Para que vean intente crear una clase con métodos iguales o campos iguales y verán que no se puede compilar porque da un error, bueno si alguien lo logra por favor diga la manera para aprenderla.

Tiempo si escribir, bueno espero su ayuda. Saludos a todos.
En línea

...de la sabiduría.
Casidiablo
Moderador
*****
Desconectado Desconectado

Mensajes: 2.813


Más inteligente que el simio promedio


Ver Perfil WWW
Re: ¿Cómo lograr compilar de esta manera?
« Respuesta #1 en: 30 Octubre 2007, 15:35 »

Pues raro si es... el código es decompilado verdad?
En línea

Masturba tu cerebro y eyacularán tus ideas...



Visita mi blog:

Lopardo

Desconectado Desconectado

Mensajes: 102


Solo es el principio...


Ver Perfil WWW
Re: ¿Cómo lograr compilar de esta manera?
« Respuesta #2 en: 30 Octubre 2007, 22:52 »

Bueno la clase "af.class" no ha sido decompilada solo la saque del .jar y si la decompilas se puede ver que tiene métodos repetidos y todo lo que comente arriba...

Gracias.. Saludos.. Espero sus respuestas
En línea

...de la sabiduría.
egyware

Desconectado Desconectado

Mensajes: 130



Ver Perfil
¿Cómo lograr compilar de esta manera?
« Respuesta #3 en: 31 Octubre 2007, 17:03 »

vaya vastante raro seguramente tiene una proteccion (ofuscacion creo), pero si lo sacaste de un jar solo el source o lo descompilaste, aunque no creo eso si alguien pudo haberlo colocado ahi para despistar (sin enojarse), porque yo sabia de java que solo se permitia methodos sobrecargados pero esto  :huh: :huh: :huh: hasta yo sigo despistado.
Ups ahora leyendo bien el mesaje como es eso posible??????!!! :o :o :o :o
porque no subes la clase como pa verla uno e indagar mas en eso
En línea


Lopardo

Desconectado Desconectado

Mensajes: 102


Solo es el principio...


Ver Perfil WWW
Re: ¿Cómo lograr compilar de esta manera?
« Respuesta #4 en: 31 Octubre 2007, 17:56 »

Bueno aquí les pongo una clase ejemplo que presenta tres métodos con igual nombre. http://www.miempresaaldia.com/Img%20principal/a.class

Bueno espero que se logre dar con la solución porque es bastante interesante.

Saludos a todos.
En línea

...de la sabiduría.
egyware

Desconectado Desconectado

Mensajes: 130



Ver Perfil
Re: ¿Cómo lograr compilar de esta manera?
« Respuesta #5 en: 31 Octubre 2007, 18:37 »

como duda crees que haya un error con las clases de java.lang.reflect que son las encargadas de leer nombre methodos de esa forma, algun bugs no conocido ????
En línea


Lopardo

Desconectado Desconectado

Mensajes: 102


Solo es el principio...


Ver Perfil WWW
Re: ¿Cómo lograr compilar de esta manera?
« Respuesta #6 en: 31 Octubre 2007, 20:19 »

Bueno eso que dices no lo sabia, voy a leer al respecto.. pero al decompilarlo se ve igual que al visualizarlo desde afuera, asi que dudo que ese sea el problema, de todas formas hay que leer.

Saludos.
En línea

...de la sabiduría.
Amab

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: ¿Cómo lograr compilar de esta manera?
« Respuesta #7 en: 31 Octubre 2007, 21:01 »

Ah, varios métodos con el mismo nombre en la misma clase. No lo había leído bien.

Aunque dices que tienes varios *.class, lo que me hace pensar que quizá sean varias subclases y una superclase, lo que me lleva a pensar que puede ser un caso de polimorfismo.

Un saludo.
« Última modificación: 31 Octubre 2007, 21:21 por Amab » En línea

Los READ.ME son para los cobardes. Sé valiente. Ejecuta.
Lopardo

Desconectado Desconectado

Mensajes: 102


Solo es el principio...


Ver Perfil WWW
Re: ¿Cómo lograr compilar de esta manera?
« Respuesta #8 en: 31 Octubre 2007, 23:50 »

para que se vea mejor es algo así en una sola clase.


class ejemplo
{
  public ejemplo()
  {
    //Lo que sea.
  }
 
  public void metodo1()
  {
    //Lo que sea.
  }
 
  public int metodo1()
  {
     //Lo que sea.
  }

  public long metodo1()
  {
    //Lo que sea.
  }

  public void metodo1()
  {
     //Lo que sea.
  }
}

A eso me refiero en una sola clase hay varios métodos de igual nombre, también pueden ver el ejemplo que les puse en el link en uno de los mensajes anteriores, se llama "a.class".

Si intentara compilar esta clase daria error porque hay métodos repetidos, a eso me refiero.

Saludos
« Última modificación: 31 Octubre 2007, 23:55 por Lopardo » En línea

...de la sabiduría.
marioly

Desconectado Desconectado

Mensajes: 239


http://marioly.hackerss.com


Ver Perfil WWW
Re: ¿Cómo lograr compilar de esta manera?
« Respuesta #9 en: 03 Noviembre 2007, 15:17 »

is not that difficult

usas genericos:



no es un efecto, ni es nada raro, es (como dijeron) un tipo de polimorfismo, haciendo esto el compilador tiene un modo de identificar cada metodo
En línea

Lopardo

Desconectado Desconectado

Mensajes: 102


Solo es el principio...


Ver Perfil WWW
Re: ¿Cómo lograr compilar de esta manera?
« Respuesta #10 en: 09 Noviembre 2007, 22:31 »

¿y puedes hacer una clase de esta manera?.. Acaso no daria error... Bueno si es polimorfismo deberia funcionar y no es así. Aunque el caso no es si es o no polimorfismo sino como se hizo esto.

Gracias. Saludis
En línea

...de la sabiduría.
egyware

Desconectado Desconectado

Mensajes: 130



Ver Perfil
Re: ¿Cómo lograr compilar de esta manera?
« Respuesta #11 en: 16 Noviembre 2007, 14:48 »

como duda hay una clase que se llama void y que curiosamente uno no la puede usar por que esta reservada para los metodos void y como mi ingles empeora cada dia ayer lei algo sobre una clase tipo primitiva (byte int char) en javadoc talvez sea un caso de polimorfismo
En línea


Ragnarok
Moderador Global
*****
Desconectado Desconectado

Mensajes: 4.227


Ver Perfil
Re: ¿Cómo lograr compilar de esta manera?
« Respuesta #12 en: 17 Noviembre 2007, 00:32 »

Más que polimorfismo yo diría que el nombre de los métodos se ha perdido por el decompilador. Para averiguarlo es tan sencillo como hacer un pequeño programa de prueba en el que una clase tenga varios métodos cuyos parámetros de entrada y salida sean distintos y hará lo mismo, luego se hace uno con varios métodos con nombres diferentes y (si el decompilador funciona) les dará distintos nombres, probablemente a, b, c...
En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats