Каков наилучший способ найти класс / свойство в c # через отражение после того, как была сделана запутывание? - PullRequest
1 голос
/ 02 ноября 2011

Вот пример кода, который будет использоваться для отражения:

var i = typeof(Program).Assembly.CreateInstance("test.Program");

После того, как программное обеспечение запутано, код, очевидно, перестанет работать.

Я пытаюсьнайти способ обойти это путем поиска свойств класса, которые не меняются после обфускации.Я пробовал это с type.GUID, но когда я запускаю отладочную версию, я получаю один GUID, и в выпуске после завершения запутывания guid изменяется.

Я использую Eazfuscator.NET для запутывания.

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

Есть идеи о том, что будет работать?

Ответы [ 3 ]

2 голосов
/ 02 ноября 2011

Я уверен, что есть способы перебрать все типы и найти тот, который вы ищете, но вещи, которые придут вам на ум, дадут наименьшее количество поддерживаемого кода.

Некоторые обфускаторы (мы используем DeepSea, я не знаю Eazfuscator) позволяют предотвратить запутывание определенных классов, позволяя размышлять над ними.В случае DeepSea это указывается атрибутами, но они не будут / не должны (я никогда не проверял: o) сделать это до окончательной сборки.

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

1 голос
/ 02 ноября 2011

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

После запутывания;ZIP, шифровать и делать все, что вы хотите с вашей сборкиЗатем создайте другой проект-оболочку и добавьте свою сборку в качестве ресурса в этот проект.Прикрепите к событию AppDomain.CurrentDomain.AssemblyResolve (в вашем новом проекте), и всякий раз, когда происходит неразрешенное событие сборки, прочитайте ваш ресурс (расшифруйте, распакуйте и т. Д.) И верните фактическую сборку.

Вы также можете попытаться запутать ваш окончательный вариантПриложение-оболочка.

Насколько безопасно?По крайней мере, вы можете усложнить жизнь злоумышленникам.

0 голосов
/ 02 ноября 2011

У меня нет точного ответа, но источник ILSpy может вам помочь.

...