Reverse Engineering for Beginners

(avery) #1

CHAPTER 54. JAVA CHAPTER 54. JAVA


stack=2, locals=2, args_size=2
0: new #3 // class java/lang/StringBuilder
3: dup
4: invokespecial #4 // Method java/lang/StringBuilder."<init>":()V
7: aload_0
8: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/⤦
Çlang/String;)Ljava/lang/StringBuilder;
11: aload_1
12: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/⤦
Çlang/String;)Ljava/lang/StringBuilder;
15: invokevirtual #6 // Method java/lang/StringBuilder.toString:()⤦
ÇLjava/lang/String;
18: areturn

Another example:


public static void main(String[] args)
{
String s="Hello!";
int n=123;
System.out.println("s=" + s + " n=" + n);
}

And again, the strings are constructed using theStringBuilderclass and itsappendmethod, then the constructed string
is passed toprintln:


public static void main(java.lang.String[]);
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
0: ldc #2 // String Hello!
2: astore_1
3: bipush 123
5: istore_2
6: getstatic #3 // Field java/lang/System.out:Ljava/io/⤦
ÇPrintStream;
9: new #4 // class java/lang/StringBuilder
12: dup
13: invokespecial #5 // Method java/lang/StringBuilder."<init>":()V
16: ldc #6 // String s=
18: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/⤦
Çlang/String;)Ljava/lang/StringBuilder;
21: aload_1
22: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/⤦
Çlang/String;)Ljava/lang/StringBuilder;
25: ldc #8 // String n=
27: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/⤦
Çlang/String;)Ljava/lang/StringBuilder;
30: iload_2
31: invokevirtual #9 // Method java/lang/StringBuilder.append:(I)Ljava⤦
Ç/lang/StringBuilder;
34: invokevirtual #10 // Method java/lang/StringBuilder.toString:()⤦
ÇLjava/lang/String;
37: invokevirtual #11 // Method java/io/PrintStream.println:(Ljava/lang⤦
Ç/String;)V
40: return

54.15Exceptions.


Let’s rework ourMonthexample (54.13.4 on page 605) a bit:


Listing 54.10: IncorrectMonthException.java

public class IncorrectMonthException extends Exception
{
private int index;


public IncorrectMonthException(int index)
Free download pdf