редактирование файла винчестера

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by C@T, 2 Nov 2012.

  1. C@T

    C@T Member

    Joined:
    7 Sep 2011
    Messages:
    12
    Likes Received:
    6
    Reputations:
    10
    у меня возникла ошибка при попытке вызове WriteFile, GetLastError вернула 5(Отказано в доступе. ), причем чтение файла удается отлично и открытие хендела ошибок не выдает.

    P.S все прекрасно работало на ХР, но на семерке х64 не пашет, думал что проблемма в том что не дается админ процессу, вырубил проактивку, вырубил фаерволл, запускал процесс от администратора, не помогло, думаю нужно как для инжекта что то типа привелегии дэбагера запилить, но не знаю какую

    код:

    Код:
    Code:
    hDrive = CreateFile("\\\\.\\PHYSICALDRIVE0", // при открытии файла диска(не системного) тоже самое
    		GENERIC_READ | GENERIC_WRITE,
    		FILE_SHARE_READ | FILE_SHARE_WRITE,
    		NULL, 
    		OPEN_EXISTING, 
    		FILE_ATTRIBUTE_NORMAL, 
    		0);
    ...
    
    WriteFile(hDrive, musor, ClusterSize, &nw, 0);
    DWORD err = GetLastError();
    cout << "Write Error: " << err << endl;
    
    SetFilePointer(hDrive, Offset.LowPart, &Offset.HighPart, FILE_BEGIN);
    ReadFile(hDrive, Buff, ClusterSize, &Bytes, NULL);
     
  2. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    http://support.microsoft.com/kb/942448