package com.android.reverse.apimonitor; import com.android.reverse.hook.HookParam; import com.android.reverse.hook.MethodHookCallBack; import com.android.reverse.util.Logger; public abstract class AbstractBahaviorHookCallBack extends MethodHookCallBack { @Override public void beforeHookedMethod(HookParam param) { // TODO Auto-generated method stub Logger.log_behavior("Invoke "+ param.method.getDeclaringClass().getName()+"->"+param.method.getName()); this.descParam(param); //this.printStackInfo(); } @Override public void afterHookedMethod(HookParam param) { // TODO Auto-generated method stub //Logger.log_behavior("End Invoke "+ param.method.toString()); } private void printStackInfo(){ Throwable ex = new Throwable(); StackTraceElement[] stackElements = ex.getStackTrace(); if(stackElements != null){ StackTraceElement st; for(int i=0; i<stackElements.length; i++){ st = stackElements[i]; if(st.getClassName().startsWith("com.android.reverse")||st.getClassName().startsWith("de.robv.android.xposed.XposedBridge")) continue; Logger.log_behavior(st.getClassName()+":"+st.getMethodName()+":"+st.getFileName()+":"+st.getLineNumber()); } } } public abstract void descParam(HookParam param); }