Although there are similar questions (such as A, B and C), their answers do not solve my problem.
I am using Android Studio 1.5.1 targeting Android API 18 (before Android KitKat 4.4, so I’m dealing with Dalvik, not ART runtime).
My questions are:
(1) When I use the following code, I can print a list of all sun.misc.Unsafe methods available in Android, so I think I have access to them using reflection but I do not know how to call them using reflection.
(2) If (1) is possible, how to find the magicNumber (in the code below) address using sun.misc.Unsafe methods in Android via reflection?
(3) If (1) is possible but (2) is not possible, how to put an integer number (say int test=123) in any native memory address and print its memory address using sun.misc.Unsafe methods in Android via reflection?
String ClassName = "sun.misc.Unsafe";
int magicNumber = 0x23420023 ;
try {
Class classToInvestigate = Class.forName(ClassName);
Constructor[] aClassConstructors = classToInvestigate.getDeclaredConstructors();
for(Constructor c : aClassConstructors){
System.out.println("********************* constructor="+c);
}
Method[] aClassMethods = classToInvestigate.getDeclaredMethods();
for(Method m : aClassMethods){
System.out.println("********************* method="+m);
}
Field theUnsafe = classToInvestigate.getDeclaredField("THE_ONE");
theUnsafe.setAccessible(true);
Object unsafe = theUnsafe.get(null);
} catch (ClassNotFoundException e) {
// Class not found!
}
catch (Exception e) {
// Unknown exception
}
Aucun commentaire:
Enregistrer un commentaire