危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2289 浏览18790774

安卓手机短信窃听器开发实战

现在智能手机越来越多,目前市场上的智能手机的操作系统大概分为Symbian、WindowsMobile、Linux、palm、Mac OS还有最新的Android和OMS。虽然现在智能手机的功能越来越丰富了,但是在智能手机的安全方面还存在很多不足,即使现在已经有了一些智能手机杀毒软件,但是仍不能全面的保证智能手机的安全。下面危险漫步给大家介绍一下如何通过编程的方法来实现窃听别人手机的短信——手机短信窃听器。

一,准备工作

首先,要开发基于android操作系统的手机短信窃听器,就必须要搭建一个android软件开发环境,我采用的开发环境主要包括如下工具:

(1) JAVA的IDE开发工具-Eclipse

(2) Java开发包-Java SE Development Kit

(JDK) JDK 6

(3) Android开发包-Anoid SDK

(4) Android开发插件(ADT- plugin)

1.1环境搭建步骤如下:

A.JDK的安装

首先,我们先安装JDK。下完以后进行安装,安装步骤很简单一直点“下一步”即可。

B、SDK的安装

下面安装Android开发包-Android SDK我们可以到Google的官方网站下载,下载完后会得到一个压缩包,把这个压缩包解压之后会看到这样几个文件。

然后,运行“SDK Manager.exe”进行androidSDK的安装,在安装的过程中或许有一点慢,因为需要联网去下载各个版本的SDK,下载速度和你的网速有关,如果你想快一点的话可以仅下载你所需要版本的SDK,我开发这个手机短信窃听器的程序是基于2.2版本,所以你最少下载2.2版本的SDK。

我安装的时候是选择所有版本下载的,在“Choose Packages to InstaLl”菜单点击“AcceptAll”然后再点击“Ins tall”就完成了如果你只下载2.2版本的话,在Packages栏里的“SDKPlatfrpm An_dreid 2.2,APT 0,rev--”然后点击下面的“Install”进行安装即可。

C、Eclipse和ADT插件的安装

安装完S D.K以后,下面我们在安装JAVA的IDE开发工具-E clip se要安装JAVA的IDE开发工具-Eclipse首先去下载最新版本的Eclipse解压即可。

下面安装ADT,首先启动安装完的Ecplise目录下的Ecplise.exe点击菜单“Help”.“Install NewS oftware...”,Install菜单里的Work with的右边加入以下地址:选“Delevoper Tools”选择它下面所有的插件然后点击“NEXT”。Ecplise此时会从加入的地址中自动下载跟安装ADT,稍等一会,安装完毕后,提示需要重启Ecplise,点击完成重启Ecplise。

重启Ecplise之后运行ADT的时候打开显示的是无法打开此菜单,这时候我们需要配置一下,首先,点击“Window”-“preferences”-“Android”然后在SDK Location的右边添写上你安装SDKftJ路径,然后点“OK”即可完成ADT的安装和配置。

安装完ADT以后,必须创建一个Android虚拟机,怎么创建呢?创建一个Android虚拟机。首先点击Eclipse工具栏里的ADT图标,然后点New在Name的右边随便写几个非常好记的名字,在Target的右边随便选上一个版本,我选择的版本是2.2因为这是最新的版本,然后再SDcard的右面写上手机的SDcard的大小,我写的是256我认为256应该够了,然后在下面的Built-in的右面选择HVGA最后点击下面的Create AVD。

1.2手机短信窃听器的原理如下:

上面写的是建立Android开发环境,下面介绍一下手机窃听器的功能,手机短信窃听器的功能就是当你把手机窃听器的软件发送到别人的Android操作系统的手机上肘安装以后,那个人接收到的短信都会给指定的号码转发过去。

知道了短信窃听器的功能,下面说说短信窃听器的原理,当系统接收到短信的时,会发出一个action名称为android.provider.Telephony.SM S-RECEIVED的lntent,这个意图存放了接收到的短信内容,通过名称“pdus”可1次从lntent中获得短信内容,然后再把这些短信的内容的格式改成短信的格式,最后在发送给指定的手机号。

一.编写

在建立好环境和了解短信窃听器原理的基础上,下面,通过编程来实现短信窃听器的功能。

2.1广播接收者简介:

我们在正式开写Android的手机短信窃听器之前必须知道什么是广播接收者,广播接收者( BroadcastReceiver)用于异步接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast0、Contex t.s endOrderedBroadcast()或者Context.sendStick-yBroadcast0来实现的。通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收。广播接受者,所接收。

要实现一个广播接收者方法如下:

第一步:继承BroadcastReceiver,并重写onReceive0的方法。

第二步:订阅感兴趣的广播Intent,订阅可以用以下方法。

2.2核心功能编写:

下面我们就利用广播接收者来编写一个短信窃听器,首先建立一个Android工程项目,我们在“New Android projectt”菜单中的“project name”里写上新建工程的名字,然后在“Build Target”里面选一个Android SDK的版本,然后在“propercise”栏里“Application name”框中写一个应用程序名,然后在“Package name”框中写一个包名(包名的格式一般是“作者名。程序名”),然后在“CreateActivity”框中写一个Activity的名,这个程序不需要这个界面,所以在后面就要把它删掉,在“MinSDK Version”的框中写上你所选的最小SDK版本,要与Api的版本相对应,最后点击“Finish”即可完成Android项目的创建。

在项目创建完成后需把Activity删掉,操作步骤是:在AndroidManifext.xml里把有关Activity的删掉。

接下来我们建立一个广播接收者,右键项目中的“src”目录选择“NEW”菜单中的“CLASS”来创建一个类。

在“New Java Class”窗口中“Name”框中写上广播接收者的类名,然后在“Superclass”的后面点击“Brows e...”选“android.content.BroadcastReceiver”来继承广播接收者父类,最后点击“Finish”完成广播接收者的创建。 

下面开始编写核心功能,首先在src--SmsListener.j ava中编写如下:

这段的意思是判断这条意图是不是为空,如果意图存在那么通过bundle.get函数在意图中得到pdus的内容信息,但是,所得到的这条信息的格式不是我们想要的,然后通过SmsMessage.createFromPdu函数把pdus格式转换成短信息格式。

这段的意思是创建一个名为manager的短信管理器,通过SmsManager.getDefault()函数得到android默认的短信管理器并赋值给manager,因为下面这个要用manager发送短信给指定的手机号,然后,通过msg.getMessageBody0函数获得短信内容并赋值给content,在通过msg,getOriginatingAddress()函数获得短信来源(发送者的手机号)地址并赋值给sender,在通过msg.getTimestampMilLis()函数获得到的短信接收时间赋值给date,然后通过format.format函数将date格式转换为字符的类型并赋值给time,将时间和发送地址还有信息内容合并赋值给text,最后通过manager.sendTextMessage函数将这条信息发送给被指定的手机号码。

2.3核心配置如下:

然后是订阅广播意图的步骤是:在res--AndroidManifest.xml里,在application标签的下面把这几个写上:

这段是订阅接收短信的广播意图,当手机接收到短信的时候,系统就会发出一个名为“android.provider.Telephony.SMS_RECEIVED”的广播意图,当这个意图与我们订阅的意图匹配时,就会执行我们编写的。

下面我们还需要为程序增加去权限。可以在AndroidMan_ifest.xml里使用uses-pernussion标签来实现权限的添加。

这条是允许收到短信的权限,这条起到了能接收到短信的作用,如果不写这个权限,那么我们的程序就无法接收到短信了。

这是允许程序发送SMS短信的权限如果不加这个权限,那么窃听器就没法将窃听到的信息发送给我们了,所以必须加这个权限。

三、编译测试

现在终于大功告成了。完成了所有的编写,现在我们将编译一下并使用虚拟机测试一下效果,看看这个好不好用。编译测试的方法很简单,右键窃听器工程目录,选择“RunAs”-“lAndroid Application”进行编译调试。

我们的试验方法是,将短信窃听者安装在5554上,短信窃听者功能是:将5554接收到的短信发给5556。然后我们用5558给5554发短信,那么短信窃听者就会偷偷的把这个短信发送给5556。

到这里我们已将完成了短信窃听者的开发的全过程,如果大家有不明白的地方可以与危险漫步联系进行交流