MMS接收彩信为例。
一, 抓取TCP DUMP数据
1, 连接手机,在接收MMS前, adb shell tcpdump -i any -p -s 0 -w /data/capture.pcap (这个名字可以自己命名)
2, 收完彩信完毕后, adb pull /data/capture.pcap
3, 在adb 文件夹下 找到 capture.pcap .
二 替换代码:
pduparser.java文件中, parse 函数 将 步骤1中抓取的数据替换
public GenericPdu parse(){
if (mPduDataStream == null) {
return null;
}
byte[] data = {(byte)0x8c, (byte)0x84, (byte)0x98, (byte)0x32, (byte)0x74, (byte)0x69,
(byte)0x64, (byte)0x63, (byte)0x6d, (byte)0x6d, (byte)0x73, (byte)0x36, (byte)0x31, (byte)0x34,
(byte)0x35, (byte)0x37, (byte)0x30, (byte)0x35, (byte)0x36, (byte)0x32, (byte)0x30, (byte)0x32,
mPduDataStream = new ByteArrayInputStream(data);
三, 接收MMS
提前准备好1彩信通知,接收 就执行了替换的代码。
SMS 同样也采用替换的方法
在SMSMessage.java文件中, parsePdu函数
替换 pdu
Log.e(LOG_TAG, " parsePdu " + IccUtils.bytesToHexString(pdu));
pdu = IccUtils.hexStringToBytes(替换的数据)