2012-03-14 3 views
1

Mac OS에서는 응용 프로그램의 모든 내용을 읽을 수 있습니다 (mxml 및 파일). 실제로 응용 프로그램을 올바르게 선택하면 모든 응용 프로그램 내용과 모든 파일을 볼 수 있습니다. 이렇게 한 공기 응용 프로그램을 배포하는 것은 매우 위험합니다. 이러한 파일을 보호하는 솔루션이 있습니까?Protect Air 응용 프로그램 내용

감사합니다.

+0

SWF 파일로 컴파일 한 경우는 디 컴파일하여 SWF의 짧은 소스 파일 (MXML과 AS)를 볼 수 없습니다. –

답변

1

모든 코드를 읽을 수있는 많은 디 컴파일러가 있지만. 한 번해볼 가치가있는 암호화 솔루션을 제시 한 사람이 있습니다.

이 게시물에서 찾아 보게한다 (그것은 데스크탑 AIR 애플리케이션을 위해의) : 나는 당신에게 수 사용하는 방법은 대부분의 encrpyt

(삭제되는 페이지의 경우) http://forums.adobe.com/message/3510525#3510525

인용 텍스트를 당신의 소스 코드는 모든 컴퓨터에 고유 한 키 을 사용합니다. 소프트웨어의 초기 다운로드는 실제 프로그램이없는 간단한 에어 앱입니다. 처음에는 클라이언트 MAC 주소 목록과 사용자가 구입시 에 생성 된 활성화 코드를 입력 한 쉘과 비슷합니다. 이것은 서버로 보내지고 기록됩니다. 활성화 코드 은 파일 클라이언트 측에 저장됩니다. 서버에서 MAC 주소와 활성 키를 사용하여 암호화 키를 만듭니다. 그런 다음 프로그램 코드의 대량은 해당 키를 사용하여 암호화 된 다음 부분으로 나뉘어져 클라이언트로 다시 전송됩니다. 클라이언트는 부품을 함께 다시 넣어 및 암호화 된 파일을 저장합니다. 런타임에 쉘은 주소 목록과 활성화 키를 찾은 다음 서버와 동일한 방법을 사용하여 암호화 키를 가져 와서 프로그램 파일을 암호 해독합니다. 간단한 을 실행하여로드되었는지 확인하십시오. encyption 들어 내가 대답 방법은 PHP와 자바 스크립트에서 작동 발견.

다음 나는이 방법은 내가 쓴 이후 일부 weeknesses이 거기 알고 있지만 매우 어려운 다른 컴퓨터에 을 복사 할 수 있습니다

var loader = air.HTMLLoader.createRootWindow(true, options, true, windowBounds); 
loader.cacheResponse=false; 
loader.placeLoadStringContentInApplicationSandbox=true; 
loader.loadString(page); 

프로그램을로드하는 데이 코드를 사용 보안하지만 그것을 열심히 내가 obv 만들 수 있습니다. 쉘 코드. 적어도 불법 복제를 막습니다. 그러나 내가 발견 한 이것과 함께 문제 가 있습니다. 먼저 network address를 사용하여 MAC 주소 목록을 가져 왔지만이 테스트 Windows XP 컴퓨터에서는 실패했습니다. 무선이 꺼지면 MAC을 반환하지 않았습니다. 비스타 또는 7에서 을 다시 만들 수 없습니다. 일어날 수 있는지 확실하지 않습니다. Mac 컴퓨터에서 을 테스트하지 않았습니까? 이 문제를 해결하려면 (적어도 Windows의 경우). I 은 MAC 목록을 가져온 간단한 bat 파일을 작성한 다음 포함 된 exe 인 으로 변환합니다. 이렇게하면 네이티브 설치 프로그램을 강제로 만듭니다. 이

var nativeProcessStartupInfo = new air.NativeProcessStartupInfo(); 
var file = air.File.applicationDirectory.resolvePath("findmac.exe"); 
nativeProcessStartupInfo.executable = file; 
process = new air.NativeProcess(); 
process.start(nativeProcessStartupInfo); 
process.addEventListener(air.ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData); 
process.addEventListener(air.ProgressEvent.STANDARD_ERROR_DATA, onErrorData); 
process.addEventListener(air.NativeProcessExitEvent.EXIT, onExit); 
process.addEventListener(air.IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, onIOError); 
process.addEventListener(air.IOErrorEvent.STANDARD_ERROR_IO_ERROR, onIOError); 

으로 EXE 전화는 사항 Array.push를 사용하여 onOutputData 이벤트에 함께 목록을 넣고 는 findmac를 사용하여의 OnExit 이벤트를 계속합니다.exe는 표준 응용 프로그램 업데이트 과정을 깰 것이다 설치 기본을 사용하여 너무 당신이 직접 작성해야 할 것이라고 생각 같은 정보를 매번 (내가 아는) 조심 반환합니다. 내 업데이트는 위와 같은 방식으로 과 같은 방식으로 처리됩니다. 이 .bat 파일의 내용이 맥 목록

@Echo off 
SETLOCAL SET MAC = SET Media = Connected 
FOR /F "Tokens=1-2 Delims=:" %%a in ('ipconfig /all^| FIND "Physical Address"') do @echo %%b ENDLOCAL 

이 방법을 사용하면 방법으로 전에 시도에서 구현하기가 간단하게를 얻는 것입니다. 런타임에 정품 인증 코드가없는 경우 정식 버전 대신 서버 버전을 사용해보십시오.

1

100 % 당신의 코드를 보호 할 수 없습니다. 결국, 컴퓨터가 그것을 실행할 수 있다면, 그것은 언어에 상관없이 디 컴파일 될 수 있습니다. 그러나 더 어렵게 만들 수 있습니다.

한 가지 방법은 다른 답변에 명시된대로 SWF를 암호화하는 것입니다. 그러나 "공격자"가해야 할 일은 키를 찾아서 모든 swf를 해독 할 수있는 것입니다.

또 다른 방법은 난독 화기를 사용하는 것입니다. Obfuscator는 암호화에 의존하지 않고 decompiling을 막지도 않으며 decompiled이되는 것을 이해하기 어렵게 만듭니다.

예를 들어 saveInvoice() 메소드를 사용하면 obfuscator가 aa1() 또는 그와 비슷한 이름으로 바뀌므로 해당 함수의 기능을 추측 할 수 없게됩니다. 기본적으로 모든 것을 스파게티 코드로 변환합니다.

당신은 (많이입니다) SWF 파일에서 얻을 수 있습니다 무엇을 볼 수있는 디 컴파일러를 사용하고, 그들이 당신의 espectations을 충족하는지 난독으로 재생할 수 있습니다.

하나의 예는 내가 BTW지지하는 아니에요 http://www.kindi.com/이다, 그냥 구글에 신속하게 보여줍니다.

관련 문제