carookee - group communication for you
Home / JavaForum / Java allgemein
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
5.909 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 528 von 2212 (24%) |<   <   >   >|

Autor Chris Lenz
Datum 30.01.02, 19:29
Betreff Kann mir mal jemand auf die Sprünge helfen...


...ich sehe den Wald vor lauter Bäumen nicht :-(

Ich lese einen Artikel über Java und Security. Da gibt es ein Beispiel, wie man die VM und den entsprechenden Verifizierer "austrickst". Ist ja ganz nett, aber ich kapier nicht warum?? Hier der Code:

Klasse Test1:
public
class Test1
{
    public static void main(String [] arstring)
    {
        Float a = new Float(56.78);
        Integer b = new Integer(1234);
        System.out.println(a.toString());
    }
}


gibt auf der Konsole aus: 56.78 OK!

Nun ein Ausdruck auf der Console mit javap ergibt:

0 new #3
3 dup
4 ldc2_w #13
7 invokespecial #8
10 astore_1
11 new #4
14 dup
15 sipush 1234
18 invokespecial #9
21 astore_2
22 getstatic #10
25 aload_1
26 invokevirtual #12
29 invokevirtual #11
32 return

Auch OK!

Jetzt wird auf 25 -> geändert auf aload_2 ABER WIE ???

Ohne Verifizierer gibt es jetzt eine Fehlermeldung:

Exception in thread "main" java.lang.VerifyError:
(class: Test1, method: main signature: ([Ljava/lang/String;)V)
Incompatible object argument for function call


so, wenn ich nun mit

java -noverify Test1

starte kommt in der Tat 1234.

Klar, eine andere referenz, LOL. Aber wie manipuliere ich denn nun den einen Byte vom Bytecode ???

Für alle, den der Artikel interessiert:

http://www.javaworld.com/javaworld/jw-06-2001/jw-0615-howto.html?#resources

Dort kann man sich auch die manipulierten Klassen herunterladen, drei Stück.

Vielleicht kann mir das jemand mal erklären.

Danke und Gruss
Chris


 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com