package com.android.reverse.apimonitor; import java.lang.reflect.Method; import java.util.ArrayList; import android.app.PendingIntent; import android.util.Base64; import com.android.reverse.hook.HookParam; import com.android.reverse.util.Logger; import com.android.reverse.util.RefInvoke; public class SmsManagerHook extends ApiMonitorHook { @Override public void startHook() { Method sendTextMessagemethod = RefInvoke.findMethodExact( "android.telephony.SmsManager", ClassLoader.getSystemClassLoader(), "sendTextMessage", String.class,String.class,String.class,PendingIntent.class,PendingIntent.class); hookhelper.hookMethod(sendTextMessagemethod, new AbstractBahaviorHookCallBack() { @Override public void descParam(HookParam param) { // TODO Auto-generated method stub Logger.log_behavior("Send SMS ->"); String dstNumber = (String)param.args[0]; String content = (String)param.args[2]; Logger.log_behavior("SMS DestNumber:"+dstNumber); Logger.log_behavior("SMS Content:"+content); } }); Method getAllMessagesFromIccmethod = RefInvoke.findMethodExact( "android.telephony.SmsManager", ClassLoader.getSystemClassLoader(), "getAllMessagesFromIcc"); hookhelper.hookMethod(getAllMessagesFromIccmethod, new AbstractBahaviorHookCallBack() { @Override public void descParam(HookParam param) { // TODO Auto-generated method stub Logger.log_behavior("Read SMS From Icc ->"); } }); Method sendDataMessagemethod = RefInvoke.findMethodExact( "android.telephony.SmsManager", ClassLoader.getSystemClassLoader(), "sendDataMessage",String.class,String.class,short.class,byte[].class,PendingIntent.class,PendingIntent.class); hookhelper.hookMethod(sendDataMessagemethod, new AbstractBahaviorHookCallBack() { @Override public void descParam(HookParam param) { // TODO Auto-generated method stub Logger.log_behavior("Send Data SMS ->"); String dstNumber = (String)param.args[0]; short port = (Short)param.args[2]; String content = Base64.encodeToString((byte[]) param.args[3],0); Logger.log_behavior("SMS DestNumber:"+dstNumber); Logger.log_behavior("SMS destinationPort:"+port); Logger.log_behavior("SMS Base64 Content:"+content); } }); Method sendMultipartTextMessagemethod = RefInvoke.findMethodExact( "android.telephony.SmsManager", ClassLoader.getSystemClassLoader(), "sendMultipartTextMessage",String.class,String.class,ArrayList.class,ArrayList.class,ArrayList.class); hookhelper.hookMethod(sendMultipartTextMessagemethod, new AbstractBahaviorHookCallBack() { @Override public void descParam(HookParam param) { // TODO Auto-generated method stub Logger.log_behavior("Send Multipart SMS ->"); String dstNumber = (String)param.args[0]; ArrayList<String> sms = (ArrayList<String>) param.args[2]; StringBuilder sb = new StringBuilder(); for(int i=0; i<sms.size(); i++){ sb.append(sms.get(i)); } Logger.log_behavior("SMS DestNumber:"+dstNumber); Logger.log_behavior("SMS Content:"+sb.toString()); } }); } }