Javap descompilar desamblar archivos class en Java

Con total seguridad, y por un descuido acompañado de la insensatez de no hacer copias de seguridad (obligatorias para todo aquel tenga algo de valor y quiera asegurar su existencia de cualquier fichero informático). La gran mayoría de personas, por no decir el 100% de los humanos que hemos trabajado con ordenador de forma continuada, hemos borrado de forma definitiva algo que no deberíamos borrar. Imaginaros que vuestro programa compila pero tras hacer unos ajustes modificáis o eliminado un trozo de programa para compilarlo y al ejecutarlo ¡Pam! no funciona, como ya supongo que os habréis dado cuenta, para compilar, debemos de  guardar el programa y la única manera de recuperar ese trozo de código es con Edit>Undo (atras) o Redo (adelante) o con las teclas de  control + z (para echar para atrás) y control + y (para echar para adelante).

Aunque siempre que no queramos compilar un trozo de código podemos comentarlo y así evitamos su perdida.

Aprovecho para contaros un chiste, como se hace la marcha atrás, refiriéndose al sexo en la informática, pues con control + z control + y.

Bien, esté dentro de lo que cabe, es un mal menor, ya que se puede resolver de una manera bastante sencilla, como hemos visto arriba. Pero ¿Que pasa si borramos el archivo .java? (el que contiene el código sí). Lo primero como no, es mirar en el papelera, pero si tampoco está. Afortunadamente en el mejor de los casos, aún conservamos el archivo .class (el compilado), aún tenemos la posibilidad de recuperar el código sin tener que picarlo de nuevo. Esto también cobra especial uso para un programa .class que no hemos creado nosotros mismos y del cual queremos obtener el código fuente. Esto, se hace gracias al comando de descompilar javap:

La carpeta del proyecto (en este caso HolaMundo), contiene dos subdirectorios, el de src (que contiene los archivos .java) y el bin (que contiene los archivos .class).

Bien pues nosotros nos meteremos en la carpeta bin que contiene los archivos .class. Una vez dentro, es posible hacer lo que se conoce como un desensamblado sobre un archivo en .class en formato bytecode, con el comando javap que nos permitirá obtener una versión algo más legible que en un formato binario.

Vamos a trabajar un poco con ello:

Si hacemos un dir en el bin podemos ver el archivo que vamos a desensamblar, si hacemos un javap a ese archivo, solo nos aparecerá Main y  HolaMundo().

Bien si queremos ver más al detalle todo esto, podemos hacer un javap -c holamundo.class y podemos comprobar en el main que hay un System.out.print de Holamundo con el método println.

Por lo tanto, el resultado sería un: System.out.println(“Hola Mundo”);

Si os fijáis al principio de todo, dentro del public class, encontramos java.lang, una clase que Java carga automáticamente por defecto que nos permite hacer cosas básicas, pero de esto no os preocupéis ya que hablaremos de ello más adelante.

En este caso por ejemplo si fuéramos a Eclipse, podríamos importar la clase java.lang.*, que incluiría toda la clase lang, o también podemos especificar, que solo coja la parte de mensaje por consola, y así optimizar recursos. La clase Java.lang. contiene el java.io.PrintStream que mostrará el mensaje por pantalla. Eso sí, como hemos dicho todo lo que usemos de está clase, está por defecto importando y no haría falta.

Eso sí, esto no queda de forma muy clara, pero tenemos otra manera más sencilla y más productiva ya que nos lo hará el proceso inverso a una compilación y nos descompilará el archivo .class. Como habéis podido comprobar que esto tiene miga. Pero para facilitarnos la tarea, hay programas que se encargan de hacernos este proceso mucho más sencillo y nos permiten aparte hacer una descompilación “como dios manda”.

Podemos realizar la descompilación desde la web: http://www.javadecompilers.com/

O bien descargar la alguna aplicación especializada para ello como son:

  • Descargamos la versión JD-GUI compatible con nuestro sistema operativo. Abrimos el archivo y ¡tachan! Como si de magia se tratará, ya tenemos el archivo original.
  • DJ Java Decompiler (de pago pero nos permite realizar la descompilación sin problema)  (haz clic aquí para descargarlo).

Abrimos el archivo y ¡tachan! Como si de magia se tratará, ya tenemos el archivo original.

Si ahora os paráis a analizar un poco el código podréis ver todo lo anteriormente comentado de una forma más clara.

24 comentarios

  1. It’s really a nice and useful piece of info.

    I am happy that you simply shared this useful info with us.
    Please keep us informed like this. Thanks for sharing.

  2. This is the perfect web site for anyone who wishes to
    find out about this topic. You know a whole lot its almost hard to argue
    with you (not that I really will need to?HaHa). You certainly put
    a fresh spin on a subject that has been discussed for decades.

    Wonderful stuff, just excellent!

    my website; https://www.nazisociopaths.org/

  3. I was recommended this website by my cousin. I am not sure
    whether this post is written by him as no one else know such detailed about my difficulty.

    You are incredible! Thanks!

  4. You really make it seem so easy with your presentation but I
    find this matter to be actually something that I think I would never understand.

    It seems too complicated and extremely broad
    for me. I am looking forward for your next post, I’ll try to get the hang of it!

  5. I just couldn’t go away your site before suggesting that I really loved the usual information a person provide to your visitors?
    Is going to be again steadily in order to investigate cross-check new posts

    My web-site :: http://walnut.ut.ac.ir/UserProfile/tabid/43/UserID/1442440/Default.aspx

  6. I precisely had to say thanks all over again. I am not sure the things I would’ve gone through without the tricks revealed by
    you directly on this problem. It truly was a very depressing
    crisis in my opinion, but being able to see a new skilled manner you
    dealt with that forced me to weep for fulfillment.

    I’m happier for your information and thus hope you
    are aware of a powerful job you are getting into educating some other people through your websites.

    Most probably you have never come across all of us.

    Here is my webpage; Wawza Apple Cider Vinegar

  7. Everyone loves what you guys tend to be up too. This sort of clever work and reporting!
    Keep up the fantastic works guys I’ve added you guys to my personal blogroll.

    Feel free to surf to my web blog :: IceHouse Portable AC

  8. hey there and thank you for your information – I have definitely picked up anything new
    from right here. I did however expertise a few technical issues using this web site, as I experienced to
    reload the website a lot of times previous to I could get it to
    load correctly. I had been wondering if your web hosting is OK?
    Not that I’m complaining, but sluggish loading instances times will very
    frequently affect your placement in google and could damage your high quality score if ads
    and marketing with Adwords. Well I’m adding this RSS to my
    e-mail and can look out for a lot more of your respective fascinating
    content. Ensure that you update this again soon..

    Here is my web site :: forum.adm-tolka.ru

  9. My spouse and I stumbled over here from a different web page and thought I
    might check things out. I like what I see so i am just following you.
    Look forward to looking into your web page yet again.

  10. What i don’t realize is in truth how you’re now not really much more smartly-appreciated than you may be
    now. You’re very intelligent. You already know therefore considerably on the subject of this topic, made me in my opinion consider it from so many
    various angles. Its like men and women don’t seem to be fascinated unless
    it is one thing to accomplish with Girl gaga!

    Your personal stuffs nice. At all times maintain it up!

  11. You really make it seem so easy with your presentation but I find this topic to be actually something
    that I think I would never understand. It seems too complicated
    and very broad for me. I am looking forward for your
    next post, I’ll try to get the hang of it!

  12. Hi, I believe your site may be having web browser compatibility problems.
    Whenever I take a look at your website in Safari, it looks fine but when opening in IE, it has some overlapping issues.

    I merely wanted to provide you with a quick heads up!
    Besides that, wonderful site!

    Feel free to visit my blog … BioShed Keto

  13. Hi there, this weekend is nice in support of me,
    because this time i am reading this enormous educational paragraph here at my
    house.

    Also visit my site – kanmoulue.com

  14. After looking into a handful of the blog posts on your web site,
    I really appreciate your technique of blogging. I saved it to my bookmark website list and will be
    checking back soon. Take a look at my web site as well and tell me how you
    feel.

    Also visit my web page – Bio Shed Keto Slim Review

  15. Hurrah! After all I got a web site from where I can really obtain valuable data regarding my study
    and knowledge.

    Feel free to surf to my site – Vigor Max

  16. What a material of un-ambiguity and preserveness of precious know-how
    on the topic of unexpected emotions.

    Feel free to surf to my web-site Viking XL Keto

  17. Thanks for a marvelous posting! I really enjoyed reading it,
    you might be a great author.I will make certain to bookmark your blog and will often come back down the road.
    I want to encourage you to ultimately continue your great job, have a nice day!

    Here is my blog post … Vigor Max

  18. Wow! This can be one particular of the most helpful blogs
    We have ever arrive across on this subject. Actually Excellent.
    I’m also a specialist in this topic so I can understand your effort.

    Visit my blog post; Moscatcher

  19. Hi there, I discovered your web site by way of Google at the same time
    as searching for a similar matter, your web site got here
    up, it seems good. I have bookmarked it in my google bookmarks.[X-N-E-W-L-I-N-S-P-I-N-X]Hello there, simply become alert to your weblog through Google,
    and located that it’s really informative.
    I am gonna watch out for brussels. I’ll appreciate when you continue this in future.
    A lot of other people will likely be benefited out of
    your writing. Cheers!

    Feel free to surf to my page :: Wawza Gummies

  20. Hi, i read your blog from time to time and i own a similar one and i was just curious
    if you get a lot of spam comments? If so how do you protect against it,
    any plugin or anything you can advise? I get so much lately it’s driving me mad so
    any support is very much appreciated.

  21. wonderful points altogether, you just gained a emblem new reader.
    What might you suggest about your put up that you
    made a few days in the past? Any sure?

  22. We absolutely love your blog and find most of your post’MosQiller S Zapper to be what precisely
    I’m looking for. can you offer guest writers to
    write content for you personally? I wouldn’t mind producing a post or elaborating on some of the subjects you
    write with regards to here. Again, awesome web log!

  23. I read this post completely on the topic of
    the comparison of hottest and earlier technologies,
    it’s remarkable article.

  24. I have been browsing online more than 2 hours today, yet I never found
    any interesting article like yours. It is pretty worth enough for me.
    In my opinion, if all site owners and bloggers made good content as you did, the web will be a lot
    more useful than ever before.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

La Ley 34/2002 nos obliga a avisarte de que usamos cookies propias y de terceros con objetivos estadísticos y de sesión y para mostrarte la 'publi' que nos da de comer. Tranquilo, este mensaje solo sale una vez. Más información

Java desde 0 comunica a los usuarios, a través de este aviso, que puede utilizar cookies cuando el usuario navega por las diferentes pantallas y páginas del sitio. Durante el uso de nuestra página Web usted acepta y autoriza expresamente el uso de cookies, de acuerdo con nuestra Política de Privacidad. Este sitio web utiliza las siguientes cookies propias: - Cookies de sesión, para garantizar que los usuarios que escriban comentarios en el blog sean humanos y no aplicaciones automatizadas. De esta forma se combate el spam. Este sitio web utiliza las siguientes cookies de terceros: - Google AdManager y AdSense: Utiliza cookies para mejorar la publicidad. Entre otros fines, suelen utilizarse para segmentarla según el contenido que sea relevante para los usuarios o su ubicación, mejorar los informes de rendimiento de las campañas y evitar mostrar anuncios que los usuarios ya hayan visto. Las cookies no contienen información personal identificable. Consulta cómo utiliza Google la información de sitios web o aplicaciones. y cómo bloquear determinados anuncios. - Google Analytics: Almacena cookies para poder elaborar estadísticas sobre el tráfico y volumen de visitas de esta web. Al utilizar este sitio web está consintiendo el tratamiento de información acerca de usted por Google. Por tanto, el ejercicio de cualquier derecho en este sentido deberá hacerlo comunicando directamente con Google. - Redes sociales: Cada red social utiliza sus propias cookies para que usted pueda pinchar en botones del tipo Me gusta o Compartir.

Cerrar