VC++信息安全编程(13)Windows2000/xp/vista/7磁盘扇区读写技术

有些时候,我们读取磁盘文件,会被hook.我们读到的可能并非实际的文件。

我们直接读取磁盘扇区获取数据。

实现磁盘数据的读写,不依赖WindowsAPI。

 

void CSectorEdit2000Dlg::OnView() 
{
	UpdateData(TRUE);
	if (m_uTo < m_uFrom)
		return;
	
	char cTemp[1];
	memcpy(cTemp, m_DrvListBoxSResult.Left(1), 1);
	UINT uDiskID = cTemp[0] - 64;

	DWORD dwSectorNum = m_uTo - m_uFrom + 1;
	if (dwSectorNum > 100)
		return;

	unsigned char* bBuf = new unsigned char[dwSectorNum * 512];
	
	if (ReadSectors(uDiskID, m_uFrom, (UINT)dwSectorNum, bBuf) == FALSE)
	{
		MessageBox("所选磁盘分区不存在!", "错误", MB_OK | MB_ICONERROR);
		return;
	}
	
	char* cBuf = new char[dwSectorNum * 5120];
	memset(cBuf, 0, sizeof(cBuf));

	for (DWORD i = 0; i < dwSectorNum * 512; i++)
	{
		sprintf(cBuf, "%s%02X ", cBuf, bBuf[i]);

		if ((i % 512) == 511)
			sprintf(cBuf, "%s\r\n第%d扇区\r\n", cBuf, (int)(i / 512) + m_uFrom);
		if ((i % 16) == 15)
			sprintf(cBuf, "%s\r\n", cBuf);
		else if ((i % 16) == 7)
			sprintf(cBuf, "%s- ", cBuf);
	}
	SetDlgItemText(IDC_DATA, cBuf);
	delete[] bBuf;
	delete[] cBuf;
}

void CSectorEdit2000Dlg::OnCleardata() 
{
	UpdateData(TRUE);

	char cTemp[1];
	memcpy(cTemp, m_DrvListBoxSResult.Left(1), 1);
	UIN
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值