Ограничьте сменный доступ ассемблерного кода

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

5
задан Dave Hillier 3 November 2009 в 09:51
поделиться

3 ответа

.NET добавила «Managed Addin Framework», которая могла бы соответствовать всем требованиям. Он имеет следующие особенности:

  • Изоляция . Плагины запускаются в собственном домене приложений , если требуется, или даже в своем собственном процессе , если вам нужен такой уровень изоляции.
  • Контрактное взаимодействие . Вы устанавливаете контракты, и это единственное, что вы раздаете авторам плагинов. Им не нужно знать ни о каком другом аспекте вашего приложения.
  • Discovery . Имеет встроенный механизм для прослушивания плагинов из папки, полной сборок.
  • Безопасность . Наборы CASPOL автоматически применяются при загрузке плагина. Есть несколько встроенных опций, упрощающих эту задачу (см. AddInSecurityLevel Enum ).

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

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

Образец

Вот простой пример. Как автор «Shell» вы будете заключать контракт с авторами ваших плагинов. Вот типичный контракт (это просто абстрактный класс):

public abstract class Calculator 
{
    public abstract double Add(double a, double b);    
    public abstract double Subtract(double a, double b);
    public abstract double Multiply(double a, double b);
    public abstract double Divide(double a, double b);
}

Если бы автор плагина хотел написать плагин, он бы просто подклассифицировал этот контракт и добавил бы атрибут «Addin»:

[AddIn("Sample Calculator AddIn", Version="1.0.0.0")]
public class SampleCalculatorAddIn : Calculator
{
    public override double Add(double a, double b)
    {
        return a + b;
    }
    public override double Subtract(double a, double b)
    {
        return a-b;
    }
    public override double Multiply(double a, double b)
    {
        return a * b;
    }
    public override double Divide(double a, double b)
    {
        return a / b;
    }
}

And here ' s, как вы загружаете эти надстройки и взаимодействуете с ними:

// In this sample we expect the AddIns and components to 
// be installed in the current directory
String addInRoot = Environment.CurrentDirectory;

// Check to see if new AddIns have been installed
AddInStore.Rebuild(addInRoot);

// Look for Calculator AddIns in our root directory and 
// store the results
Collection<AddInToken> tokens = 
    AddInStore.FindAddIns(typeof(Calculator), addInRoot);

// Ask the user which AddIn they would like to use
AddInToken calcToken = ChooseCalculator(tokens);

// Activate the selected AddInToken in a new AppDomain set sandboxed 
// in the internet zone. You can find out what this gives access
// to by running "mscorcfg.msc", but essentially this will limit
// any access to the filesystem and other obvious OS services.
// Use of reflection is also very limited in this zone.
Calculator calculator = 
    calcToken.Activate<Calculator>(AddInSecurityLevel.Internet);

// Run the read-eval-print loop
RunCalculator(calculator);

В этом суть. Очевидно, здесь есть нечто большее, но идею вы уловили.

Дополнительная литература

Хорошая вступительная статья
https://web-beta.archive.org/web/20140820145919/http://msdn. microsoft.com/en-us/magazine/cc163476.aspx

Обзор в MSDN
http://msdn.microsoft.com/en-us/library/bb384200.aspx

System.Addin на Codeplex ( множество примеров)
http://www.codeplex.com/clraddins

Инструменты

Конструктор конвейеров (помогает создать конвейер связи между оболочкой и надстройками)
http: // clraddins. codeplex.com/wikipage?title=Pipeline%20Builder&referringTitle=Home

правила Fx-Cop для System.Addin
http://clraddins.codeplex.com/wikipage?title=Add-in%20FxCop%20Rules& referringTitle = Home

11
ответ дан 13 December 2019 в 05:38
поделиться

http://www.google.com/search?q=php+code+obfuscator&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla: en-US: official & client = firefox-a

Попробуй ...

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

Я что-то упускаю?

Что вы делаете:

  • Сделайте все элементы «полных разрешений» внутренними
  • в AssemblyInfo.cs, добавьте атрибут InternalsVisibleTo для каждой сборки, которой вы полностью доверяете . Пример кода: [InternalsVisibleTo ("fullNameOfAssemblyFromOtherLibrariesAssemblyInfoFile")]
  • Да-да, весь ваш код защищен! (за исключением отражения, которое вы все равно не можете остановить)
1
ответ дан 13 December 2019 в 05:38
поделиться

Это должно быть возможно с помощью безопасности доступа с кодом.

Я нашел эту статью.

http://www.15seconds.com/Issue/040121.htm

Политика домена приложений Уровень будет вашим

РЕДАКТИРОВАТЬ: Довольно сложно предоставить образец кода. Но MSDN должен дать вам несколько хороших подсказок: http://msdn.microsoft.com/en-us/library/yctbsyf4 (VS.71) .aspx

0
ответ дан 13 December 2019 в 05:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: