classファイルを変更してありえない名前のメソッドを作る
先日の続きをやってみます。
今度は、"this"という名前に変えてみました。74 68 69 73です。
javapでclassファイルを見てみるとこんな感じです。
C:\home\eclipse\test>javap InvisibleMethod Compiled from "InvisibleMethod.java" class InvisibleMethod extends java.lang.Object{ InvisibleMethod(); void this(); public static void main(java.lang.String[]); }
変だwww。しかしチャンと動きます。
jadで逆コンパイルすると、"_mththis"という名前になりました。
jadはだませません。結構賢いですね。>jad
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) // Source File Name: InvisibleMethod.java import java.io.PrintStream; class InvisibleMethod { InvisibleMethod() { } void _mththis() { System.out.println("hoge"); } public static void main(String args[]) { (new InvisibleMethod())._mththis(); } }
もうひとつ別の名前でやってみました。"(^^;" です。28 5E 5E 3Bです。
C:\home\eclipse\test>javap InvisibleMethod Compiled from "InvisibleMethod.java" class InvisibleMethod extends java.lang.Object{ InvisibleMethod(); void (^^;(); public static void main(java.lang.String[]); }
ははは、楽しいメソッド名です。(^^;
でもやっぱりチャンと動きます。
Jadではこんな感じになります。
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) // Source File Name: InvisibleMethod.java import java.io.PrintStream; class InvisibleMethod { InvisibleMethod() { } void _28__5E__5E__3B_() { System.out.println("hoge"); } public static void main(String args[]) { (new InvisibleMethod())._28__5E__5E__3B_(); } }