2
2
2CHEVSKII2019-05-18 23:53:15
C++ / C#
2CHEVSKII, 2019-05-18 23:53:15

How to obfuscate C# source code?

Hello dear experts! On the agenda (and for me - on the agenda of the entire previous week) is, and quite acutely, the question - how to obfuscate the C # resource?

It's probably worth asking - why did I even need this?

Где то в январе меня сильно ударила по голове идея начать кодить, и для старта я выбрал шарп и юнити, а для практики я начал писать плагины для игры Rust под моддинговую платформу Oxide, ныне uMod. Плагины закидываются в формате сурс кода и компилируются встроенным, собранным разработчиками платформы компилятором, то бишь можно прямо в процессе работы сервера загружать и выгружать аддоны.
Уже через месяц я вышел на уровень "не стыдно пацанам показать", и мы с партнером (тоже кодер) открыли свой маркетплейс.
В то время, когда мы пишем чтото эксклюзивно для одного проекта серверов, его владельцы сами заинтересованы в том, чтобы плагин не появился у других. С другой стороны, когда покупают наши плагины, которые лежат на сайте, и доступны для покупки всем желающим, велика вероятность того, что твоя работа в скором времени всплывет где то в интернете, и попадет в руки другим кодерам, которые на ее основе сделают что либо свое.
Для меня как человека, перепробовавшего работы в куче мест от макдональдса до яндекс.еды в попытке справиться со студенческой бедностью, те деньги, что приносит в данный момент это предприятие ($100-150 в неделю), стратегически важны для выживания в суровых условиях Москвы.

Having finished with a long introduction, I will explain what has already been done.
With a friend, we first considered writing our own lib that would download the plugin from our server in the byte array format, but abandoned this idea, because. many clients use shared hosting, and they do not have access to the ~/Managed/ folder, where such libraries should be placed. We also implemented a very clumsy way to get variable names through reflection, but, as you yourself understand, the method is really very clumsy, because it requires adding code that interacts with reflection to each plugin, then obfuscate through the program, which we also wrote, the resulting names, and remove the code from the plugin.
I couldn't find anything useful on the net on the topic of obfuscation of the source itself, because there are quite a few ready-made solutions for obfuscation of compiled files (exe / dll).
So - I humbly ask you to share your knowledge on how to get variable names from source text, thanks.

Answer the question

In order to leave comments, you need to log in

3 answer(s)
N
Nikita Yudin, 2019-05-19
@NikitaNike

C# Source Code Obfuscator

H
h4x0r1337, 2019-05-20
@h4x0r1337

,

S
Sergey Kovalevsky, 2019-05-20
@gamerforEA

The best option, in my opinion, is the Roslyn compiler / analyzer, which is supported by Microsoft and, accordingly, will work with any correct C # code (which would be difficult to achieve with a homemade parser / code generator).
Roslyn on GitHub: https://github.com/dotnet/roslyn
Useful links: https://docs.microsoft.com/ru-ru/visualstudio/exte...
Articles about code generation:
1. https://msdn .microsoft.com/en-us/magazine/mt707527.aspx
2. https://msdn.microsoft.com/en-us/magazine/mt808499.aspx

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question