Доступ к заблокированному файлу

Discussion in 'Песочница' started by Alanez, 16 Dec 2016.

  1. Alanez

    Alanez New Member

    Joined:
    16 Dec 2016
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Если способы получить доступ на запись к заблокированному файлу другим процессом, не останавливая блокирующий процесc??
     
  2. Veil

    Veil Banned

    Joined:
    21 May 2015
    Messages:
    2,025
    Likes Received:
    3,355
    Reputations:
    72
    Пожалуйста конкретней!
     
  3. Alanez

    Alanez New Member

    Joined:
    16 Dec 2016
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Приложение создает на диске файл и работает с ним - что-то пишет/читает. При этом доступ к файлу блокирующий - другие приложения не могут открыть файл на чтение/запись.
    Задача - внести изменение в файл не останавливая процесс, который блокирует файл.
    Есть программы типа Unlocker, которые снимают блокировку убивая блокирующий процесс - не годиться.
     
  4. pas9x

    pas9x Elder - Старейшина

    Joined:
    13 Oct 2012
    Messages:
    423
    Likes Received:
    585
    Reputations:
    52
    Это возможно, но сделать сложно. Надо уметь кодить и знать winapi.
    При этом менять содержимое файла не закрывая дескриптор - очень плохая идея. Во-первых это может сломать логику программы и она может покрашиться; либо запишет в файл что-то своё не зная о твоих изменениях и файл закосячится.
    Можно находить дескриптор файла и закрывать его. Тогда файл не закосячится, но программа всёравно от этого тоже может покрашиться. Унлокер кстати так и делает. Хз с чего ты взял, что он убивает процесс (может просто программа падала из-за вмешательства?).
    В общем идея хреновая, лучше этого не делать.
     
  5. master_555

    master_555 New Member

    Joined:
    10 Sep 2013
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    есть вариант, инжект кода в процесс, работаем с хедлом файла,
    в это время основной поток этого процесса ставим на паузу
    потом перед ResumeThread() восстанавливаем все (позиция в файле, и т.д.)
     
  6. Alanez

    Alanez New Member

    Joined:
    16 Dec 2016
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    при "усыплении треда" разве освободится доступ к файлу?
     
  7. master_555

    master_555 New Member

    Joined:
    10 Sep 2013
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    работаем с тем же хедлом, но с другого потока
     
  8. Alanez

    Alanez New Member

    Joined:
    16 Dec 2016
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Я правильно понимаю идею?:
    1. создать свой процесс.
    2.В нем запустить в отдельном дочернем потоке программу, блокирующую доступ к файлу
    3. Взять ссылку на хэдл к файлу у этого потока. Как получить хэндл дочернего потока к нужному файлу по имени файла???
    4. Изменить параметры доступа к файлу
    5. Внести необходимые изменения сторонним приложением в файл
    6.Восстановить параметры доступа к файлу.
     
  9. master_555

    master_555 New Member

    Joined:
    10 Sep 2013
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    >Как получить хэндл дочернего потока к нужному файлу по имени файла???
    а не нужно конкретный поток, получаешь хендл файла и ставишь все потоки на паузу
    NtQuerySystemInformation(SYSTEM_HANDLE_INFORMATION, ...) - перечисление хендлов, найдешь свой
     
  10. Alanez

    Alanez New Member

    Joined:
    16 Dec 2016
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Найду свой handle. Дальше будет проверка прав доступа по параметру SECURITY_ATTRIBUTES... в которых права ограничены, в доступе к ресурсу будет отказано... разве не так?
    Понял, про инжект упустил..
     
    #10 Alanez, 11 Jan 2017
    Last edited: 13 Jan 2017
  11. Alanez

    Alanez New Member

    Joined:
    16 Dec 2016
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Кто-нибуть может подсказать как убить handle к файлу, также как это делает ProcessExplorere?
     
  12. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Если пользователь - админ, и есть привилегия отладки, то вряд ли такое произойдёт.
    CloseHandle(hFile);
     
  13. Alanez

    Alanez New Member

    Joined:
    16 Dec 2016
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    а получить hFile через DuplicateHandle?
     
  14. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Попробуйте.
     
  15. Alanez

    Alanez New Member

    Joined:
    16 Dec 2016
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
  16. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    В общем-то как я и думал. Оригинальный закрывать надо, не дублируя его.
     
  17. Alanez

    Alanez New Member

    Joined:
    16 Dec 2016
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Пытаюсь закрыть оригинальный - CloseHandle((HANDLE)handle.Handle); - выбрасывет исключение...
     
  18. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Сейчас почитал то, что по ссылке.

    Там ведь написано, что DuplicateHandle с последним аргументом DUPLICATE_CLOSE_SOURCE = 1 как раз закрывает его в удалённом процессе.
    PHP:
    #define DUPLICATE_CLOSE_SOURCE 0x1

    DuplicateHandle(hProcesshFileNULLNULL0falseDUPLICATE_CLOSE_SOURCE);
     
    Alanez likes this.
  19. SooLFaa

    SooLFaa Members of Antichat

    Joined:
    17 Mar 2014
    Messages:
    530
    Likes Received:
    499
    Reputations:
    154
    Скопируй его, сделай что надо, потом удали. ПРОФИТ.

    UPDATE: Программно тот же алгоритм.
     
    _________________________
  20. Alanez

    Alanez New Member

    Joined:
    16 Dec 2016
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    binarymaster-у и всем кто принял участие в обсуждении спасибушки! Цель поражена!
     
    #20 Alanez, 30 Jan 2017
    Last edited: 1 Feb 2017
Loading...
Similar Threads - Доступ заблокированному файлу
  1. Loents
    Replies:
    14
    Views:
    2,694
  2. Torchin
    Replies:
    4
    Views:
    2,937