首页
论坛
课程
招聘
[原创]病毒也来PEDIY
2008-10-12 22:06 12124

[原创]病毒也来PEDIY

2008-10-12 22:06
12124
【文章作者】:  newjueqi  
【作者邮箱】: zengjiansheng1@126.com
【作者QQ号】: 190678908(sdf)
【编写语言】: VC++6.0
【使用工具】: OD
【操作平台】: XP-SP2
【作者声明】: 昨天做了一个病毒的汇编源码分析(链接:http://bbs.pediy.com/showthread.php?t=74520或者看附件),分析完这个病毒后的感慨就是这个病毒一点都不像病毒,反而像一个U盘编程的示范代码(虽然金山毒霸每次遇到它都兴奋得叫起来 ^-^), 后来就干脆给病毒来一个PEDIY(直接修改汇编代码使病毒在运行时弹出一个对话框告诉用户中毒了),只是出于研究的目的,失误之处敬请大家赐教!

网页上有的图片不太清晰,清晰版请看附件

具体思路就是修改病毒注册的消息处理函数地址,通过提前处理WM_CREATE消息显示一个对话框,然后才返回到原来病毒的函数处理地址。

查看分析过程,可知病毒以载入MessageBoxA, 省下修改输入表的内容。
首先用LordPE查看区块信息,如下图所示


从上图可看到.text的节区空隙为7000-6B1A=4E6,即可放1000多字节,足够放入所需要的代码,另外从文件偏移8000的地方是数据区,可找空白的存放MessageBoxA函数所有的对话框标题和内容。

首先,用Winhex打开病毒文件,我选择在00008270的地方存放内容文本,00008280存放MessageBoxA需要的文本,完成后如下图所示


接着就开始修改代码,从http://bbs.pediy.com/showthread.php?t=74520或附件的病毒分析可知:

00401010         |.  897C24 28       mov     dword ptr [esp+28], edi              ; |
00401014         |.  C74424 2C 00114>mov     dword ptr [esp+2C], 00401100    ;窗口过程的地址|
0040101C         |.  897C24 30       mov     dword ptr [esp+30], edi              ; |
00401020         |.  897C24 34       mov     dword ptr [esp+34], edi              ; |
00401024         |.  897424 38       mov     dword ptr [esp+38], esi              ; |
00401028         |.  897C24 3C       mov     dword ptr [esp+3C], edi              ;
0040102C         |.  897C24 40       mov     dword ptr [esp+40], edi              ; |
00401030         |.  897C24 44       mov     dword ptr [esp+44], edi              ; |
00401034         |.  897C24 48       mov     dword ptr [esp+48], edi              ; |
00401038         |.  C74424 4C 4C804>mov     dword ptr [esp+4C], 0040804C         ; 00401040         |.  FF15 18714000   call    dword ptr [<&USER32.RegisterClassA>] ; \RegisterClassA

00401100就是病毒原来的消息处理地址,根据LordPE查看区块信息,在00406B1B处插入新增的代码,所以把跳转改为下图所示


接下来我们来分析一下函数的消息处理过程
00401100   .  8B4424 08     mov     eax, dword ptr [esp+8]
00401104   .  3D 13010000   cmp     eax, 113                         ;  Switch (cases 1..219)
00401109   .  0F87 9C000000 ja      004011AB
0040110F   .  74 60         je      short 00401171
00401111   .  8BC8          mov     ecx, eax
00401113   .  49            dec     ecx
00401114   .  74 21         je      short 00401137 ;这里就跳到WM_CREATE消息

从上面可看到Switch语句里跳转到WM_CREATE的消息处理的过程,我们可以进行一定程度上的简化。

在地址00406B1B处开始输入我们DIY的代码

00406B1B      8B4C24 08     mov     ecx, dword ptr [esp+8]
;注意里,这里必须执行完mov  ecx, dword ptr [esp+8]后才能pushad, 因为如果执行了pushad操作,那么esp的值会发生变化,dword ptr [esp+8]的值就会受到影响
00406B1F      60            pushad ;保护寄存器现场
00406B20      49            dec     ecx
00406B21      74 06         je      short 00406B29 ;比较是否是WM_CREATE消息,如果不是的话就跳回病毒原来的消息处理函数
00406B23      61            popad  ;恢复寄存器现场
00406B24    ^ E9 D7A5FFFF   jmp     00401100 ;原来的消息处理函数

下面就是我们弹出对话框的部分
00406B29      6A 00         push    0 ;Style
00406B2B      68 80824000   push    00408280              ;  Title, ASCII "ha ha"
00406B30      68 70824000   push    00408270              ;  Text, ASCII "this is a virus"
00406B35      6A 00         push    0 ; Owner

      输入MessageBoxA的地址时就要注意了,.MessageBoxA的地址千万不能用硬编码,因为随着操作系统的不同,.MessageBoxA的函数地址也不相同,所以必须要获得当前操作系统中.MessageBoxA的地址,据我所知方法有两个:
1.        在输入表添加MessageBoxA函数,使输入表里拥有MessageBoxA的函数地址
2.        用操作系统的特性先获取GetProcAddress函数的地址,再用GetProcAddress函数获取MessageBoxA的地址,方法在《Q版黑客缓冲区溢出教程》里有详细的介绍

   由于病毒已有使用MessageBoxA的地方,所以只要获取MessageBoxA在输入表的地址就ok
病毒里使用的MessageBoxA如下图


40711c 就是输入表里MessageBoxA的地址

00406B37      FF15 1C714000 call    dword ptr [<&USER32.MessageBoxA>]      ;  USER32.MessageBoxA
00406B3D      61            popad  ;恢复寄存器现场
00406B3E    ^ E9 BDA5FFFF   jmp     00401100 ;跳到原来的消息处理处

完成的输入内容如下图红色所示


在OD的反汇编窗口点右键-->复制到可执行文件-->右键保存文件(全部)-->选择你要保存的文件名-->保存,ok,这样汇编代码部分就修改完成。

最后的工作就是修改区块表的信息。
原来.text区块头信息如下:


5B1A就是原来的区块大小,由于现在我们在原来的.text区块尾增加了代码,必须改掉原来的.text区块头信息,从增加的代码地址可看出,我们可以把.text区块尾增加到00406B44,转化成文件文件偏移就是5B44,修改的地方如下图所示:


哈哈,现在可以体现一下 PEDIY的快乐!!! ^-^
运行后效果如下图:

【看雪培训】《Adroid高级研修班》2022年夏季班招生中!

上传的附件:
  • 1.JPG (12.46kb,1387次下载)
  • 2.JPG (13.59kb,1386次下载)
  • 3.JPG (33.72kb,1385次下载)
  • 4.JPG (33.47kb,1385次下载)
  • 5.JPG (47.87kb,1386次下载)
  • 6.JPG (25.43kb,1386次下载)
  • 7.JPG (26.23kb,1384次下载)
  • 8.JPG (5.71kb,1390次下载)
收藏
点赞0
打赏
分享
最新回复 (19)
雪    币: 202
活跃值: 活跃值 (24)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
newjueqi 活跃值 7 2008-10-13 10:25
2
0
奇怪,为什么上传的图片在网页上显示时有的会缩小
雪    币: 202
活跃值: 活跃值 (24)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
newjueqi 活跃值 7 2008-10-13 16:08
3
0
郁闷,最后把所有图片都全部裁剪才显示正常
雪    币: 234
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
梦魇颖雨 活跃值 2008-10-14 20:53
4
0
恩。。学习学习。。还是要顶一顶
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
newchao 活跃值 2008-10-15 19:11
5
0
不错,顶下sdf。。。
欢迎大家加入群42241232交流
雪    币: 203
活跃值: 活跃值 (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Odayer 活跃值 2008-11-10 16:14
6
0
学习中,顶一个
雪    币: 200
活跃值: 活跃值 (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Xusually 活跃值 2008-11-10 21:30
7
0
额....我理解错了lz的标题含义~~
雪    币: 242
活跃值: 活跃值 (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
lcjoo 活跃值 3 2008-11-26 23:21
8
0
好帖,顶一个
雪    币: 130
活跃值: 活跃值 (13)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
xhK 活跃值 3 2008-11-27 09:43
9
0
你怎么不把程序上传上来呢
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ithunder 活跃值 2008-11-27 11:27
10
0
嗯……很邪恶,但是很有趣。
雪    币: 205
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小黑冰 活跃值 2008-11-27 13:49
11
0
我喜欢这句``````
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
asirzcl 活跃值 2008-11-27 18:43
12
0
现在的东西越来越复杂了
雪    币: 201
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ZHENGLIN 活跃值 2008-12-12 00:09
13
0
原来可以在区段空隙处插入代码!!
雪    币: 196
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pptingting 活跃值 2008-12-12 01:44
14
0
居然有这种情况.LZ玩得太精了~~
雪    币: 230
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haxixi 活跃值 2009-9-8 15:47
15
0
附件呢?附件在哪?
雪    币: 153
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
黑白程式 活跃值 2009-9-14 13:36
16
0
感觉还满好玩
雪    币: 11088
活跃值: 活跃值 (745)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
skillman 活跃值 2009-9-14 14:55
17
0
学习学习···感觉很有意思
雪    币: 1054
活跃值: 活跃值 (19)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
gaollxu 活跃值 2 2010-5-15 12:48
18
0
学习了,回去跟着学做一次。
雪    币: 196
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
infopoint 活跃值 2010-5-26 14:01
19
0
好帖,顶一个
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ybbrdfxk 活跃值 2010-6-21 15:51
20
0
xuexi xuexi
游客
登录 | 注册 方可回帖
返回