{"id":7668,"date":"2017-01-05T17:30:10","date_gmt":"2017-01-05T16:30:10","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=7668"},"modified":"2021-11-22T17:14:12","modified_gmt":"2021-11-22T16:14:12","slug":"mit-dem-raspberry-pi-den-java-class-file-disassembler-javap-aufrufen","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=7668","title":{"rendered":"Mit dem Raspberry Pi den Java Class File Disassembler (javap) aufrufen"},"content":{"rendered":"<p>Manchmal will man sehen, was alles so in einer compilierten Java Datei steckt. Nicht immer hat man den Quelltext. Auch f\u00fcr die Fehlersuche ist ein <a href=\"https:\/\/de.wikipedia.org\/wiki\/Disassembler\" target=\"_blank\" rel=\"noopener noreferrer\">Disassembler<\/a> mal ganz gut.<\/p>\n<p>In jedem JDK ist auch ein Disassembler <strong>javap<\/strong> dabei. Denn wollen wir nun einmal auf eine unbekannte Java Class Datei loslassen, um zu sehen, was es so zu sehen gibt.<\/p>\n<p>Zuerst loggen wir uns auf die Kommandozeile eines Raspberry Pi ein, auf dem ein Java JDK installiert ist. Ob Java installiert ist kann mit<\/p>\n<pre class=\"lang:default decode:true \" >\r\njava -version \r\n<\/pre>\n<p>getestet werden. Wenn dort eine Versionsangabe geliefert wird, ist alles ok.<\/p>\n<p>Dann legen wir erst mal ein Testverzeichnis an und wechsel in das Verzeichnis:<\/p>\n<pre class=\"lang:default decode:true \" >\r\nmkdir java-test\r\ncd java-test\r\n<\/pre>\n<p>Dann holen wir uns in das Verzeichnis eine unbekannte <strong>Flugzeug.class<\/strong> Datei (der Quellcode ist <a href=\"https:\/\/github.com\/IT-Berater\/de.wenzlaff.dump1090\/blob\/master\/src\/main\/java\/de\/wenzlaff\/dump1090\/be\/Flugzeug.java\" target=\"_blank\" rel=\"noopener noreferrer\">hier<\/a> zu finden):<\/p>\n<pre class=\"lang:default decode:true \" >\r\nwget http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Flugzeug.class\r\n<\/pre>\n<p>Diese Datei wollen wir nun disassemblieren, mit<\/p>\n<pre class=\"lang:default decode:true \" >\r\njavap Flugzeug.class\r\n<\/pre>\n<p>Schon bekommen wir alle gew\u00fcnschten Informationen:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-16.58.45.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-16.58.45.png\" alt=\"\" width=\"718\" height=\"255\" class=\"aligncenter size-full wp-image-7670\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-16.58.45.png 718w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-16.58.45-300x107.png 300w\" sizes=\"auto, (max-width: 718px) 100vw, 718px\" \/><\/a><\/p>\n<p>Nun schauen wir uns mal alle M\u00f6glichkeiten an:<!--more--><\/p>\n<pre class=\"lang:default decode:true \" >\r\njavap --help\r\n<\/pre>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.00.05.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.00.05.png\" alt=\"\" width=\"811\" height=\"480\" class=\"aligncenter size-full wp-image-7671\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.00.05.png 811w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.00.05-300x178.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.00.05-768x455.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Ok, da ist allso mehr m\u00f6glich, wie ein disassemblieren:<\/p>\n<pre class=\"lang:default decode:true \" >\r\njavap -c Flugzeug.class\r\n<\/pre>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.02.15.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.02.15.png\" alt=\"\" width=\"954\" height=\"537\" class=\"aligncenter size-full wp-image-7672\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.02.15.png 954w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.02.15-300x169.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.02.15-768x432.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Manchmal braucht man das letzte bearbeitet Datum oder die MD5 Checksumme:<\/p>\n<pre class=\"lang:default decode:true \" >\r\njavap -sysinfo Flugzeug.class\r\n<\/pre>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.24.28.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.24.28.png\" alt=\"\" width=\"698\" height=\"378\" class=\"aligncenter size-full wp-image-7678\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.24.28.png 698w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2017\/01\/Bildschirmfoto-2017-01-05-um-17.24.28-300x162.png 300w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/a><\/p>\n<p>Wer weitere Beschreibung sucht, kann die Beschreibung der Parameter auf deutsch lesen. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Manchmal will man sehen, was alles so in einer compilierten Java Datei steckt. Nicht immer hat man den Quelltext. Auch f\u00fcr die Fehlersuche ist ein Disassembler mal ganz gut. In jedem JDK ist auch ein Disassembler javap dabei. Denn wollen wir nun einmal auf eine unbekannte Java Class Datei loslassen, um zu sehen, was es &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=7668\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eMit dem Raspberry Pi den Java Class File Disassembler (javap) aufrufen\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,5,808,79,1023,7],"tags":[2723,2722,2178,2721,256],"class_list":["post-7668","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java","category-linux-2","category-programmierung","category-raspberry-pi","category-tools","tag-disassembler","tag-disassemblieren","tag-java","tag-javap","tag-tool"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/7668","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7668"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/7668\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7668"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7668"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7668"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}