2009-06-03 2 views
4

수정 된 SWF를 다시 서블릿 (예 : 세션 단위)으로 반환하기 전에 컴파일 된 SWF에서 as3을 사용하여 변수의 값을 변경할 수 있습니까? 클라이언트. 오픈 소스로 몇 가지 커맨드 라인 유틸리티가 있다는 것을 알았지 만, 이것들은 AS2에 초점을 맞추는 것처럼 보입니다. AS3 코드로 가능합니까? 어떤 libs 사용할 수 있습니다 자바 에서이 일을합니까? (즉, 번들되지 않은 SWF에서 결과로 나오는 pcode를 편집 한 다음 다시 패키징합니다).컴파일 된 SWF 파일에서 변수 값을 변경하는 최선의 방법

이상적으로 요청을 인증하는 데 사용할 수있는 세션 별 토큰 (플래시 막대 사용 안 함)을 기본 swf에 포함하고 싶습니다. 목표는 크로스 도메인 권한 파일과 함께 사용할 때 XSS 지원에서 한 단계 더 나아가이 말을 사용하는 것입니다. Flash vars는 여전히 DOM에 있지만 이것은 로더에게 (Java 스크립트의 경우 매우 힘든) 키의 값을 알 수있게 해줄 것이고로드 된 swfs 및 크로스 도메인에 값을 노출시키지 않기 위해 플래시를 잠글 수 있습니다 파일은 원본 swf (해당 도메인에서 하나만)가 원본 서버에서 xml 파일을 읽는 것을 다시 제한 할 수 있습니다.

답변

0

Flex SDK를 사용하여 요청시 swf를 소스에서 컴파일 할 수 있습니다. 아주 작은 swf를 제안하고 다른 복잡한 swf를로드하는 것이 좋습니다.

+0

그 생각하지만) 플렉스 컴파일러는 자동화하는 작업의 많은) 가장 빠른 B 아니다. swf를 읽고 var aka FLASM을 변경하는 것은 쉽고 편리 할 것입니다. 우리는 또한 prod 서버 및 배송 코드에 대한 소스 코드에 대해 걱정할 필요가 없습니다. – nso1

2

컴파일 된 SWF가 zlib 스트림으로 내부적으로 압축되므로 명령 줄 SDK에서 다시 컴파일하지 않고도 이진 파일을 수정할 수 있습니다.

커맨드 라인 도구 (mxmlc 나 Ant 중 하나를 사용하여 Flex SDK를 설치하고 자동화하는 것은 어렵지 않습니다.하지만 우리는 프로젝트에서이 두 가지를 모두 사용합니다.)를 수정하고 싶다면 정말로 다시 컴파일하지 않고 바이너리를 작성하면 this blog post이 도움이 될 수 있습니다. 내부 스트림을 원시 데이터로 압축 해제하고 다른 압축 알고리즘으로 재 압축하는 유틸리티가 포함되어 있습니다. 그 스크립트의 중간에 (데이터가 압축 해제되는 동안), 당신이 찾고있는 값 (실험으로 발견 된 알려진 오프셋이나 공개 멤버 레이블을 통해)을 바이너리를 통해 검색하고, 데이터를 변경하거나 , 스트림을 다시 압축하고 voila - 사용자 정의 .swf가 있습니다. 포함 된 에셋 (예 : 텍스트 XML 파일)의 값을 변경하면 바이너리에서 데이터가 변경 될 위치를 쉽게 파악할 수 있습니다.

swf_recompress.zip

+0

swfextract가 호출 된 후 생성되는 swf_data는 어떻게 편집합니까? –

관련 문제