HHVM можно ли восстановить исходный код из авторитетного репо?

Можно ли восстановить исходный код из авторитетного файла репозитория HHVM? Я хотел бы использовать HHVM для базовой защиты от несанкционированного доступа при локальной установке моего коммерческого продукта SaaS.

Я предполагаю (не проверял), что sqlite3 db содержит байт-код и, учитывая динамическую природу PHP, имена переменных ... поскольку *.pyc можно полностью изменить, следует ли мне предположить, что здесь возможно то же самое? Даже если в настоящее время нет доступных инструментов?


person mappu    schedule 02.06.2013    source источник


Ответы (1)


Да, можно разобрать репозиторий байт-кода HHVM и воссоздать что-то близкое к исходному коду. Хотя в настоящее время HHVM не предоставляет для этого никаких инструментов, байт-код HipHop (HHBC) довольно близок к исходному коду и содержит обширные метаданные, которые включают имена локальных переменных, имена функций и т. д. В этом отношении HHBC имеет некоторое сходство с байт-кодом Java. или .NET IL.

Возможно, некоторые из этих метаданных можно удалить, но многие из них необходимы для обработки таких вещей, как «$f(..)», «call_user_func(..)», «class_exists(..)» и «$ $x", не говоря уже об API отражения (ReflectionClass, ReflectionFunction и т. д.).

Возможно, вы захотите попробовать один из многих обфускаторов PHP->PHP (отказ от ответственности: я не пробовал ни один из этих обфускаторов). Некоторые из лучших обфускаторов PHP->PHP пытаются определить, использует ли ваш код имя функции или имя класса «динамическим» способом, и пытаются избежать переименования этих классов или функций, но я полагаю, что могут быть некоторые угловые случаи, когда эти эвристика терпит неудачу, и требуется некоторая ручная настройка или корректировка.

Кроме того, в зависимости от вашей ситуации может быть возможно использовать разрешения файловой системы для решения вашей проблемы (т. е. запретить обычным пользователям на вашем сервере доступ к репозиторию байт-кода), хотя это может быть вне вашего контроля для ваш вариант использования.

person Drew Paroski    schedule 12.06.2013
comment
Спасибо за точный ответ и за ваши предложения - приятно получить технический ответ от коммиттера! Я подумаю над своими вариантами. - person mappu; 12.06.2013