网站首页 | 网页制作 | 网络编程 | 图形图象 | 冲浪宝典 | 操作系统 | 软件教学 | 网络安全 | 认证考试 | 下载中心 | 游戏下载
| 网络安全首页 | 安全在线 | 病毒防治 | 黑客攻防 | 漏洞研究 | 黑客编程 | 破解手记 |
您现在的位置: 超人气学院 >> 网络安全 >> 黑客编程 >> 文章正文 用户登录 新用户注册
win9x/Winnt/Win2k/Winxp病毒技术探讨           
win9x/Winnt/Win2k/Winxp病毒技术探讨
作者:未知 文章来源:网络收集 点击数: 更新时间:2006-3-29 15:22:21
Win32.PurpleMood.6736技术文档

*************************************************
病毒名称 :PurpleMood (紫色心情)
适用环境: Win9x/Winnt/Win2k/Winxp
编写环境: Win2k,Masm32v6
简 介:1. 感染本地硬盘和网络上所有exe(GUI)文件
2. 搜索本地所有邮件地址,将病毒作为附件发送出去
3. 在Explorer进程中注入线程监控程序的运行。
4. 每月15日,发作。删除硬盘所有文件。

完成日期: 2002/6/20
版  本: v1.0
大  小: 6736(byte)
联系地址: XPurpleMood@163.com
警 告 : 以下程序(方法)可能带有攻击性,仅供技术交流。使用者风险自负!若有其他用途,概与本人无关。万一有转贴,请保持完整性,多谢!
*************************************************
工作流程:
1.首先得到重定位信息,保存在ebx中.
2.调用GetKBase ,得到Kernel32.dll的基地址。
3.调用GetAPIz,得到程序将使用的Kernel32中所有API.
4. 调用PayLoad判断是否满足发作条件,是则删除所有文件。否则继续。
5.判断是被感染文件还是自身(病毒在系统目录创建PurpleMood.scr).
6. 是染毒文件,则调用CreatePE来创建PurpleMood.scr,初始化(rtInit)写注册表项所需函数地址。调用MakeSCRAlive使PurpleMood.scr保持活动。
7. 如果是PurpleMood.scr,则CreateMutex设置标志,然后启动监控线程,感染PE线程,在主线程中发送邮件。

说明:
将程序中test@pact518.hit.edu.cn替换为自己的邮件
pact518.hit.edu.cn替换为自己的smtp服务器。
在d:建立test目录,里面放几个exe.实验用。

技巧与难点分析
1.重定位信息的确定
VStart: ;virus starts here :)
call start
start:
pop ebx
sub ebx , offset start
A dd 0
这段代码在哪里执行都一样!现在得到的ebx就是重定位信息。
变量A的偏移就是ebx + offset A.因为offset A是程序的第一条指令放到内存地址0时的偏移,但实际上放到了ebx.
也可以这么理解:
执行call start时(相当于push eip+jmp start),eip指向pop ebx,因为eip总是下一条指令的地址。pop ebx就把栈顶的eip存贮到ebx中。start在内存中(虚拟内存)的线形地址就放到ebx中了。那么A的地址显然就是(offset A - offset start)+ebx ,我们先 sub ebx , offset start,这样以后访问A就可以直接写offset A+ebx方便些。两种理解方法实际上是一样的。

2. RVA的含义
在CreatePE创建PurpleMood.scr和得到GetProcAddress的时候,多次使用这个概念。
exe或dll被加载到内存,注意,都是虚拟内存,4G空间。实际上把exe文件拉大了,就好象斜阳把人的影子拉长一样。
比如exe中代码段在文件偏移200h处,很可能在内存中偏移是1000h处,这个1000h就是RVA.RVA是距离影象的base的偏移。
下面形象解释:
在文件的第200h个字节就是代码段的第一条指令了(当然,未必是start).而1000h不是真正地址。比如 exe影象是00400000h,则代码段的第一条指令就是00400000h+1000h了。HMODULE就是DWORD,或者是int *,char *等,都一样。
我们用HMODULE p=LoadLirary("a.dll"),返回值就是a.dll被加载到内存(4G)的首地址。此时叫做影象(image).
与offset区别:
我要说的这个offset是程序中使用的。
比如写个小程序:
.dat

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda    责任编辑:kinda 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目
    最 新 热 门
     Windows中巧用RUNDLL3[5355]
     黑客软件编写基础知识[827]
     Win32Asm快速教程[535]
    相 关 文 章
    WinImage密码的另一种破解
    极速登录3.6---用winHEX破
    桥牌软件DeepFinesse的注册
    MagicWin981.30f的注册机源
    破解adbin1.2
    winzip注册机源码
    WinZIP.Self.Extractor.v2
    用插件(plugin)的方式改变
    一个Winzip8.0的注册机供大
    Winrar2.8到3.0升级手记
    windowsXP下的向量化异常处
    菜鸟破解录(10)之ADayinth
    win2000下手动破解Elib2.0
    WinKawaks1.45脱壳笔记
    Windows程序
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)