2013-06-02 3 views
3

HHVM Authoritative Repo 파일에서 소스 코드를 복구 할 수 있습니까? 내 상용 SaaS 제품을 로컬로 설치할 때 기본 조작 방지를 위해 HHVM을 사용하고 싶습니다.HHVM을 사용하여 신뢰할 수있는 저장소에서 소스 코드를 복구 할 수 있습니까?

sqlite3 db에 바이트 코드가 들어 있으며, PHP의 동적 인 특성에 따라 변수 이름이 상상해 봅니다. * .pyc가 아주 똑 바른 방식으로 되돌릴 수 있기 때문에 가능한 것으로 가정해야합니다. 이리? 현재 사용할 수있는 도구가 없다고해도?

답변

6

예, HHVM의 바이트 코드 저장소를 분해하여 원래 소스를 닫을 수 있습니다. HHVM은 현재이 도구를 제공하지는 않지만 HHBC (HipHop bytecode)는 원래 소스에 매우 가깝고 로컬 변수 이름, 함수 이름 등을 포함하는 풍부한 메타 데이터를 포함합니다. 그런 점에서 HHBC는 Java의 바이트 코드와 일부 유사합니다 또는 .NET의 일리노이.

이 메타 데이터 중 일부를 제거 할 수도 있지만 "$ f (..)", "call_user_func (..)", "class_exists (..)"등의 항목을 처리하는 데는 많은 시간이 필요합니다. , "$$ x", 리플렉션 API (ReflectionClass, ReflectionFunction 등)는 말할 것도 없습니다.

많은 PHP-> PHP obfuscator 중 하나를 시도해 볼 수 있습니다 (면책 조항 : 나는이 obfuscator를 사용하지 않았습니다). 더 나은 PHP-> PHP obfuscators는 코드가 함수 이름이나 클래스 이름을 "동적 인"방식으로 사용하는지 확인하고 이러한 클래스 나 함수의 이름을 바꾸지 않으려 고 시도하지만 일부 경우에는 이러한 경우가있을 수 있습니다. 휴리스틱은 실패하고 수동 튜닝 또는 조정이 필요합니다.

또한 상황에 따라 파일 시스템 권한을 사용하여 문제를 해결할 수 있습니다 (예 : 서버의 일반 사용자가 바이트 코드 저장소에 액세스하지 못하도록 방지 할 수 있음). 귀하의 유스 케이스에 대한 귀하의 통제.

+0

정답과 제안을 보내 주셔서 감사합니다. 커미터로부터 기술적 인 답변을 얻으셔서 반갑습니다! 내 선택에 대해 생각해 보겠다. – mappu