package com.android.reverse.apimonitor;
import java.lang.reflect.Method;
import java.util.Iterator;
import android.content.BroadcastReceiver;
import android.content.IntentFilter;
import com.android.reverse.hook.HookParam;
import com.android.reverse.util.Logger;
import com.android.reverse.util.RefInvoke;
public class ContextImplHook extends ApiMonitorHook{
@Override
public void startHook() {
// TODO Auto-generated method stub
Method registerReceivermethod = RefInvoke.findMethodExact(
"android.app.ContextImpl", ClassLoader.getSystemClassLoader(),
"registerReceiver", BroadcastReceiver.class,IntentFilter.class);
hookhelper.hookMethod(registerReceivermethod, new AbstractBahaviorHookCallBack() {
@Override
public void descParam(HookParam param) {
// TODO Auto-generated method stub
Logger.log_behavior("Register BroatcastReceiver");
Logger.log_behavior("The BroatcastReceiver ClassName = "+param.args[0].getClass().toString());
if(param.args[1] != null){
String intentstr = descIntentFilter((IntentFilter) param.args[1]);
Logger.log_behavior("Intent Action = ["+intentstr+"]");
}
}
});
}
public String descIntentFilter(IntentFilter intentFilter){
StringBuilder sb = new StringBuilder();
Iterator<String> actions =intentFilter.actionsIterator();
String action = null;
while(actions.hasNext()){
action = actions.next();
sb.append(action+",");
}
return sb.toString();
}
}