elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


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

Desconectado Desconectado

Mensajes: 119


Solo es el principio...


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


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
Desarrollador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.919



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

Pues raro si es... el código es decompilado verdad?


En línea

Lopardo

Desconectado Desconectado

Mensajes: 119


Solo es el principio...


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

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: 526



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

valla 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: 119


Solo es el principio...


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

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: 526



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

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: 119


Solo es el principio...


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

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: 47


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

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 pm por Amab » En línea

Odio cuando intentas matar a alguien y se lo toma como algo personal.
Lopardo

Desconectado Desconectado

Mensajes: 119


Solo es el principio...


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

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 pm 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: 3 Noviembre 2007, 15:17 pm »

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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Incluso de esta manera dejo rastros de mi equipo???
Hacking
linkazama 9 10,398 Último mensaje 16 Marzo 2011, 16:12 pm
por linkazama
Lograr hacer esta descripticón.
Java
Meta 2 2,188 Último mensaje 7 Abril 2011, 17:28 pm
por Meta
¿existe alguna manera de lograr una sesion con meterpreter fuera de red local?
Redes
thedevilini 1 4,414 Último mensaje 24 Noviembre 2011, 20:23 pm
por madpitbull_99
(SOLUCIONADO) [BATCH] ¿Como crear una variable de esta manera?...
Scripting
Eleкtro 1 3,091 Último mensaje 11 Enero 2012, 02:01 am
por Eleкtro
Cómo el Big Data está cambiando la manera en la que vivimos
Noticias
Mister12 0 1,935 Último mensaje 20 Agosto 2013, 00:55 am
por Mister12
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines