Конечно, злой программист всегда может запутать код лучше, чем вы его расшифруете. В конце концов, определение поведения произвольного кода заранее — неразрешимая проблема.
С практической точки зрения, борьба между обфускацией и деобфускацией сводится к тому, кто приложит больше усилий. Обфускация намного проще, чем деобфускация, но коммерческие обфускаторы, как правило, гораздо менее сложны, чем то, что вы можете написать вручную или с помощью специального обфускатора, по разным причинам. Тот факт, что Mono Cecil достаточно хорош для дебофускации многих распространенных инструментов запутывания, не означает, что он может что-то сделать с последними.
Если вы хотите увидеть некоторые приемы, которые можно реализовать с помощью запутанного вручную кода, взгляните на это взлом. Это байт-код Java, а не CLI, но идея аналогична. На момент написания этой статьи никто даже не решил ее, несмотря на то, что кряк состоял из одного метода в одном классе. И даже не использует Reflection, правильное использование которого делает автоматическую деобфускацию практически невозможной.
Однако настоящий вопрос заключается в том, что вы пытаетесь с этим сделать. Вы пытаетесь проверить произвольный код на наличие вредоносного поведения? Извините, но это не совсем возможно. Вам нужно запустить его в песочнице.
person
Antimony
schedule
28.04.2013