手机“秘密” 发短信清除
模仿功能:短信清除程序
模仿对象:手机看门狗
模仿进度:第二期
开发平台:Windows Mobile平台
手机丢了,里面的照片怎么办?文件怎么办?删除!如果不法分子利用电话簿进行诈骗,祸害无穷,电话簿也要删除。
短信清除程序设计思路
上期我们通过SIM卡与手机的绑定,实现了SIM卡偷换通知功能。我们知道手机被人拾到了,可手机里面的隐私却不想被人知道,该怎么办?短信清除程序就可以派上用场,利用它就可以远程命令手机清空电话簿、删除照片、文件等。这个程序适合所有的手机用户,特别是商业用户和爱自拍的用户。
要设计短信清除程序,先要监视手机接收的短消息,对收到的短信息进行判断,判断是否为预先约定的指令短信,如果是清空联系人的指令短信,就执行清空电话簿内联系人的操作;如果是清空“我的文档”的指令短信,就执行清空“我的文档”的操作。操作完成后,回复一条已经成功执行的短信给下达指令的手机。依此思路,我们还可以添加更多的短信指令,比如删除照片,卸载程序,甚至格式化机器的指令等等。
如何识别指令短信
要一条短信就能控制手机,有一个难点,那就是短信这么多如何知道哪条是指令短信?这就需要手机能自动识别指令短信。要自动识别指令短信,必须要进行短信拦截,进行逐一识别。
我们可以使用.Net CF中提供的MessageInterceptor来进行短信拦截。从.Net CF 2.0开始,就提供了Microsoft.WindowsMobile.PocketOutlook.MessageInterception命名空间,通过使用该命名空间,可以截获短信和邮件的到达消息。
该命名空间中我们要用到3个类:1.MessageInterceptor:短信息拦截器类,一旦添加监控事件后,就会对所有短消息进行监控。2.MessageCondition:监控的过滤筛选条件类,通过设置需要过滤某个字段。3.MessageInterceptorEventHandler:监控事件,一旦截获某消息,就立即执行该方法。
我们需要创建一个短信息拦截器,同时要创建一个过滤条件,该过滤条件规定以什么样的方式对接收到的短信进行选择性匹配,将该过滤条件赋值给短信息拦截器之后,再为该拦截器添加监控事。这样,短信拦截器便可以按拦截到我们所需要拦截的短信了。
学会配置短信息拦截器,对开发短信类软件或者系统软件是有很大帮助的,例如开发短信防火墙、远程遥控程序等。此外,还可以利用短信指令进行一些恶作剧程序的开发。
短信清除程序开发步骤
第一步:创建项目
启动Visual Studio 2008,选择“文件→新建项目”。在弹出的“新建项目”的“项目类型”中选择“Visual C#→智能设备”,“模板”选“智能设备项目”,“名称”设为“Watchdog2”。在弹出的“添加新智能设备项目”对话框中,“目标平台”选择“Windows Mobile 6 Professional SDK”,“.Net Compact Framework 版本”选择“.Net Compact Framework Version 3.5”,“模板”选“设备应用程序”完成项目创建。
第二步:添加引用
要使用MessageInterceptor,需要先添加程序集Microsoft.WindowsMobile.dll和Microsoft.WindowsMobile.PocketOutlook.dll的引用,然后引用Microsoft.WindowsMobile.PocketOutlook和Microsoft.WindowsMobile.PocketOutlook.MessageInterception命名空间。
在“解决方案资源管理器”内,点击 “Watchdog2→添加引用→.Net”,选中“Microsoft.WindowsMobile”和“Microsoft.WindowsMobile.PocketOutlook”,点击“确定”即可。打开Form1.cs,添加如下代码:
1 2 | using Microsoft.WindowsMobile.PocketOutlook; using Microsoft.WindowsMobile.PocketOutlook.MessageInterception; |
第三步:监视短信
创建短信拦截器,并添加拦截条件,添加短信监控事件,便可拦截到所需短信了。在这里可以添加多种条件的短信拦截器。在Form1.cs中添加代码,关键码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):
1 2 3 4 5 6 7 8 9 | MessageCondition messageCondition = new MessageCondition(); //创建一个拦截条件对象 messageCondition.Property = MessageProperty.Body; //针对消息体匹配 messageCondition.ComparisonType = MessagePropertyComparisonType.Equal; //匹配类型为全部相等 messageCondition.ComparisonValue = "{Watchdog:ClearContacts}" ; //匹配的内容(清空联系人) messageCondition.CaseSensitive = true ; //匹配时区分大小写 MessageInterceptor messageInterceptor = new MessageInterceptor( //创建一个短消息拦截器对象 InterceptionAction.NotifyAndDelete, //拦截动作:通知并删除 true ); |
第四步:执行指令操作
拦截到了指令短信,便会触发对应的MessageReceived事件,我们在该事件中执行对应的指令操作。在拦截事件处理方法messageInterceptor_MessageReceived内,添加如下代码,关键码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):
1 2 3 4 5 6 | using (OutlookSession outlookSession = new OutlookSession()) //创建OutlookSession 实例 { outlookSession.Contacts.Items.Clear(); //清空电话簿 } SmsMessage sms = new SmsMessage(e.Message.From.Address, "Executed" ); //已执行回执 sms.Send(); //发送回执 |
第五步:测试程序
如果你有一台Windows Mobile系统的真机,可以轻松通过实际发短信的方式测试程序,不过测试前,请先备份好自己的电话簿^_^。如果没有真机怎么办?这里我们介绍使用模拟器进行测试的方法。
我们需要使用两个模拟器:设备模拟器与蜂窝模拟器。前者在pc上模拟一台WM手机终端设备;后者则模拟一个蜂窝网络设备,用于与设备模拟器进行通信。
首先启动Windows Mobile 6 SDK自带的Cellular Emulator(即蜂窝模拟器),点击“开始→Windows Mobile 6 SDK→Tools→Cellular Emulator”启动蜂窝模拟器。然后在Visual Studio2008中点击菜单“调试→启动调试”(或者直接按F5),在弹出的部署对话框中选择“CHS Windows Mobile 6 Professional Emulator”,点击“部署”,则会自动启动设备模拟器并将程序部署到设备模拟器上,部署完成之后会自动启动程序。
若设备模拟器内显示已经连通网络的图标(一般为满格信号),则表示手机模拟器已经与蜂窝模拟器连通了,这时,便可以通过蜂窝模拟器往设备模拟器发送短信了(图2)。
读者反馈
开发QQ群:很好奇,手机号码是怎么跟SIM卡绑定的?
小编:我们通常所用的手机,一个SIM卡对应一个手机号码。在移动运营商的系统内部,保存有SIM卡卡号与手机号码的一个对应关系。当手机开机后接入网络时,有一个注册登记的过程。在该过程中,手机会提供SIM卡卡号给运营商网络,运营商系统根据该SIM卡卡号便可得知该SIM卡的手机号码是多少。
开发QQ群:我想问下为什麽我装了Windows Mobile profession SDK不能打开项目,是不是还有其他SDK还没有装?
小编:要打开 Windows Mobile程序项目,需要先安装Microsoft Visual Studio 与windows mobile profession SDK。Visual Studio 是微软公司推出的集成开发环境,是目前最流行的 Windows 平台应用程序开发环境。
开发QQ群:我开发的程序在试用时,一安装就出现“user 23错误”,为什么会这样?
小编: 在诺基亚的SDK5中,常会出现错误: “程序已关闭!WidgetRegistry USER 23”。这个是由于其不能很好的处理非英文字符所引起的。一般把Widget的info.plist文件里面的字符全部改为英文即可解决。
开发QQ群:我想做个DLL拦截短信,应该怎么做?
小编:SDK中提供一个Mapirule的例子,展示了如何拦截短信。在目录“…\Windows Mobile 6 SDK\Samples\Common\CPP\Win32\MapiRule”中,读者可自行查看。需要注意的是,在编译好mapirule.dll后,要对注册表进行一点改动。
1.增加一项HKEY_CLASSES_ROOT\CLSID\{3AB4C10E-673C-494c-98A2-CC2E91A48115\InProcServer32,默认值为mapirule.dll,字符型。
2.增加一项HKEY_LOCAL_MACHINE\Software\Microsoft\Inbox\Svc\SMS\Rules,新键名为{3AB4C10E-673C-494c-98A2-CC2E91A48115},值为1,DWORD型。注册表改完,mapirule.dll拷到windows目录下。重启一下手机,拦截开始起作用。
读者问题:文中提到,程序随系统开机运行,应该如何实现?如果我需要开发一个无界面后台运行的程序(如手机看门狗的验证程序),应该怎么做?
高手 竹园春:程序需要随系统启动,可以将exe文件保存至目录“windows\sartup”下,或者创建exe文件的快捷方式到该目录下。如果程序不需要显示界面,可以创建一个“控制台应用程序”;如果是“设备应用程序”,则可在窗体的Form_Actived事件下添加this.Hide()的代码。
读者问题:手机上有数据库吗?如果有,常用的有哪些呢?使用.NET CF应该怎么开发WM上的数据库应用?
(载《电脑报》2009年28期)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· .NET Core GC压缩(compact_phase)底层原理浅谈
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp