[Javalist] saját osztály a java.* csomagban
Peter Verhas
peter at verhas.ch
2013. Sze. 18., Sze, 17:11:48 CEST
http://mishadoff.github.io/blog/java-magic-part-4-sun-dot-misc-dot-unsafe/
Vigyázat! Nem security expert a faszi! A password kimaszkolós példája hibás!
String password = new String("l00k at myHor$e");
String fake = new String(password.replaceAll(".", "?"));
System.out.println(password); // l00k at myHor$e
System.out.println(fake); // ????????????
Field stringValue = String.class.getDeclaredField("value");
stringValue.setAccessible(true);
char[] mem = (char[]) stringValue.get(password);
getUnsafe().copyMemory(
fake, 0L, null, toAddress(password),
sizeOf(password));
System.out.println(password); // ????????????
System.out.println(fake); // ????????????
System.out.println(mem);
Ez gyönyörűen kiírja a password-öt az utolsó sorban. És ahhoz amit
csinálni akar elég a reflection is, nem kell az unsafe.
Quoting "Tamás Cservenák" <tamas at cservenak.net>:
> Par otlet:
> http://www.docjar.com/docs/api/sun/misc/Unsafe.html#defineClass(String,
> byte, int, int)
>
> http://robsjava.blogspot.hu/2013/03/create-java-classes-at-runtime-from.html
>
> http://mishadoff.github.io/blog/java-magic-part-4-sun-dot-misc-dot-unsafe/
>
>
> 2013/9/18 Peter Verhas <peter at verhas.com>
>
>> Tudom, hogy nem lehet, mert Security kivételt dob a class loader, de nem
>> találtam sem a JLS-ben sem a JVM specifikációban.
>>
>> Tudja valaki, hogy ki tiltja meg, hogy oda kerüljön egy osztály?
>>
>> A kérdés úgy merül fel, hogy egy proxy generátort készítek, amelyik egy
>> osztályhoz készít egy proxy osztályt, lefordítja és betölti. Valahogy úgy,
>> mint a cglib, csak
>>
>> - nem bytekódot generálok, hanem forráskódot, és on-the-fly fordítom
>> - nem a proxy létrehozásakor létrejövő ősosztályt proxy-zom, hanem egy már
>> korában létrehozottat
>>
>> A tesztek során egy Object-hez is próbáltam proxy-t létrehozni, de persze
>> nem ment.
>>
>>
>> Dipl. Ing. Peter Verhas
>> peter at verhas.ch
>> skype: verhas
>> Mobile: +41 79 154 2095
>> Arbeit: +41 44 239 8450
>>
>>
>>
>>
>>
>> ------------------------------**------------------------------**----
>> This message was sent using IMP, the Internet Messaging Program.
>> ______________________________**_________________
>> Javalist mailing list
>> Javalist at lists.javaforum.hu
>> http://lists.javaforum.hu/**mailman/listinfo/javalist<http://lists.javaforum.hu/mailman/listinfo/javalist>
>>
>
Dipl. Ing. Peter Verhas
peter at verhas.ch
skype: verhas
Mobile: +41 79 154 2095
Arbeit: +41 44 239 8450
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
További információk a(z) Javalist levelezőlistáról