Как настроить обфускацию плагинов (также открытых библиотек) — Рекомендации
При написании плагинов, нужно применять следующие методы:
1. Включить Переименование, при этом нужно обязательно включить опцию "Не переименовывать открытые объекты" (так же можно исключть какието классы из дерева исключений)
2. Включить обфускацию условных переходов
3. Включить шифрование строк
4. Включить защиту от декомпиляторов
5. Все классы, методы и свойства которые не используются снаружи (из других сборок) должны быть НЕ public — можно к примеру internal, private. Это делается для того чтобы при переименовании они не исключились.
6. Для классов, которые используются из других сборок желательно написать теневой класс или теневые функции:
например было:
public class MyPlugin : IPlugin
{
// IPlugin.Fun
public string Fun()
{
return “result”;
}
}
Лучше сделать его так:
public class MyPlugin : IPlugin
{
private MyPluginShadow d = new MyPluginShadow();
// IPlugin.Fun
public string Fun()
{
return d.Fun();
}
}
internal class MyPluginShadow
{
// IPlugin.Fun
public string Fun()
{
return “result”;
}
}
или так
public class MyPlugin : IPlugin
{
// IPlugin.Fun
public string Fun()
{
string s = "11";
if (s == "22")
return Fun2_Shadow();
if (s == "11")
return Fun_Shadow();
return "";
}
private string Fun_Shadow()
{
return “result”;
}
private string Fun2_Shadow()
{
return "";
}
}