Изолированный файл. NET изолированный файл блокировки блокировки NRE

Поэтому я пытаюсь заблокировать изолированный файл хранилища в своем клиентском приложении , так что несколько экземпляров моего приложения не смогут получить к нему доступ в одно и то же время. Я использую следующий синтаксис:

LockStream = new IsolatedStorageFileStream("my.lck", FileMode.OpenOrCreate, isoStore); lockStream.Lock(0, 0);

Этот код заставляет мое приложение выкидывать исключение NullReferenceException из метода FileStream.Lock структуры. Я попытался использовать ненулевое значение для длины. Я попытался записать байт в файл, а затем заблокировал только этот байт. Независимо от того, что я делаю, такое же исключение NullReferenceException преследует меня. Кто-нибудь знает, возможно ли это с изолированным хранилищем?

Также я изучаю эту технику в приложении Silverlight, поддерживает ли Silverlight блокировку файлов? Документы MSDN, похоже, указывают, что это не так, но я видел это post от MVP, который говорит, что делает.

Обновление: Microsoft исправила ошибку, которую я отправил в Connect, но она не была выпущена в версии 4 из фреймворка. Он должен быть доступен, надеюсь, в следующем SP или полном выпуске.

4

2 ответы

Это похоже на ошибку в Framework. Возможно, я ошибаюсь, потому что это действительно слишком велик, чтобы быть правдой.

Рассматривая исходный код.NET 3.5 SP1 с Reflector, можно найти, что IsolStorageFileStream вызывает безразмерный базовый конструктор (FileStream ()), что приводит к не-действительно инициализированному базовому классу. IsolatedStorageFileStream создает экземпляр FileStream и использует его во всех методах, которые он переопределяет (Write, Read, Flush, Seek и т. Д.). Странно, что он не использует свой базовый класс напрямую.

Но блокировка и разблокировка не переопределены, и для них требуется частное поле (_handle), которое по-прежнему равно нулю (поскольку используемый конструктор является без параметров). Они предполагают, что он не нуль, и разыгрывают его и вызывают NRE.

Подводя итог, блокировка и разблокировка не поддерживаются (или не работают).

Я думаю, вы вынуждены использовать другие методы блокировки, такие как Mutex или Semaphore.

4

Так что я пытаюсь заблокировать изолированный файл хранилища в моем клиентском приложении C#, так что несколько экземпляров моего приложения не смогут получить к нему доступ в одно и то же время. Я использую следующий синтаксис:

LockStream = new IsolatedStorageFileStream("my.lck", FileMode.OpenOrCreate, isoStore); lockStream.Lock(0, 0);

Этот код вызывает мое приложение бросить NullReferenceException внутри метода FileStream.Lock рамок. Я попытался использовать ненулевое значение для длины. Я попытался записать байт в файл, а затем заблокировал только этот байт. Независимо от того, что я делаю, такое же исключение NullReferenceException преследует меня. Кто-нибудь знает, возможно ли это с изолированным хранилищем?

Также я изучаю эту технику в приложении Silverlight, поддерживает ли Silverlight файловую блокировку? Документы MSDN, похоже, указывают на то, что это не так, но я видел this post из C# MVP, который говорит, что это так.

Обновление: Microsoft исправила ошибку, которую я отправил на Connect, но она не была выпущена в версии 4 фреймворка. Он должен быть доступен, надеюсь, в следующем SP или полном выпуске.

0

я был в состоянии работать вокруг этой ошибки с помощью отражения для вызова метода блокировки на поле IsolatedStorageFileStream частного «m_fs» как так: lockStream = новый IsolatedStorageFileStream («q.lck», FileMode.OpenOrCreate, isoStore); FileStream m_fs = typeof (IsolatedStorageFileStream) .InvokeMember ((«m_fs»), BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance, null, lockStream, null) как FileStream; m_fs.Lock (0, long.MaxValue); - bsiegel 05 мар. 10 2010-03-05 15:57:55

  • 2 ответа
  • Сортировка:

    Активность

4

Это выглядит как ошибка в Framework. Возможно, я ошибаюсь, потому что это действительно слишком велик, чтобы быть правдой.

Рассматривая исходный код.NET 3.5 SP1 с рефлектором, вы обнаруживаете, что IsolStorageFileStream вызывает безразмерный базовый конструктор (FileStream()), что приводит к не-инициализированному базовому классу. IsolatedStorageFileStream создает экземпляр FileStream и использует его во всех методах, которые он переопределяет (Write, Read, Flush, Seek и т. Д.). Странно, что он не использует свой базовый класс напрямую.

Но блокировка и разблокировка не переопределены, и им нужно личное поле (_handle), которое по-прежнему равно нулю (поскольку используемый конструктор является без параметров). Они предполагают, что он не нуль, и разыгрывают его и вызывают NRE.

Подводя итог, блокировка и разблокировка не поддерживаются (или не работают).

Как изолировать подозрительные процессы в ОС Windows и не сломать саму ОС? Как создать надежную и совместимую с Windows программную песочницу без аппаратной виртуализации и перехватов функций ядра, но с использованием документированных встроенных механизмов безопасности ОС? Мы расскажем о наиболее часто встречающихся проблемах, с которыми сталкиваются разработчики (а в итоге - потребители) программных песочниц. Ну и разумеется, предложим свое решение:).

Введение, или как плохо жить без песочницы

Среди профессионалов есть несколько аксиом, о которых они не любят говорить. А что говорить об аксиомах? Они есть и есть. Вроде всем понятно, как дважды два. Например, одна из них - сигнатурные антивирусы не защищают. Ну то есть не защищают, и все тут. Сказано-пересказано об этом масса всего и много-много раз. С примерами, красивыми презентациями, танцами и плясками. Да и эпидемии всякой гадости типа Ransomware служат одним из доказательств неэффективности сигнатурных и эвристических технологий. Всякого рода крипторы и обфускаторы успешно решают задачу защиты уже давно известной малвари от обнаружения, и в течение некоторого времени эта малварь не детектируется антивирусами. Этого времени вполне достаточно, чтобы кому-то стало плохо, а кому-то хорошо.

То есть речь даже не о 0day: можно взять старую известную бородатую малварь, поморфить ее, убрать поведенческие сигнатуры (работа на пару дней для лентяя) и юзать ее снова, а потом еще раз, и еще, пока не надоест или пока не посадят. При этом люди, которые продали лекарство от того, чтобы это самое «плохо» никогда не наступало, вроде как и ни при чем; они с серьезными лицами публикуют какой-нибудь бюллетень и рассказывают о гигиене в интернете, забывая при этом сказать, что если эту самую гигиену соблюдать полностью - то антивирусы, тем более платные, практически и не нужны.

Песочницы и особенности их реализации

Итак, антивирусы не спасают, а иногда ломают то, что уже есть. «Давайте подойдем к защите с другой стороны и будем изолировать процессы друг от друга», - сказал кто-то бесконечно умный. Действительно, здорово, когда подозрительные процессы выполняются в некоторой изолированной среде, называемой песочницей. Выполняемая в песочнице малварь не может покинуть ее пределов и навредить всей системе. Этот могло бы быть решением, однако в существующих реализациях песочниц есть нюансы...
Далее мы как раз и будем обсуждать все тонкости построения песочниц, знание которых тебе обязательно пригодится, когда понадобится выбрать средство изоляции процессов или HIPS (Host-based Intrusion Prevention System - система предотвращения вторжений для рабочих станций).

Нюанс №1, или одна песочница на всех

Большинство песочниц на самом деле не обеспечивают изоляцию процессов. По правде говоря, в большинстве реализаций защищаемая система делится на две части - доверенную и недоверенную. В доверенной части выполняются обычные процессы, а в недоверенной - изолируемые. То есть все изолируемые процессы выполняются в одной песочнице, имеют доступ друг к другу и к ресурсам друг друга, используют тот же реестр и ту же файловую систему.

Таким образом, малварь может закрепиться в самой песочнице и стартовать эпизодически с одним из изолируемых приложений (или с несколькими изолируемыми приложениями, или с любым из них). При этом часто песочницы не логируют действия изолируемых процессов. Действия, на которые ругаются HIPS, в песочницах вполне себе проходят без малейших реакций с поправкой на изоляцию, что не очень хорошо.

Как проверить, что изоляция устроена именно таким образом? Очень просто! Запусти два приложения в песочнице. Например, notepad.exe и wordpad.exe. Создай с помощью notepad.exe текстовый файл 1.txt.

Разумеется, данный файл будет сохранен не на рабочем столе, а в «виртуальной» директории. Попробуй открыть его Wordpad’ом (рис. 3).



Итак, созданный одним изолированным приложением файл можно открыть с помощью другого изолированного приложения. Скажем прямо, изоляция уже не очень. Но может, по крайней мере от записи будет какая-то защита? Меняем содержимое (рис. 4).


И сохраняем. А теперь попробуем открыть файл 1.txt с помощью notepad.exe. Конечно же, запустим notepad.exe в песочнице (рис. 5).


И вот то, о чем мы говорили. Два изолированных приложения не изолированы друг от друга. Получается, что такую изоляцию делали не совсем понятно для чего. Даже шифровальщик, не получив доступ к локальным папкам на компьютере, может пошифровать все в завиртуализованной директории, а если «повезет», то и на сетевых ресурсах, так как настройки для песочницы одни для всех изолируемых приложений.

Нюанс №2, или недоизоляция

Да, изолируемые процессы не могут достучаться до доверенной части системы... но в большинстве реализаций только на запись. То есть они могут читать отовсюду практически без ограничений и часто имеют доступ к сети. Это сделано, видимо, для большей совместимости, но это нельзя назвать изоляцией.
Попробуй провести простенький опыт с песочницей на свой выбор. Создай директорию на жестком диске. Скажем, такую: E:\Photos . Помести в нее, например, фотографию (рис. 6).


Запусти Internet Explorer в песочнице и попробуй отправить данное изображение, скажем, на rghost.



Ну и как? Получилось? Если опыт удался, то это не очень хорошо. Еще хуже, если в песочнице отсутствует возможность задать директории, к которым изолированные приложения не будут иметь доступ. И совсем нехорошо, если изолированные приложения могут читать данные из директорий текущего пользователя.

Виртуализация файловой системы и реестра в большинстве реализаций построена по принципу «копирование по требованию». То есть если файл нужно просто прочитать, то он читается из исходной директории при отсутствии аналога в виртуальной директории. Если такой же файл присутствует в виртуальной директории, то изолируемое приложение будет работать с ним. То же можно сказать про виртуальный реестр. Ну и понятно, что при попытке записать файл по реальному пути он запишется в виртуальную файловую систему. Почти всегда.

Таким образом, если малварь «изолирована» в такой песочнице, то она сможет иметь полный доступ ко всем другим «изолируемым» процессам, практически ко всем данным в системе на чтение и к завиртуализованным (сохраняемым изолированными приложениями) данным (которые часто общие для всех изолируемых приложений) на запись.

Нюанс №3, или «а давайте сделаем еще один велосипед, это так интересно»

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «сайт», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!

Как восстановить мои файлы, удаленные антивирусом Eset NOD32 ” — запрос, который часто можно увидеть на просторах интернета. Тем не менее возможных решений этого вопроса не так уж и много, что нередко создает ощущение отсутствия каких-либо способов вернуть утраченные документы.

Прежде всего нужно понимать, что антивирус никогда не станет блокировать или удалять файл, который тем или иным образом не влияет на функционирование операционной системы или других установленных программ.

Соответственно, если ваш документ был удален, смело можно заподозрить его вредоносность. Однако существуют и такие файлы, которые попросту модифицируют программу, вмешиваясь в ее процессы, однако угрозы в себе не несут.

Есть ли способы восстановить удаленный антивирусом файл? Однозначно есть! В этой статье мы рассмотрим что представляет собой приложение Eset NOD32, особенности работы с ним и эффективный способ восстановления стертых антивирусом файлов.

Что такое Eset NOD32?

Ни для кого в современном мире не секрет насколько важны, а главное, актуальны антивирусные приложения. Они позволяют не только ликвидировать подавляющее большинство вредоносных файлов, но и помогают предупредить возможную угрозу еще до того как она проявит себя, тем или иным образом навредив системе.

Антивирус Eset NOD32 , который чаще всего называют просто NOD32, представляет собой целый пакет антивирусного программного обеспечения, созданный словацкой компанией Eset еще в далеком 1987 году.

Существует два издания программы:

  • Домашняя версия.
  • Бизнес-версия.

Основным отличием бизнес-версии от домашней является возможность удаленного управления и наличие кроссплатформенной защиты. Не менее приятной является особенность, позволяющая легко и гибко настроить программу под любые нужды.

Eset NOD32. Как включить или отключить антивирус?

Нередко случается так, что при установке той или иной программы от нас требуется отключить антивирус, ведь в противном случае он “съест” важный файл без которого приложение попросту не сможет запустится.

Другой распространенной причиной поиска ответов на вопрос включения/отключения антивируса становится цель снижения ресурсопотребления “защитника”. Здесь сказывается особенность работы антивирусов — обычно они отнимают достаточно большое количество памяти даже будучи в пассивном состоянии и при запуске других “тяжелых” программ иногда приходится приостанавливать защиту.

Так как же выполнить задачу по включению или отключению NOD32? Давайте рассмотрим этот вопрос в инструкции ниже.

1. Запустите приложение Eset NOD32 и перейдите в Настройки .

2. В открывшемся окне вы обнаружите все установленные пакеты услуг NOD32. Посетите каждый из них и включите/отключите параметры в зависимости от ваших нужд.

Eset NOD32. Карантин антивируса и исключения.

Карантин — хранилище, обязательно присутствующее в любом антивирусе, вне зависимости от его производителя и версии (домашняя или бизнес). В нем хранятся все подозрительные файлы, которые, по мнению антивируса, тем или иным образом способны навредить вашей операционной системе.

Стоит отметить тот факт, что ни один документ, даже если это троян, не удаляется мгновенно. Прежде всего нейтрализуется исходящая от него угроза: файл помещается в карантин и антивирус терпеливо дожидается ответственного решения пользователя по дальнейшим действиям — вы можете как удалить зараженный документ, так и отметить его как исключение, что мы разберем немного позже.

Как найти карантин антивируса Eset NOD32? Очень просто! Давайте рассмотрим инструкцию ниже.

1. Запустите Eset NOD32 и перейдите в раздел Сервис .

2. Откройте вкладку Дополнительные средства . Она расположена в правом нижнем углу.

3. Перед нами появился полный список дополнительных услуг, предоставляемых Eset в рамках своего антивируса. Откройте Карантин .

4. В открывшемся меню NOD32 предоставляет вам полные права по управлению всеми изолированными файлами.

Мы нашли карантин и обнаружили его основные функции :

  • Изолировать файл . Данный параметр позволяет вручную найти вредоносный файл и заблокировать его в случае, если антивирус не справляется самостоятельно.
  • Восстановить . Параметр, позволяющий восстановить случайно заблокированный файл.

Простое восстановление изолированного документа не всегда позволяет избежать дальнейших блокировок. Можно ли это изменить? Давайте рассмотрим.

1. Не покидая окно Карантин , щелкните правой кнопкой мыши по файлу, который вы хотите разблокировать.

2. Выберите параметр Восстановить и исключить из сканирования .

3. Если вы уверены в своих действиях, нажмите Да . В случае если вы не знаете опасен файл или безвреден, рекомендуем нажать Нет .

Eset NOD32 удалил файлы. Как восстановить?

Антивирус — это единственная преграда, которая сдерживает невероятно большое количество возможных угроз, способных проникнуть на наши компьютеры через интернет. Вполне естественно, что он блокирует абсолютно все файлы с похожим механизмом работы; такие документы, которые тем или иным образом вмешиваются в системные или программные процессы.

К сожалению, антивирусы не способны дифференцировать файлы, ведь любой вредоносный файл может запросто замаскироваться под процесс Windows и постепенно разрушать компьютер изнутри.

Следовательно, программа старается всячески защитить ПК, блокируя все, что по ее мнению несет определенную угрозу. В большинстве случаев заблокированные документы можно запросто восстановить просто внеся исключение, однако изредка происходит их полное удаление, если антивирус считает файл критически опасным.

Starus Partition Recovery станет хорошим помощником в повседневной работе с файловой системой. Приложение избавит вас от любых опасений за личные документы в долгосрочной перспективе и поможет восстановить файл любого формата вне зависимости от того как вы его потеряли.

Оценить все шансы «вернуть утраченное» Вы можете до момента регистрации инструмента Starus Partition Recovery. Загрузите программу для восстановления стертых антивирусом личных документов и опробуйте совершенно бесплатно. В пробной версии доступны все функции, включая пред-просмотр восстановленных файлов. Окно предварительного просмотра даcт возможность убедится, что конкретный файл не поврежден и не перезаписан и подлежит полному восстановлению.

Надеемся, статья оказалась для вас полезной и помогла решить поставленные вопросы.