Mono.Cecil — запутанный вредоносный код

В этой замечательной статье (http://eatplayhate.wordpress.com/2010/07/18/mono-cecil-vs-obfuscation-fight/), автор утверждает, что Mono.Cecil не идеален, но он без проблем перевел 90% функций. .

Мой вопрос к вам, ребята: может ли злой программист запутать вредоносный код, который не может быть деобфусцирован с помощью Mono.Cecil, и, таким образом, вызвать серьезную брешь в моей программе (сторонний код)? Если да, то знаете ли вы, какие символы я могу использовать для написания такого кода или как я могу защитить себя от такого кода?


person user2153949    schedule 09.04.2013    source источник
comment
Хотите защитить конкретно от деобфускации? или против запугивания?   -  person Simon Mourier    schedule 09.04.2013
comment
в моем случае я получаю сторонний код, который я деобфусцировал   -  person user2153949    schedule 09.04.2013
comment
Если вы хотите что-то деобфускировать, проверьте это: bitbucket.org/0xd4d/de4dot это намного лучше, чем моноцесил, цель которого на самом деле не запутывание, а просто средство запутывания   -  person Simon Mourier    schedule 09.04.2013
comment
спасибо за ваш ответ мне все еще нужен ответ на вопрос, который я задал? может ли талантливый программист написать вредоносный код, который я не смог бы деобфусцировать?   -  person user2153949    schedule 09.04.2013
comment
Неа. de4dot расшифровывает все, что известно сегодня. Конечно, это может измениться в будущем, но никто не может предсказать будущее.   -  person Simon Mourier    schedule 09.04.2013
comment
Я предполагаю, что простое недоверие к запутанному коду не является решением для вас?   -  person svick    schedule 09.04.2013
comment
Нет, я получаю этот код от своих клиентов   -  person user2153949    schedule 10.04.2013


Ответы (1)


Конечно, злой программист всегда может запутать код лучше, чем вы его расшифруете. В конце концов, определение поведения произвольного кода заранее — неразрешимая проблема.

С практической точки зрения, борьба между обфускацией и деобфускацией сводится к тому, кто приложит больше усилий. Обфускация намного проще, чем деобфускация, но коммерческие обфускаторы, как правило, гораздо менее сложны, чем то, что вы можете написать вручную или с помощью специального обфускатора, по разным причинам. Тот факт, что Mono Cecil достаточно хорош для дебофускации многих распространенных инструментов запутывания, не означает, что он может что-то сделать с последними.

Если вы хотите увидеть некоторые приемы, которые можно реализовать с помощью запутанного вручную кода, взгляните на это взлом. Это байт-код Java, а не CLI, но идея аналогична. На момент написания этой статьи никто даже не решил ее, несмотря на то, что кряк состоял из одного метода в одном классе. И даже не использует Reflection, правильное использование которого делает автоматическую деобфускацию практически невозможной.

Однако настоящий вопрос заключается в том, что вы пытаетесь с этим сделать. Вы пытаетесь проверить произвольный код на наличие вредоносного поведения? Извините, но это не совсем возможно. Вам нужно запустить его в песочнице.

person Antimony    schedule 28.04.2013