package
com.kali.hooktest;
[/align]Hook onClick的代码 [color=#
000
][backcolor=rgb(
228
,
228
,
255
)][font=宋体][size=12px]Tutorial.java[/size][/font][/backcolor][/color]
[color=#
000
][backcolor=rgb(
228
,
228
,
255
)][font=宋体][size=12px]
[/size][/font][/backcolor][/color]
[align=left]
import
android.view.View;
import
android.widget.EditText;
import
java.lang.reflect.Field;
import
de.robv.android.xposed.IXposedHookLoadPackage;
import
de.robv.android.xposed.XC_MethodHook;
import
de.robv.android.xposed.XposedBridge;
import
de.robv.android.xposed.callbacks.XC_LoadPackage;
import
static
de.robv.android.xposed.XposedHelpers.findAndHookMethod;
public
class
Tutorial
implements
IXposedHookLoadPackage {
public
void
handleLoadPackage(
final
XC_LoadPackage.LoadPackageParam lpparam)
throws
Throwable {
if
(!lpparam.packageName.equals(
"com.kali.login"
))
return
;
XposedBridge.log(
"Loaded app: "
+ lpparam.packageName);
findAndHookMethod(
"com.kali.login.MainActivity"
, lpparam.classLoader,
"onClick"
, View.
class
,
new
XC_MethodHook() {
@Override
protected
void
beforeHookedMethod(MethodHookParam param)
throws
Throwable {
}
@Override
protected
void
afterHookedMethod(MethodHookParam param)
throws
Throwable {
Class clazz = param.thisObject.getClass();
XposedBridge.log(
"class name:"
+clazz.getName());
Field field = clazz.getDeclaredField(
"etU"
);
field.setAccessible(
true
);
EditText username = (EditText) field.get(param.thisObject);
username.setText(
"admin"
);
XposedBridge.log(
"uname = "
+ username.getText().toString());
}
});
}
}