Хорошо - чтобы попытаться ответить на ваш вопрос более прямо: большинство автоматически сгенерированных C-кодов довольно безобразно, поэтому кто-то должен быть достаточно мотивирован, чтобы перепроектировать его.В то же время, я не верю, что никогда не смотрел на то, что генерирует Cython, поэтому я не уверен, как это выглядит.
Кроме того, много автоматически сгенерированного кода выполняется втакие вещи, как таблицы конечных автоматов, которые большинству программистов трудно найти даже в лучшем случае.Тенденция (во многих случаях) состоит в том, чтобы иметь общую структуру с таблицами данных, которые среда более или менее «интерпретирует» во время выполнения.Это не обязательно невозможно выполнить, но оно достаточно отличается от наиболее типичного кода, так что большинство людей от него откажутся довольно быстро (и если они сделают много, они, как правило, будут тратить много времени, глядя на среду вместоданные, что действительно имеет значение в таких случаях).
Я повторю, однако, что я почти уверен, что я не смотрел на то, что производит Cython, поэтому я не могу много сказать оэто с какой-то реальной уверенностью.
Существуют (или, по крайней мере, раньше) коммерческие обфускаторы, предназначенные для того, чтобы сделать исходный код на C трудным для понимания.Я подозреваю, что доступность Perl отняла у них большую долю рынка, но если вы посмотрите, вы все равно сможете найти и использовать ее.
Если этого не сделать, написать обфускатор не очень сложносамо по себе, но степень эффективности, вероятно, будет зависеть от количества усилий, которые вы готовы вложить в него.Простое систематическое переименование любых значимых имен переменных в такие вещи, как _
и __
, может сделать совсем немного (например, profit = sales - costs;
намного более значим, чем _ = _I_ - _i_;
).Однако, в зависимости от рассматриваемого машинного кода, это может не достигнуть значительных результатов - запутывание общей структуры может не иметь большого значения в понимании того, что делает ваш код - и если они выяснят процедуру, которой вы следуете, они могутбыть в состоянии просто скопировать правильный код фреймворка и перенести части, специфичные для вашей программы, в неясный фреймворк.