近日风行流氓软件,就连手机平台也加入了堕落的行列。现在俺就简单写一下这种手机上的流氓是如何欺骗人的。
手机撒谎软件主要功能:你正在外面干见不得人的事,这时候老爸打电话问你干啥呢,这个软件就发挥作用了,播放一段打篮球或者老师讲课的录音,这样你可怜的老爸就以为你在努力学习呢。唉。。。。
首先讲一下现在手机的平台,主要平台为Nokia下的Symbian开发,使用C++。
流氓的准备工作:
1.安装Nokia S60平台的开发sdk后,就可以进行 S60的应用开发。
2.去Nokia网站下载<Developing Series 60 Applications - A Guide for symbian OS c++ developers>一书的源代码。
3.打开vc。可以开始coding了
一些基本的S60开发常识我就不在这里罗嗦了。主要介绍一下功能实现:
首先需要进行来电的截获,这里可以参考上面介绍的配书源代码中的AnsPhone例子。
ok,现在当来电的时候,我已经可以抓住它了,下一步就是实现在线uplink的播放,可以有3种以上方法,这里只介绍一种比较简单清晰的实现:CMdaAudioPlayerUtility类
我们的播放,停止,都是通过CMdaAudioPlayerUtility来进行的。
首先我们封装一个自己的类,姑且叫做CAudioUplinkPlayer
class CAudioUplinkPlayer: public CBase, public MMdaAudioPlayerCallback
{
...
........
void DoCrime(TDesc& filename);
//inherit frm MMdaAudioPlayerCallback
void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& /*aDuration*/);
void MapcPlayComplete(TInt aError);
private:
CMdaAudioPlayerUtility *iMdaAudioPlayerUtility;
};
实现:
void DoCrime(TDesC& filename)
{
iMdaAudioPlayerUtility = CMdaAudioPlayerUtility::NewFilePlayerL(filename,
*this,80,(TMdaPriorityPreference)0x00060001);
}
MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& /*aDuration*/)
{
iMdaAudioPlayerUtility ->PlayL();
}
MapcPlayComplete(TInt aError)
{
//播放完了 ;)
}
呵,简单的定义完以后,要注意一下实现的步骤,抓住来电以后首先通过调用DoCrime(audiofilename)来播放声音,调用NewFilePlayer 以后,将异步调用初始化,当fileplayer初始化完毕后,返回mapcinitcomplete函数,这时才能播放。
ok。流氓软件已经作完了。:)
那么怎么样才能防止它呢?答案就是:当老爸的给儿子买个S9.0的手机(Nokia3250/5500/N71/N73/N80/N9x/E50/E60/),S9.0的开发程序必须申请正式版的证书才能安装,这样从根本上Nokia就杜绝了病毒和恶意软件的运行。此外,有部分缺陷的手机也不能进行在线的uplink播放,例如UIQ的几款手机以及Nokia 6620 和Panasonic X700/X800