有些时候,我们读取磁盘文件,会被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)
- 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
第%d扇区
",87); background-color: inherit; font-weight: bold;">int)(i / 512) + m_uFrom);
- if ((i % 16) == 15)
- "%s
", cBuf);
- else if ((i % 16) == 7)
- "%s- ",248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important;"> }
- SetDlgItemText(IDC_DATA, cBuf);
- delete[] bBuf;
- delete[] cBuf;
- }
- void CSectorEdit2000Dlg::OnCleardata()
- {
- UpdateData(TRUE);
- char cTemp[1];
- memcpy(cTemp, 1);
- UINT uDiskID = cTemp[0] - 64;
- if (uDiskID > 2)
- if (MessageBox("要清算的是硬盘分区,请确认是不是继续?", "提示", MB_YESNO | MB_ICONWARNING) != 6)
- if (uDiskID == 3)
- {
- if (MessageBox("要清算的是系统分区,请再次确认是不是继续?",248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important;"> }
-
- unsigned char bBuf[512];
- UINT i = 0;
- BOOL bRet = TRUE;
- while (m_bAllDisk)
- memset(bBuf, 0xFF,153); background-color: inherit; font-weight: bold;">sizeof(bBuf));
- bRet = WriteSectors(uDiskID, i, 1, bBuf);
-
- if (bRet == FALSE)
- if (i == 0)
- MessageBox("所选磁盘分区不存在!", MB_OK | MB_ICONERROR);
- else
- MessageBox("磁盘数据擦除终了!",248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important;"> }
- i++;
- }
- if (m_bAllDisk == FALSE)
- DWORD i = m_uFrom; i <= m_uTo; i++)
- {
- memset(bBuf,108); list-style: decimal-leading-zero outside; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important;"> bRet = WriteSectors(uDiskID,153); background-color: inherit; font-weight: bold;">if (bRet == FALSE)
- {
- if (i == 0)
- MessageBox("所选磁盘分区不存在!",153); background-color: inherit; font-weight: bold;">else
- MessageBox("磁盘数据擦除终了!", MB_OK | MB_ICONINFORMATION);
- }
- (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|