package com.android.reverse.apimonitor;
import java.lang.reflect.Method;
import android.telephony.PhoneStateListener;
import com.android.reverse.hook.HookParam;
import com.android.reverse.util.Logger;
import com.android.reverse.util.RefInvoke;
public class TelephonyManagerHook extends ApiMonitorHook {
@Override
public void startHook() {
Method getLine1Numbermethod = RefInvoke.findMethodExact(
"android.telephony.TelephonyManager", ClassLoader.getSystemClassLoader(),
"getLine1Number");
hookhelper.hookMethod(getLine1Numbermethod, new AbstractBahaviorHookCallBack() {
@Override
public void descParam(HookParam param) {
Logger.log_behavior("Read PhoneNumber ->");
}
});
Method listenMethod = RefInvoke.findMethodExact(
"android.telephony.TelephonyManager", ClassLoader.getSystemClassLoader(),
"listen", PhoneStateListener.class,int.class);
hookhelper.hookMethod(listenMethod, new AbstractBahaviorHookCallBack() {
@Override
public void descParam(HookParam param) {
// TODO Auto-generated method stub
Logger.log_behavior("Listen Telephone State Change ->");
Logger.log_behavior("PhoneStateListener ClassName = "+param.args[0].getClass().getName());
int event = (Integer) param.args[1];
if((event&PhoneStateListener.LISTEN_CELL_LOCATION) != 0){
Logger.log_behavior("Listen Enent = "+"LISTEN_CELL_LOCATION");
}
if((event&PhoneStateListener.LISTEN_SIGNAL_STRENGTHS) != 0){
Logger.log_behavior("Listen Enent = "+"LISTEN_SIGNAL_STRENGTHS");
}
if((event&PhoneStateListener.LISTEN_CALL_STATE) != 0){
Logger.log_behavior("Listen Enent = "+"LISTEN_CALL_STATE");
}
if((event&PhoneStateListener.LISTEN_DATA_CONNECTION_STATE) != 0){
Logger.log_behavior("Listen Enent = "+"LISTEN_DATA_CONNECTION_STATE");
}
if((event&PhoneStateListener.LISTEN_CELL_LOCATION) != 0){
Logger.log_behavior("Listen Enent = "+"LISTEN_SERVICE_STATE");
}
}
});
}
}