Какие инструменты выполняют модификацию посткомпиляции IL?

В Windows есть два различия между мьютексами и двоичными семафорами:

  1. Мьютекс может быть освобожден только тем потоком, который владеет, то есть потоком, который ранее вызывал функцию Wait (или который вступил во владение при его создании). Семафор может быть освобожден любым потоком.

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

5
задан John Saunders 6 April 2011 в 17:24
поделиться

3 ответа

Я знаю, что Dotfuscator, обфускатор кода, действительно изменяет IL сборок сборок и используется во многих процессах сборки.

IL изменен не только для обфускации кода и защиты но также для добавления дополнительных функций в ваши приложения (см. сообщения нашего блога (PreEmptive) о Runtime Intelligence здесь .

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

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

Я знаю о Mono.Cecil , библиотеке фреймворка, расширяющей набор инструментов System.Reflection, она использовалась проектом Лин Фу .

Я не уверен в поддержке процесса сборки, вы должны проверить их размер.

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

.NET 4.0 включает проект контрактов кода от Microsoft Research, который выполняет утверждения во время выполнения (и некоторые во время компиляции) для условий до и после обработки ваших методов. Утверждения реализованы в библиотеке, а компилятор .NET выдает предварительные и последующие условия в виде вызовов методов в IL. Однако, поскольку контракты обычно указываются в начале метода, вторичный инструмент должен переписать IL, чтобы поместить утверждения в правильном порядке и в правильных местах.

РЕДАКТИРОВАТЬ:

  • cccheck - это инструмент который запускается после сборки и является статическим средством проверки, которое проверяет контракты во время компиляции
  • ccrewrite - это инструмент, который запускает post cccheck, переписывание IL и генерация проверки времени выполнения из контрактов

(я не могу найти никакой дополнительной технической информации об этих инструментах)

Я еще не использовал Visual Studio 2010, но видел демонстрацию контрактов кода функция, и она интегрирована в процесс сборки IDE. cccheck должен всегда запускаться, возвращая код, если контракты присутствуют в построенной сборке. Если они присутствуют, код будет означать, что ccrewrite должен работать.

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

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