首页
社区
课程
招聘
[原创]Windows Mobile手机病毒开发1+1系列之“牛刀小试”
发表于: 2011-1-13 10:04 16436

[原创]Windows Mobile手机病毒开发1+1系列之“牛刀小试”

2011-1-13 10:04
16436

Windows Mobile手机病毒开发1+1系列之“牛刀小试”

发表于《黑客防线》201101
初学Windows Mobile编程,技术很烂,望指教!
————————————————————————
一、Windows Mobile 平台介绍

        最近如智能手机、PDA、导航仪等移动智能设备越来越普及了,随之而来很多网络核心业务如手机银行、手机炒股、电子商务、位置服务等也都快速的向这个平台转移。人们的日常生活越来越离不开手机,于是乎很多走在安全界前沿的朋友也开始关注这个方向的研发。在H4CK团队各位朋友的大力帮助下,笔者开始对ARM体系结构和Windows Mobile(Windows CE)系统有了一些粗浅的了解。鉴于智能手机领域还很新、资料比较少,因此本文中可能出现纰漏,希望大家共同探讨。

        目前比较常见的RISC架构的CPU有:ARM架构、MIPS架构、Power PC架构和SH架构。其中尤其以ARM架构的CPU使用比例最大。个人感觉ARM CPU的主要优点是:体积小、低功耗、低成本、高性能、寄存器多(ARM共有37个寄存器之多)、操作数多、寻址方式灵活简单执行效率高、指令长度固定(一般都是16位或者32位)、多种工作模式切换(7种之多)。
        嘿嘿。看上去ARM硬件平台还真是优点多多啊。当然是这样,不过从另一个角度来看,他所留给我们的攻击机会也更多。ARM功能复杂、指令集庞大、多寄存器将导致病毒攻击模块多样化、复杂化。指令长度固定将导致攻击代码变形容易从而增加病毒复杂度,给病毒分析师增加病毒分析难度。多模式切换给病毒更多可以隐藏自己的地方。还有很多特性都给我们提供了更广阔的想象空间,并且目前该领域的防病毒技术还不完善,人们对手机的安全意思还很薄弱,甚至可以说几乎没有任何防御。

        首先介绍一下目前比较流行的智能手机操作系统:Windows Mobile。也是我们主要研究的攻击平台。Windows Mobile是微软用于Pocket PC和Smartphone的软件平台,有“移动版Windows”之称。目前最新的版本是Windows Mobile 6.5。我们对Windows Mobile最感兴趣的地方是网络方面:3G或3.5G高速网络,软件方面:支持丰富的第三方软件。网络是我们获取手机设备中所有资料的传播途径,支持第三方软件将为我们的攻击代码敞开了大门。攻击主要有两个方向,一个是对可用性的攻击,一个是对资源的窃取。本文将主要给大家讲解一些手机病毒的基础知识,并会实现一个可用性攻击的实例,在以后的教程中将逐步讲解其他攻击手段。

二、开发环境搭建

        我们所使用的开发语言是C++语言。开发环境有两套解决方案:
(一)开发工具:Embedded Visual C++ V4.0
      SDK:Windows Mobile 6 SDK Professional(或其他版本的SDK)
      同步工具:Microsoft ActiveSync 4.5(实现PC和智能设备通信,可以传送文件同步数据等)
      模拟器:用来再PC上模拟手机系统。一般安装SDK后会有、也可以另外安装。
      基站模拟器:Cellular Emulator。安装SDK后会有。
这种方案是早期比较主流的开发环境构架模式。优点是,再安装过程中可以更深刻的了解各个工具的作用和开发环境的体系结构。但是安装和配置起来比较麻烦,容易出错,不推荐初学者使用。

(二)集成开发环境:Microsoft Visual Studio .net 2008(VS2005也可以)。安装这个以后系统会自动配置好开发环境,无需调试。然后你可以根据自己的需要再安装所需要的SDK,如无特殊需要默认即可。
        如果您对逆向工程感兴趣,您还可以安装程序分析工具:

     WinHex:分析二进制文件很方便。
     PE Explorer:查看PE文件内部信息十分方便。
     IDA:破解程序必备工具。

        VS2008的缺点是安装文件比较大(接近4G)、安装缓慢、占用资源较多,不过对于初学者来说为了减少不必要的麻烦,还是值得的。下图是VS2008的开发界面及模拟器界面。


        笔者建议初学者使用第二套方案,安装过程很简单,到微软官方站下载VS2008,一路“NEXT”安装即可。当使用熟练后可以尝试搭建自己个性的开发环境。是不是被上面的开发环境吓到了,要么是配置困难,要么是体积巨大,难道就没有配置简单体积又小的么?答案是“有!”不过要使用ARM汇编语言编程,并且微软并没有公开WINDOWS下ARM汇编编程指令语法。也就是说既不知道语法格式,又没有任何开发文档。不过还是有办法的,早有高手通过逆向工程等反汇编手段对编译好的C++进行分析,再结合对ARM编译器的分析,摸索和创造出了一些方法和技巧。至于汇编环境的大小,呵呵,可能会让您大跌眼镜。编译器212k、链接器612k,再加上在SDK中精简提取出的头文件和库文件,一共10M以内。确实很雷人。这大概就是高手与初学者的区别吧。
        闲话少叙,马上开始我们第一个 Windows Mobile病毒的开发吧。

NO.1无限弹窗
首先来实现一个简单的病毒练练手。这个很简单,就是弹出一个无法关闭的对话窗口。使用的函数是MessageBox,这个函数在winuser.h中有定义。传递参数可参考MSDN。下面开始正式开发吧。
首先是新建一个项目,和VC6不一样的是VS2008里把工程叫做项目了。如下图创建一个名为“bingdu”的智能设备项目。

然后进入项目向导,如下图设置创建一个Windows Mobile 6的控制台程序。

点击完成后就可以编写代码了。这里的代码很简单,在入口函数中调用一下MessageBox函数即可,函数的第2和第4个产生分别是窗口的内容和标题。
代码:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
        MessageBox(NULL, TEXT("Hacked By GuiGu."),TEXT("FUCK!!!"), MB_OK);       
return 0;
}
编写号后按F5调试运行,VS2008会将编译好的程序自动部署在模拟器上,并开始运行,运行起来的效果如下:

这个程序很简单,知识弹出了一个窗口,点击“ok”即可关闭,并不能给用户带来什么破坏。下面稍加改动即可实现一个恶意流氓程序了。
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
        while (1)
        {
                MessageBox(NULL, TEXT("Hacked By GuiGu."),TEXT("FUCK!!!"), MB_OK);
        }
        return 0;
}
使用while循环让窗口不断循环,如滔滔江水,绵绵不绝。呵呵。运行看看,是不是对话框已经关不掉了呢。如果重启手机这个对话框不就没了么?如何让程序自动运行呢?在Windows Mobile 6 SDK的实例中有这样一段叙述:
// The executable must be named autorun.exe and placed in a processor
// specific directory (2577) on the MMC card.
// When the card is inserted, the application will be launched with
// "install" as its command line. When the card is removed, the application
// will be launched with "uninstall" as its command line.
意思就是说如果将程序命名为autorun.exe,并将程序拷贝到手机存储卡根目录下名为2577的文件夹里,当手机加载智能卡的时候就会自动运行程序。这样就可以实现一个简单的开机运行的流氓软件了。

NO.2手机变板砖
通过前面的学习,大家已经知道了手机程序的一般开发流程,下面我们再学习两个API让手机变板砖。
GetDesktopWindow函数可以获得桌面窗口句柄。
SetForegroundWindow函数可以将桌面窗体设置为前景窗体。
通过这两个函数,可以将让手机一直显示桌面,不管执行什么功能操作,手机依然无动于衷。代码如下,也很好理解:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
        HWND hWnd;
        hWnd = GetDesktopWindow();
        while(1)
        {
                SetForegroundWindow(hWnd);  
        }
        return 0;
}
首先获得桌面窗口句柄,然后将桌面窗口设置为前景窗体,也就是循环重置前景窗体为桌面窗口。无论按什么键、执行什么操作,手机依然无动于衷,板砖一块。调试执行的效果入下:


由于目前手机病毒还不是很普及,杀毒软件的杀毒能力很弱,因此很多病毒基本是可以在手机中横行的。下面我们看一下我的实测效果:
主机:华硕P550
系统:Windows Mobile 6.1
如下图是运行了无限弹窗后的效果。可以看到手机安装了网秦杀毒软件。软件杀毒并未发现外面的恶意程序。


将程序拷贝到手机存储卡的2577文件夹后,手机在启动加载存储卡的时候就会运行程序。如上图所示,杀毒软件并没有检测到。

下面是手机变成板砖后的效果,手机开机后加载存储卡,运行板砖程序,效果就是一开机,手机就停在这里了,没有任何反应。最后只能重启。

本文主要是向大家讲述手机病毒的简单开发流程,要写出功能强大的病毒还需要更深入的研究,希望在以后的日子里能和大家一起探讨相关技术。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (19)
雪    币: 37
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
传说中的沙发么!~
2011-1-13 10:46
0
雪    币: 397
活跃值: (387)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
3
支持lz,很好的资料
2011-1-13 11:11
0
雪    币: 81
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
精彩!厉害啊,我也是玩ppc的,现在发现会api的确很有用…
2011-1-19 21:23
0
雪    币: 266
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
卡屏 lz 太邪恶啦
2011-1-20 11:16
0
雪    币: 80
活跃值: (45)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
呵呵,还好啦,也不是很邪恶了。

我总结了一下关机重启的方法,大概有6种吧,过几天把代码放上来。

希望大家多多支持哈
2011-1-20 13:02
0
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
汗。。。。。。。。。
2011-1-20 21:14
0
雪    币: 25
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我的是smartphone,api不太一样吧!学习之!
2011-1-21 16:56
0
雪    币: 89
活跃值: (185)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
9
让我想起了让子弹飞里那句话:

我有九种方法弄死他……九种…………

2011-1-24 10:17
0
雪    币: 540
活跃值: (338)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
10
不错不错,正有学习这放面知识的想法,希望楼主继续
2011-1-24 11:30
0
雪    币: 220
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
恩 不错 学习下
2011-1-24 12:12
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我差 开发手机这么容易
2011-1-24 12:39
0
雪    币: 89
活跃值: (185)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
13
楼上觉得容易啊,那你写一个吧。哈哈
2011-1-24 15:50
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
z,很好的资料
2011-1-24 15:52
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
顶了....
2011-1-25 08:56
0
雪    币: 145
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
恶。。。。没有实现,自我复制,没有自定位................好好改一下才行

去年的android在智能机领,相当火,wince好像被冷下来了,看来开放才是

不过觉得还是windows形式好用,少了最大与最少,如果屏幕够大的时能有最大与最小时那看起来多好
2011-1-25 19:59
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
6种?

wm6下么?
2011-2-7 21:28
0
雪    币: 324
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
不错,很初步的介绍了一般的mobile编程,期待更多的介绍…
2011-2-11 21:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
这个应该属于恶作剧程序吧
2011-3-23 21:32
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
非常不错的资料。自己得多多注意的手机安全才行。
2011-3-23 21:48
0
游客
登录 | 注册 方可回帖
返回
//